1. Pod与controllers的关系
- controllers:在集群上管理和运行容器的对象
- 通过label-selector相关联
- Pod通过控制器实现应用的运维,如伸缩,滚动升级等
2. Deployment功能与应用场景
- 部署无状态应用
- 管理Pod和ReplicaSet
- 具有上线部署、副本设定、滚动升级、回滚等功能
- 提供声明式更新,例如只更新一个新的Image
应用场景:Web服务,微服务。
3. YAML字段解析
4. 使用Deployment部署一个应用
创建
kubectl create deployment web --image=nginx:1.14
kubectl get deploy,pods ---查看创建的deployment,pod
发布
kubectl expose deployment web --port=80 --type=NodePort --target-port=8080 --name=web
kubectl get service
5. 应用升级、回滚、弹性伸缩
升级
kubectl set image deployment/web nginx=nginx:1.15 ---更新版本到1.15
查看升级状态
kubectl rollout status deployment/web ---查看更新进度
kubectl edit deployment/nginx ---编辑deployment来更新,编辑保存后会自动更新配置
kubectl edit svc/nginx ---编辑service来更新,编辑保存后会自动更新配置
回滚
kubectl rollout history deployment/web ---查看更新历史记录
kubectl rollout undo deployment/web ---回滚到上一个版本
kubectl rollout undo deployment/web --revision=2 ---回滚到指定版本
弹性伸缩
kubectl scale deployment/web --replicas=10 ---修改pod数量为10