Kubernetes工作负载管理:Docker and Kubernetes Fundamentals Hands-On Pod与Deployment详解
【免费下载链接】Fundamentals-HandsOnFiles for the Docker and Kubernetes Fundamentals Hands-On labs项目地址: https://gitcode.com/gh_mirrors/fu/Fundamentals-HandsOn
Kubernetes工作负载管理是容器编排的核心环节,而Pod与Deployment作为基础组件,在Docker and Kubernetes Fundamentals Hands-On项目中占据重要地位。本文将通过实操案例,带你掌握Pod的创建与管理、Deployment的声明式部署及动态扩缩容技巧,轻松入门Kubernetes工作负载管理。
认识Kubernetes工作负载架构
在Kubernetes生态中,工作负载是对容器化应用的抽象管理单元。从单个容器到复杂微服务,都可通过工作负载实现自动化运维。项目提供的架构图清晰展示了多组件协作模式:

图:Kubernetes工作负载组件关系示意图(来自项目L09-05章节)
核心工作负载类型
- Pod:最小部署单元,包含一个或多个容器
- Deployment:声明式管理Pod和ReplicaSet
- StatefulSet:管理有状态应用
- DaemonSet:确保所有节点运行相同Pod
Pod:Kubernetes的最小部署单元
Pod作为Kubernetes的原子部署单元,封装了应用容器、存储资源和网络配置。在L21-04 Pods实验中,我们可以通过两种方式创建Pod:
1. 命令式创建(快速测试)
# 创建Nginx Pod kubectl run mynginx --image=nginx # 查看Pod状态 kubectl get pods -o wide这种方式适合临时测试,执行后会立即在集群中启动一个Nginx容器实例。通过kubectl describe pod mynginx可查看详细配置和运行状态。
2. 声明式创建(生产推荐)
项目提供的myapp.yaml文件展示了规范的Pod定义:
apiVersion: v1 kind: Pod metadata: name: myapp-pod spec: containers: - name: myapp-container image: busybox command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600'] env: - name: DBCON value: "mysql://user:pass@localhost:3306/db"通过kubectl create -f myapp.yaml创建后,可使用kubectl exec -it myapp-pod -- bash进入容器内部,验证环境变量配置:
echo $DBCON # 输出: mysql://user:pass@localhost:3306/db⚠️ 注意:Pod具有临时性,删除后不会自动重建。生产环境应使用Deployment进行管理。
Deployment:声明式管理Pod生命周期
Deployment通过声明式配置实现Pod的自动化管理,包括创建、更新和回滚。L24-05 Deployments章节展示了完整的Deployment使用流程:
1. 部署应用
使用项目提供的deploy-example.yaml创建Deployment:
kubectl apply -f deploy-example.yamlDeployment会自动创建ReplicaSet和Pod,确保指定数量的副本始终运行:
# 查看部署状态 kubectl get deploy kubectl get rs kubectl get pods -o wide2. 动态扩缩容
通过修改Deployment配置可轻松实现水平扩展:
# 扩展到3个副本 kubectl scale deployment deploy-example --replicas=3 # 查看扩展结果 kubectl get pods3. 滚动更新
Deployment支持零停机更新应用版本:
# 更新镜像版本 kubectl set image deployment/deploy-example app=nginx:1.21 # 查看更新状态 kubectl rollout status deployment/deploy-example4. 版本回滚
当新版本出现问题时,可快速回滚到历史版本:
# 查看历史版本 kubectl rollout history deployment/deploy-example # 回滚到上一版本 kubectl rollout undo deployment/deploy-examplePod与Deployment最佳实践
1. 资源配置
为Pod设置资源请求和限制,避免资源争抢:
resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "200m" memory: "256Mi"2. 健康检查
配置存活探针和就绪探针,确保应用可用性:
livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 30 periodSeconds: 103. 标签管理
合理使用标签组织Pod,便于选择器匹配和资源管理:
metadata: labels: app: myapp environment: production version: v1总结:从基础到实践的工作负载管理
通过Docker and Kubernetes Fundamentals Hands-On项目的L21-04 Pods和L24-05 Deployments实验,我们掌握了Kubernetes工作负载的核心管理能力。Pod作为最小部署单元,提供了容器运行的基础环境;而Deployment则通过声明式API实现了Pod的自动化生命周期管理,包括扩缩容、滚动更新和版本回滚等关键功能。
要深入学习更多工作负载类型,可继续探索项目中的StatefulSet(L24-09 StatefulSet)和DaemonSet(L24-07 DaemonSet)等高级主题,构建更健壮的容器化应用架构。
提示:所有实验文件可通过以下命令获取完整项目:
git clone https://gitcode.com/gh_mirrors/fu/Fundamentals-HandsOn
【免费下载链接】Fundamentals-HandsOnFiles for the Docker and Kubernetes Fundamentals Hands-On labs项目地址: https://gitcode.com/gh_mirrors/fu/Fundamentals-HandsOn
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考