Deployment(部署)为pod和ReplicaSet/副本集提供声明式更新。
你在部署中描述一个期望的状态,部署控制器将根据配置把实际状态更改为期望状态。
用例
部署的常见使用场景如下:
- 创建部署
- 更新部署
- 回滚部署
- 扩容部署
- 暂停部署
等等。
创建部署
下面是一个部署示例。它创建了一个ReplicaSet(副本集),生成三个nginx pod:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
文件保存为nginx-deployment.yaml
, 创建部署:
kubectl create -f ./nginx-deployment.yaml
获取部署列表
执行命令:
kubectl get deployment
输出
[root@qikegu-centos5 k8s_demo]# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx1 2/2 2 2 4d1h
nginx3 1/1 1 1 41m
redis-master 1/1 1 1 4d21h
也可以使用describe
查看详情:
kubectl describe deployment nginx1
更新部署
修改部署的镜像版本:
kubectl set image deployment/nginx1 nginx=nginx:1.9.1 --record
查看修改生效状态:
kubectl rollout status deployment.v1.apps/nginx1
回滚部署
查看部署历史:
kubectl rollout history deployment.v1.apps/nginx1
查看某个个修订的详细信息:
kubectl rollout history deployment.v1.apps/nginx1 --revision=2
回滚到上个修订:
kubectl rollout undo deployment.v1.apps/nginx-deployment
回滚到某个修订版本:
kubectl rollout undo deployment.v1.apps/nginx-deployment --to-revision=2
伸缩部署
kubectl scale deployment.v1.apps/nginx1 --replicas=10