资源控制器之Deployment
Deployment 为 Pod 和 replicaset 提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController 来方便的管理应用。典型的应用场景包括:
- 定义 Deployment 来创建 Pod 和 replicaset
- 滚动升级和回滚应用
- 扩容和缩容
Deployment 应用示例:
vim deploy.yaml
apiVersion: apps/v1
kind: Deployment
Metadata:
name: my-Nginx
spec:
selector:
matchLabels:
app: web-Nginx
replicas: 3
template:
Metadata:
labels:
app: web-Nginx
spec:
containers:
- name: web-Nginx
image: docker.io/Nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
kubectl create -f deploy.yaml --record
## --record参数可以记录命令,我们可以很方便的查看每次 revision 的变化
创建完成后,我们可以查看下我们的 Pod 状态:
我们可以通过命令 kubectl scale deployment my-Nginx --replicas=5 将副本数量扩容到 5 个:
也可以通过该命令 kubectl scale deployment my-Nginx --replicas=2 缩容到 2 个:
这个时候我们注意一下,在缩容的时候,优先删除的是创建时间短的 Pod 。下面我们在来看一下 deployment 的升级与回滚:
查看当前的 Pod 当中的 Nginx 的版本: kubectl exec Pod-name -it – Nginx -v
升级 images 版本: kubectl set image deployment/my-Nginx web-Nginx=Nginx:1.9.1
使用命令 kubectl get rs 命令查看 Pod 的更新过程:
当升级完成后,查看一下当前 Pod 的 Nginx 的版本:
通过命令查看 deployment 的历史记录: kubectl rollout history deployment my-Nginx
回滚到之前的版本: kubectl rollout undo deployment --to-revision=1
回滚完成后,查看一下当前 Pod 的 Nginx 的版本:
清理 Policy :
可以通过设置 spec.revisonHistoryLimit 项来指定 deployment 最多保留多少 revision 历史记录。默认的会保留所有的 revision,如果将该项设置为 0,Deployment 就不允许回退了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。