一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Kubernetes 如何通过 Deployment 部署应用实例

时间:2026-08-17 08:26:48 编辑:袖梨 来源:一聚教程网

Deployment是Kubernetes中管理无状态应用的核心资源,通过控制ReplicaSet来维持指定数量Pod副本、支持滚动更新与回滚;需确保selector与template标签一致,推荐用YAML部署并配合Service使用。

Deployment 是 Kubernetes 中最常用的应用部署方式,它通过声明式定义 Pod 的期望状态,由控制器自动创建、更新和维持指定数量的 Pod 实例。

Deployment 的核心作用

Deployment 不直接管理 Pod,而是管理 ReplicaSet,再由 ReplicaSet 控制 Pod 的生命周期。它提供滚动更新、回滚、扩缩容等能力,适合无状态服务部署。

  1. 确保指定数量的 Pod 副本始终运行(如 replicas: 3)
  2. 支持平滑升级:新版本 Pod 逐步替换旧版本,不中断服务
  3. 保留历史版本记录,便于快速回滚
  4. 与 Service 配合,实现稳定的服务发现和流量分发

两种常用创建方式

你可以选择命令行快速创建,或编写 YAML 文件进行精细化控制。

  1. 命令行一键创建:适合测试或简单场景

    kubectl create deployment nginx-app --image=nginx:1.27 --replicas=2

  2. YAML 文件定义:推荐用于生产环境,便于版本管理和复用

    编写 deploy.yaml,包含 apiVersion、kind、metadata、spec(含 replicas、selector、template)等字段;再执行 kubectl apply -f deploy.yaml

关键配置要点

一份可用的 Deployment YAML 必须满足“标签一致性”和“模板合法性”两个硬性要求。

  1. selector.matchLabels 必须与 template.metadata.labels 完全一致,否则 Deployment 无法关联到 Pod
  2. replicas 指定期望运行的 Pod 数量,Kubernetes 会持续校验并修复偏差
  3. containerPort 是容器内监听端口,仅作声明用途,不自动暴露给集群外
  4. 若需对外访问,必须额外创建 Service(如 ClusterIP 或 NodePort)

后续常用操作

部署后,可通过标准命令观察、调整和维护应用。

  1. 查看状态:kubectl get deploykubectl get pods -l app=xxx
  2. 更新镜像:kubectl set image deploy/nginx-app nginx=nginx:1.28 --record
  3. 扩缩容:kubectl scale deploy/nginx-app --replicas=4
  4. 回滚:kubectl rollout undo deploy/nginx-app 或指定版本 --to-revision=2

不复杂但容易忽略细节,比如 selector 和 template 标签不匹配会导致 Pod 创建失败却无明显报错。写完 YAML 后建议先用 kubectl apply --dry-run=client -o yaml 验证格式和逻辑。

热门栏目