Deployment 是 Kubenetes v1.2 引入的新概念,引入的目的是为了更好的解决 Pod 的编排
问题,Deployment 内部使用了 Replica Set 来实现。Deployment 的定义与 Replica Set 的
定义很类似,除了 API 声明与 Kind 类型有所区别:
一、相关概念
1.什么是controller
在集群上管理管理和运行容器的对象
2.Pod和controller的关系
Pod是通过Controller实现应用的运维。比如伸缩,滚动升级等等
Pod和Controller之间是通过label标签建立关系
3. 最主要的控制器deployment应用场景
部署无状态应用
管理Pod和replicaSet
部署、滚动升级等功能
应用常见: web服务,微服务
二、创建deployment测试
- kubectl create deployment nginx-web --image=nginx:1.18 --dry-run -o yaml > web-nginx.yaml
- kubectl apply -f web-nginx.yaml
- kubectl expose deployment nginx-web --type=NodePort --port=80 --target-port=80 --name web-service --dry-run -o yaml > web-service.yaml
- kubectl apply -f web-service.yaml
三、应用的升级、回滚和伸缩
通过命令行修改
kubectl set image deployment/nginx-web nginx=nginx:1.7.9
通过修改yaml文件进行升级
image: nginx:1.7.9
通过edit进行修改
kubectl edit deployments.apps nginx-web
回滚和查看回滚状态
伸缩
kubectl scale deployment nginx-web --replicas=10