导读:本期聚焦于小菜鸟创作的《使用 kubectl 创建 Deployment 部署应用的具体步骤是什么?》,敬请观看详情。Deployment 是 Kubernetes 中最常用的工作负载控制器之一,掌握它的创建方法是入门容器编排的关键一步。本文将围绕 kubectl 命令行工具,详细讲解如何通过命令行快速创建 Deployment、如何编写 YAML 资源清单进行声明式部署、常用字段的含义,以及创建完成后如何验证应用状态、扩缩容和回滚更新。文中还会分析命令式与声明式两种创建方式的区别和适用场景,并附上可直接复用的示例配置,帮助你快速把应用跑起来并稳定运行在集群中。

把一个容器化应用部署到 Kubernetes 集群上,最常规的做法就是创建一个 Deployment。Deployment 负责维护一组相同的 Pod 副本,并在 Pod 挂掉时自动拉起新实例,同时支持滚动更新和版本回滚。kubectl 作为操作 Kubernetes 的命令行工具,提供了命令式和声明式两种创建 Deployment 的途径,本文把两种方式都拆开讲清楚,并附上部署后的验证、扩缩容与回滚操作。

使用 kubectl 创建 Deployment 部署应用的具体步骤是什么?

一、用 kubectl run 和 create 命令快速创建

最直接的方式是使用 kubectl create deployment 命令。例如要部署一个 nginx 应用并指定副本数为 3,执行下面这条命令即可:

kubectl create deployment nginx-app --image=nginx:1.25 --replicas=3

这条命令会在当前命名空间创建一个名为 nginx-app 的 Deployment,镜像使用 nginx:1.25,并维护 3 个 Pod 副本。如果你希望把它部署到指定命名空间,可以加 -n 参数,例如 -n production;如果命名空间还不存在,先用 kubectl create namespace production 创建。

还有一种更简短的方式是 kubectl run,例如:

kubectl run nginx-app --image=nginx:1.25 --replicas=3

不过需要注意,在新版本 Kubernetes 中,kubectl run 默认只会创建单个 Pod 而不是 Deployment,除非显式加上 --restart=Always 等参数。因此在生产实践中,更推荐使用 kubectl create deployment 或者直接编写 YAML 文件,语义更明确,也不容易踩坑。

命令式创建的优点是快,适合临时验证、本地测试。缺点是所有配置散落在命令参数里,没有留存的配置文件,后期审计、复现和版本管理都不方便。一旦命令敲完,这个部署就没有可以追溯的源头文件了。

二、编写 YAML 资源清单做声明式部署

声明式方式是先把期望状态写成 YAML 文件,再交给 kubectl apply 应用到集群。一个最小可用的 Deployment 配置如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-app
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 256Mi

这里有几个关键字段必须理解清楚。spec.selector.matchLabels 声明了这个 Deployment 管理哪些 Pod,它必须和 spec.template.metadata.labels 匹配,否则创建时会直接报错,这是新手最常遇到的问题之一。replicas 指定期望副本数,template 定义 Pod 模板,包含容器镜像、端口和资源限制。

把上面的内容保存为 deployment.yaml,然后执行:

kubectl apply -f deployment.yaml

声明式方式的核心优势在于可重复执行。kubectl apply 是幂等的,配置文件改了之后再执行一次即可完成增量更新,集群状态会向文件中声明的期望状态收敛。整个部署过程有文件留档,可以放进 Git 做版本管理,这就是常说的 GitOps 基础实践。团队协作、生产环境部署,都应该优先采用这种方式。

还有一个实用技巧:如果想基于现有运行中的命令式创建结果反向生成 YAML,可以用 kubectl create deployment nginx-app --image=nginx:1.25 --dry-run=client -o yaml > deployment.yaml,先生成模板再手工调整字段,比从零手写效率高,也不容易漏掉必填项。

三、验证部署状态与后续运维操作

创建完成后,第一步是确认 Deployment 是否就绪:

kubectl get deployments
kubectl get pods -l app=nginx
kubectl describe deployment nginx-app

关注 READY 列,格式为就绪副本数/期望副本数。如果长时间停留在 0/3,用 kubectl describe podkubectl logs 排查,常见原因包括镜像拉取失败、资源配额不足、端口冲突等。还可以用 kubectl rollout status deployment/nginx-app 盯住滚动过程,直到输出 successfully rolled out。

扩缩容只需要一条命令:

kubectl scale deployment nginx-app --replicas=5

更新镜像则使用 kubectl set image deployment/nginx-app nginx=nginx:1.26,Kubernetes 会按 RollingUpdate 策略逐个替换 Pod,保证服务不中断。如果新版本有问题,回滚同样简单:

kubectl rollout history deployment/nginx-app
kubectl rollout undo deployment/nginx-app

第一条命令查看历史版本记录,第二条回滚到上一版本,也可以加 --to-revision 回到指定版本。这种版本管理能力正是 Deployment 相比直接管理 Pod 的核心价值所在:它把发布、回滚变成了可编排、可审计的标准动作,而不是手工删 Pod 再重建的野蛮操作。

总结一下,临时验证用命令式创建足够快,正式环境请坚持 YAML 加 kubectl apply 的声明式路线,再配合 rollout 系列命令管理版本,一套完整的部署流程就成型了。

kubectlDeploymentKubernetes部署修改时间:2026-09-07 05:14:27

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260907/51997.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。