网站建设手机银行修改登录密码,网站备案中页面,wordpress 当前分类链接地址,wordpress 4.0 简体中文一、概述
在K8S中#xff0c;Deployment是一种更高层级的控制器#xff0c;用于管理应用程序的部署和更新。为 Pod和 ReplicaSet提供声明式的更新能力。比如#xff1a; 部署ReplicaSet#xff08;副本集#xff09; 清理不再需要的旧版RS 扩展/缩小RS里的Pod数量 动态…一、概述
在K8S中Deployment是一种更高层级的控制器用于管理应用程序的部署和更新。为 Pod和 ReplicaSet提供声明式的更新能力。比如 部署ReplicaSet副本集 清理不再需要的旧版RS 扩展/缩小RS里的Pod数量 动态更新Pod根据Pod模板定义的更新用新Pod替换旧Pod 回滚到以前的Deployment版本
二、体验Deployment
1、使用命令指定镜像创建
kubectl create deploy nginx-deploy --image nginx2、查看deploy资源
kubectl get deploy ------------------------------------------------------------
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 1/1 1 1 7m38s这里就会得到一个名为 nginx-deploy 的deploy资源而我们知道Deployment不直接控制Pod是先控制ReplicaSe所以先查看replicaSet资源
2、获取replicaSet资源信息
kubectl get replicaSet------------------------------------------------------------
NAME DESIRED CURRENT READY AGE
nginx-deploy-6c758c8d46 1 1 1 10m这里的名字是有规律的在 nginx-deploy 后面加上了随机字符-6c758c8d46作为replicaSet的资源名称。
3、再看一下Pod
kubectl get po------------------------------------------------------------
NAME READY STATUS RESTARTS AGE
nginx-deploy-6c758c8d46-5swnb 1/1 Running 0 20m最后发现他们的是有联系在nginx-deploy-6c758c8d46后面又多了随机字符作为pod的名称
4、删除Pod会怎么样
kubectl delete pods nginx-deploy-6c758c8d46-5swnb5、再看Pod信息
kubectl get po发现pod又出来了一个但名字变了说明Deployment也确实在帮我们管理的pod信息
6、查看yaml文件
我们虽然是直接用的命令来创建deployment但K8S也帮我们创建了一个配置文件使用口令可查看
kubectl get deploy nginx-deploy -o yaml把配置内容简化并且加上注释得到
apiVersion: apps/v1
kind: Deployment
metadata: #元信息labels: #配置的标签名称app: nginx-deployname: nginx-deploy #Deployment的名称namespace: default #所用的命名空间
spec:replicas: 1 # 期望副本数量revisionHistoryLimit: 10 #进行滚动更新后保留的历史版本数selector: # 关键是叫选择器用于找到匹配RS的重要条件matchLabels: # 按照标签匹配app: nginx-deploystrategy: # 更新策略type: RollingUpdate # 更新类型采用滚动更新rollingUpdate: # 滚动更新配置maxSurge: 25% #进行滚动更新时更新的个数最多可以超过多少个数/比率maxUnavailable: 25% # 进行滚动更新时允许多少个数/比率失败template: #描述pod的模板metadata: #描述Pod的元信息labels: # 设置pod的标签app: nginx-deployspec: #pod期望信息containers: #容器配置信息- image: nginx imagePullPolicy: Always #拉取策略name: nginxdnsPolicy: ClusterFirstrestartPolicy: AlwaysterminationGracePeriodSeconds: 30 #删除超时时间三、滚动更新
滚动更新主要目标是无缝地将旧版本的Pod替换成新版本的Pod采用逐步增加新版本Pod的副本数同同时逐渐减少旧的版本的副本数量以实现应用程序的平滑升级这样可以确保应用程序在整个更新过程中持续提供服务
3.1、创建Deploy文件
创建文件
touch nginx-deploy.yaml编辑内容
apiVersion: apps/v1
kind: Deployment
metadata: #元信息labels: #配置的标签名称app: nginx-deployname: nginx-deploy #Deployment的名称namespace: default #所用的命名空间
spec:replicas: 1 # 期望副本数量revisionHistoryLimit: 10 #进行滚动更新后保留的历史版本数selector: # 关键是叫选择器用于找到匹配RS的重要条件matchLabels: # 按照标签匹配app: nginx-deploystrategy: # 更新策略type: RollingUpdate # 更新类型采用滚动更新rollingUpdate: # 滚动更新配置maxSurge: 25% #进行滚动更新时更新的个数最多可以超过多少个数/比率maxUnavailable: 25% # 进行滚动更新时允许多少个数/比率失败template: #描述pod的模板metadata: #描述Pod的元信息labels: # 设置pod的标签app: nginx-deployspec: #pod期望信息containers: #容器配置信息- image: nginx:1.7.9imagePullPolicy: IfNotPresent #拉取策略name: nginxdnsPolicy: ClusterFirstrestartPolicy: AlwaysterminationGracePeriodSeconds: 30 #删除超时时间创建deployment
kubectl create -f nginx-deploy.yaml3.2、修改副本数
获取deploy信息
kubectl get deploy------------------------------------------
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 1/1 1 1 23m这里看UP-TO-DATE列更新数为1
修改副本数为3
kubectl edit deploy nginx-deploy# 将下面信息修改为3
spec.replicas3再次查看已成功修改了
kubectl get deploy------------------------------------------
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 3/3 3 3 33m3.3、滚动更新
修改nginx镜像版本
kubectl set image deployment/nginx-deploy nginxnginx:1.9.1 --record可以使用命令也可以进到配置文件里修改 --record 是用来记录修改的内容 查看滚动更新信息
kubectl rollout status deploy nginx-deploy查deploy的详细信息
kubectl describe deploy nginx-deploy----------------------------------------------------------Type Reason Age From Message---- ------ ---- ---- -------Normal ScalingReplicaSet 55m deployment-controller Scaled up replica set nginx-deploy-78d8bf4fd7 to 3Normal ScalingReplicaSet 47m deployment-controller Scaled up replica set nginx-deploy-754898b577 to 1Normal ScalingReplicaSet 44m deployment-controller Scaled down replica set nginx-deploy-78d8bf4fd7 to 2Normal ScalingReplicaSet 44m deployment-controller Scaled up replica set nginx-deploy-754898b577 to 2Normal ScalingReplicaSet 38m deployment-controller Scaled down replica set nginx-deploy-78d8bf4fd7 to 1Normal ScalingReplicaSet 38m deployment-controller Scaled up replica set nginx-deploy-754898b577 to 3Normal ScalingReplicaSet 38m deployment-controller Scaled down replica set nginx-deploy-78d8bf4fd7 to 0
分析日志
Scaled up replica set nginx-deploy-78d8bf4fd7 to 3
Scaled up replica set nginx-deploy-754898b577 to 1
Scaled down replica set nginx-deploy-78d8bf4fd7 to 2
Scaled up replica set nginx-deploy-754898b577 to 2
Scaled down replica set nginx-deploy-78d8bf4fd7 to 1
Scaled up replica set nginx-deploy-754898b577 to 3
Scaled down replica set nginx-deploy-78d8bf4fd7 to 0看日志得出先是修改的**replica(nginx-deploy-78d8bf4fd7)副本数为3随后创建新的replica(nginx-deploy-754898b577)**,副本数为1当新的replica启动1个后则旧的replica副本数旧副本数就减少1个依次类推直到新的replica启动了3个旧的replica剩下0个
查看RS信息
kubectl get rs-----------------------------------------
nginx-deploy-754898b577 3 3 3 56m
nginx-deploy-78d8bf4fd7 0 0 0 96m四、版本回滚
查看历史版本
kubectl rollout history deployment/nginx-deploy查看具体的版本信息 kubectl rollout history deployment/nginx-deploy --revision2 回退得上一个版本
kubectl rollout undo deployment/nginx-deploy 指定版本回退
kubectl rollout undo deployment/nginx-deploy --to-revision2调整保留的历史版本数
#默认为10 设置为0则代表不能回滚
.spec.revisonHistoryLimit10五、扩缩容和更新暂停
5.1、扩缩容
每次调整副本数去修改文件会觉得麻烦可以直接使用命令 的方式实现副本数的调整
kubectl scale --replicasxx deploy nginx-deploy5.2、更新的暂停和恢复
在知道需要修改多次配置文件不想每次修改完执行更新操作可以使用命令暂停更新
暂停 kubectl rollout pause deployment nginx-deploy恢复
kubectl rollout resume deploy nginx-deploy