主页 > 创业  > 

开始第一个Pod与Deployment

开始第一个Pod与Deployment

假设你是一名指挥官,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 10s
1.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 20s
2.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 out
2.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