开始第一个Pod与Deployment
- 创业
- 2025-09-09 05:30:03

假设你是一名指挥官,Pod 就像你的单兵战士,而 Deployment 则是管理整支军队的智能系统。 单个士兵(Pod)可以完成任务,但无法应对大规模战争——比如士兵受伤如何替补?如何快速扩充兵力? 通过本文,我们将学会如何用 Kubernetes 的 Pod 和 Deployment 管理容器化应用,实现自动化部署与自愈。
一、Pod:最小的作战单元 1.1 什么是Pod? Pod 是 Kubernetes 的最小调度单位,pod 翻译是"豆荚",功能也像一个豆荚一样,封装 1个或多个容器。同一个 Pod 中的容器共享网络和存储,适合紧密协作的场景。
1.2 创建第一个Pod 步骤1:编写YAML文件
创建一个名为 nginx-pod.yaml 的文件:
apiVersion: v1 kind: Pod # 资源类型为Pod metadata: name: my-nginx-pod # Pod名称 labels: app: nginx # 标签(用于后续选择) spec: containers: - name: nginx-container # 容器名称 image: nginx:latest # 使用的镜像 ports: - containerPort: 80 # 容器暴露的端口 步骤2:启动Pod kubectl apply -f nginx-pod.yaml 步骤3:验证状态 kubectl get pods输出示例:
NAME READY STATUS RESTARTS AGE my-nginx-pod 1/1 Running 0 10s1.3 与Pod互动 查看Pod日志 kubectl logs my-nginx-pod 进入Pod内部(调试用) kubectl exec -it my-nginx-pod -- /bin/bash # 在容器内执行命令(如:curl localhost) 删除Pod kubectl delete pod my-nginx-pod
二、Deployment:管理Pod的智能军团 2.1 为什么需要Deployment?
直接管理Pod的问题:
手动扩缩容:需要逐个创建/删除Pod。无法自愈:Pod崩溃后不会自动重启。更新麻烦:需手动替换旧版本Pod,易出错。Deployment 的价值:
自动维护Pod副本数(如保持3个运行实例)。支持滚动更新与回滚。提供声明式配置(描述“期望状态”)。2.2 创建第一个Deployment 步骤1:编写YAML文件
创建 nginx-deployment.yaml:
apiVersion: apps/v1 kind: Deployment # 资源类型为Deployment metadata: name: nginx-deployment spec: replicas: 3 # 维持3个Pod副本 selector: matchLabels: app: nginx template: # Pod模板(类似1.2中的Pod配置) metadata: labels: app: nginx spec: containers: - name: nginx-container image: nginx:1.25 # 指定镜像版本 ports: - containerPort: 80 步骤2:启动Deployment kubectl apply -f nginx-deployment.yaml 步骤3:查看Deployment与Pod状态 kubectl get deployments kubectl get pods输出示例:
NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 3 15s NAME READY STATUS RESTARTS AGE nginx-deployment-5d559c4788-2j6wk 1/1 Running 0 20s nginx-deployment-5d559c4788-kx9qm 1/1 Running 0 20s nginx-deployment-5d559c4788-wl7pv 1/1 Running 0 20s2.3 实现滚动更新 更新镜像版本 kubectl set image deployment/nginx-deployment nginx=nginx:1.26
或修改YAML文件的 image 字段后重新应用:
kubectl apply -f nginx-deployment.yaml 观察更新过程 kubectl rollout status deployment/nginx-deployment输出示例:
Waiting for rollout to finish: 1 out of 3 new replicas have been updated... Waiting for rollout to finish: 2 out of 3 new replicas have been updated... deployment "nginx-deployment" successfully rolled out2.4 回滚到旧版本
如果新版本有问题,快速回滚:
kubectl rollout undo deployment/nginx-deployment 查看历史版本 kubectl rollout history deployment/nginx-deployment三、常见问题与解决
Pod一直处于Pending状态
原因:资源不足(如CPU/内存不够)或节点调度失败。检查命令:kubectl describe pod <pod-name>Pod崩溃重启(CrashLoopBackOff)
原因:容器启动失败(如应用崩溃、配置错误)。查看日志:kubectl logs <pod-name>Deployment无法更新
检查镜像名称是否正确,或是否存在网络拉取问题。四、动手实验
扩展副本数
kubectl scale deployment nginx-deployment --replicas=5 kubectl get pods模拟Pod故障 手动删除一个Pod,观察Deployment是否自动重建:
kubectl delete pod <pod-name> kubectl get pods -w # 实时观察状态变化五、总结与下一步
通过本文,我们学会了:
用Pod运行单个容器化应用。用Deployment管理多副本应用,实现滚动更新与自愈。资源推荐
Kubernetes Pod官方文档Deployment滚动更新策略人只要有一种向上的精神,朝着自己的目标一步步努力,成功的机会就会越来越大。
开始第一个Pod与Deployment由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“开始第一个Pod与Deployment”