单位建网站怎么做,安溪网页设计,广州番禺职业技术学院,网站名称大全deployment用于部署无状态应用 Deployment集成了上线部署、滚动升级、创建副本、回滚等功能 Deployment里包含并使用了ReplicaSet Replicaset 通过改变Pod副本数量实现Pod的扩容和缩容 参考文档 https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/ … deployment用于部署无状态应用 Deployment集成了上线部署、滚动升级、创建副本、回滚等功能 Deployment里包含并使用了ReplicaSet Replicaset 通过改变Pod副本数量实现Pod的扩容和缩容 参考文档 https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/
1 yaml文件
apiVersion: apps/v1 # deployment api 版本
kind: Deployment # 资源类型为 deployment
metadata: # 元信息labels: # 标签app: nginx-deploy # 具体的 key: value 配置形式name: nginx-deploy # deployment 的名字namespace: default # 所在的命名空间默认default
spec:replicas: 1 # 期望副本数revisionHistoryLimit: 10 # 进行滚动更新后保留的历史版本数selector: # 选择器用于找到匹配的 RSmatchLabels: # 按照标签匹配app: nginx-deploy # 匹配的标签key/valuestrategy: # 更新策略rollingUpdate: # 滚动更新配置maxSurge: 25% # 进行滚动更新时更新的个数最多可以超过期望副本数的个数/比例maxUnavailable: 25% # 进行滚动更新时最大不可用比例更新比例表示在所有副本数中最多可以有多少个不更新成功type: RollingUpdate # 更新类型采用滚动更新template: # pod 模板metadata: # pod 的元信息labels: # pod 的标签app: nginx-deployspec: # pod 期望信息containers: # pod 的容器- image: nginx:1.7.9 # 镜像imagePullPolicy: IfNotPresent # 拉取策略name: nginx # 容器名称restartPolicy: Always # 重启策略terminationGracePeriodSeconds: 30 # 删除操作最多宽限多长时间
2 pod版本升级
查看帮助
[rootk8s-master1 ~]# kubectl set image -h
1, 升级前验证nginx版本
[rootk8s-master1 ~]# kubectl describe pods deploy-nginx-6d9d558bb6-f2t6r | grep Image:Image: nginx:1.15-alpine[rootk8s-master1 ~]# kubectl exec deploy-nginx-6d9d558bb6-f2t6r -- nginx -v
nginx version: nginx/1.15.12
2, 升级为1.16版
[rootk8s-master1 ~]# kubectl set image deployment deploy-nginx nginxnginx:1.16-alpine --record
deployment.apps/deploy-nginx image updated
说明: deployment deploy-nginx代表名为deploy-nginx的deployment nginxnginx:1.16-alpine前面的nginx为容器名 --record 表示会记录
容器名怎么查看? kubectl describe pod pod名查看 kubectl edit deployment deployment名来查看容器名 kubectl get deployment deployment名 -o yaml来查看容器名
3, 验证
如果升级的pod数量较多则需要一定时间可通过下面命令查看是否已经成功
[rootk8s-master1 ~]# kubectl rollout status deployment deploy-nginx
deployment deploy-nginx successfully rolled out
验证 pod
[rootk8s-master1 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
deploy-nginx-5f4749c8c8-nskp9 1/1 Running 0 104s 更新后,后面的id变了
验证版本
[rootk8s-master1 ~]# kubectl describe pod deploy-nginx-5f4749c8c8-nskp9 |grep Image:Image: nginx:1.16-alpine 升级为1.16了[rootk8s-master1 ~]# kubectl exec deploy-nginx-5f4749c8c8-nskp9 -- nginx -v
nginx version: nginx/1.16.1 升级为1.16了 练习: 再将nginx1升级为1.17版
[rootk8s-master1 ~]# kubectl set image deployment deploy-nginx nginxnginx:1.17-alpine --record
deployment.apps/deploy-nginx image updated 3 pod版本回退
1, 查看版本历史信息
[rootk8s-master1 ~]# kubectl rollout history deployment deploy-nginx
deployment.apps/deploy-nginx
REVISION CHANGE-CAUSE
1 none 原1.15版
2 kubectl set image deployment deploy-nginx nginxnginx:1.16-alpine --recordtrue
3 kubectl set image deployment deploy-nginx nginxnginx:1.17-alpine --recordtrue
2, 定义要回退的版本还需要执行才是真的回退版本)
[rootk8s-master1 ~]# kubectl rollout history deployment deploy-nginx --revision1
deployment.apps/deploy-nginx with revision #1
Pod Template:Labels: appnginxpod-template-hash6c9764bb69Containers:nginx:Image: nginx:1.15-alpine 可以看到这是要回退的1.15版本Port: 80/TCPHost Port: 0/TCPEnvironment: noneMounts: noneVolumes: none
3, 执行回退
[rootk8s-master1 ~]# kubectl rollout undo deployment deploy-nginx --to-revision1
deployment.apps/deploy-nginx rolled back
4, 验证
[rootk8s-master1 ~]# kubectl rollout history deployment deploy-nginx
deployment.apps/deploy-nginx
REVISION CHANGE-CAUSE
2 kubectl set image deployment deploy-nginx nginxnginx:1.16-alpine --recordtrue
3 kubectl set image deployment deploy-nginx nginxnginx:1.17-alpine --recordtrue
4 none 回到了1.15版,但revision的ID变了
[rootk8s-master1 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
deploy-nginx-6c9764bb69-zgwpj 1/1 Running 0 54s
[rootk8s-master1 ~]# kubectl describe pod deploy-nginx-6c9764bb69-zgwpj |grep Image:Image: nginx:1.15-alpine 回到了1.15版
[rootk8s-master1 ~]# kubectl exec deploy-nginx-6c9764bb69-zgwpj -- nginx -v
nginx version: nginx/1.15.12 回到了1.15版 4 副本扩容
查看帮助
[rootk8s-master1 ~]# kubectl scale -h
1, 扩容为2个副本
[rootk8s-master1 ~]# kubectl scale deployment deploy-nginx --replicas2
deployment.apps/deploy-nginx scaled
2, 查看
[rootk8s-master1 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deploy-nginx-6d9d558bb6-4c64l 1/1 Running 0 27s 10.244.159.157 k8s-master1 none none
deploy-nginx-6d9d558bb6-hkq2b 1/1 Running 0 71s 10.244.194.95 k8s-worker1 none none
在两个node节点上各1个pod
3, 继续扩容(我们这里只有2个node,但是可以大于node节点数据)
[rootmaster ~]# kubectl scale deployment deploy-nginx --replicas4
deployment.extensions/nginx1 scaled
[rootk8s-master1 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deploy-nginx-6d9d558bb6-4c64l 1/1 Running 0 87s 10.244.159.157 k8s-master1 none none
deploy-nginx-6d9d558bb6-586dr 1/1 Running 0 31s 10.244.135.197 k8s-master3 none none
deploy-nginx-6d9d558bb6-hkq2b 1/1 Running 0 2m11s 10.244.194.95 k8s-worker1 none none
deploy-nginx-6d9d558bb6-kvgsc 1/1 Running 0 31s 10.244.224.13 k8s-master2 none none 5 副本裁减
1, 指定副本数为1进行裁减
[rootk8s-master1 ~]# kubectl scale deployment deploy-nginx --replicas1
deployment.apps/deploy-nginx scaled
2, 查看验证
[rootk8s-master1 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
deploy-nginx-6d9d558bb6-hkq2b 1/1 Running 0 2m56s 6 多副本滚动更新
1, 先扩容多点副本
[rootk8s-master1 ~]# kubectl scale deployment deploy-nginx --replicas16
deployment.apps/deploy-nginx scaled
2, 验证
[rootmaster ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx1-7d9b8757cf-2hd48 1/1 Running 0 61s
nginx1-7d9b8757cf-5m72n 1/1 Running 0 61s
nginx1-7d9b8757cf-5w2xr 1/1 Running 0 61s
nginx1-7d9b8757cf-5wmdh 1/1 Running 0 61s
nginx1-7d9b8757cf-6szjj 1/1 Running 0 61s
nginx1-7d9b8757cf-9dgsw 1/1 Running 0 61s
nginx1-7d9b8757cf-dc7qj 1/1 Running 0 61s
nginx1-7d9b8757cf-l52pr 1/1 Running 0 61s
nginx1-7d9b8757cf-m7rt4 1/1 Running 0 26m
nginx1-7d9b8757cf-mdkj2 1/1 Running 0 61s
nginx1-7d9b8757cf-s79kp 1/1 Running 0 61s
nginx1-7d9b8757cf-shhvk 1/1 Running 0 61s
nginx1-7d9b8757cf-sv8gb 1/1 Running 0 61s
nginx1-7d9b8757cf-xbhf4 1/1 Running 0 61s
nginx1-7d9b8757cf-zgdgd 1/1 Running 0 61s
nginx1-7d9b8757cf-zzljl 1/1 Running 0 61s
nginx2-559567f789-8hstz 1/1 Running 1 114m
3, 滚动更新
[rootk8s-master1 ~]# kubectl set image deployment deploy-nginx nginxnginx:1.17-alpine --record
deployment.apps/deploy-nginx image updated
4, 验证
[rootk8s-master1 ~]# kubectl rollout status deployment deploy-nginx
......
Waiting for deployment deploy-nginx rollout to finish: 13 of 16 updated replicas are available...
Waiting for deployment deploy-nginx rollout to finish: 14 of 16 updated replicas are available...
Waiting for deployment deploy-nginx rollout to finish: 15 of 16 updated replicas are available...
deployment deploy-nginx successfully rolled out
7 暂停更新 由于每次对 pod template 中的信息发生修改后都会触发更新 deployment 操作 那么此时如果频繁修改信息就会产生多次更新而实际上只需要执行最后一次更新即可 当出现此类情况时我们就可以暂停 deployment 的 rollout 暂停更新
通过 kubectl rollout pause deployment name 就可以实现暂停直到你下次恢复后才会继续进行滚动更新
此时更新配置文件后pod不会被更新直到恢复更新
恢复更新
kubectl rollout deploy name
8 删除deployment
如果使用 kubectl delete deployment deploy-nginx命令删除deployment,那么里面的pod也会被自动删除
如果使用kubectl delete po po-name 命令删除deployment管理的pod则deployment会调度重新创建pod