[root@masterdeploy]# kubectl create deploy nginx-deploy --image=nginx:1.7.9deployment.apps/nginx-deploycreated//kubectlcreate资源类型资源名称(deployment的名称)指定镜像//都是在动态的更新pod副本的数量deployment和replicaSet是嵌套关系,
[root@masterdeploy]# kubectl get deployNAMEREADYUP-TO-DATEAVAILABLEAGEnginx-deploy1/11166s
[root@masterdeploy]# kubectl get rsNAMEDESIREDCURRENTREADYAGEnginx-deploy-68c658776b11175s
[root@masterdeploy]# kubectl get replicasetNAMEDESIREDCURRENTREADYAGEnginx-deploy-68c658776b1114m5s
[root@masterdeploy]# kubectl get poNAMEREADYSTATUSRESTARTSAGEmy-pod1/1Running1(19mago)4d19hnginx-demo1/1Running2(19mago)4d23hnginx-deploy-68c658776b-z9rc61/1Running04m48snginx-po1/1Running2(19mago)4d23h
[root@masterdeploy]# //先是有deployment,然后有replicaSet,然后有pod//vim:setpaste粘贴模式
[root@masterdeploy]# vim nginx-deploy.yaml apiVersion:apps/v1#deployment api 版本kind:Deployment# 资源类型为deploymentmetadata:# 元数据labels:# 标签app:nginx-deploy# 具体的 k:y配置形式name:nginx-deploy# deployment的名字namespace:default# 所在的命名空间spec:replicas:1# 期望的副本数revisionHistoryLimit:10# 进行滚动更新后,保留的历史版本数selector:# 选择器,用于找到匹配的rsmatchLabels:# 按照标签匹配app:nginx-deploy# 匹配的标签k:ystrategy:# 更新策略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#删除操作最多宽限多久
滚动更新
[root@master deploy]# kubectl edit deploy nginx-deploy
deployment.apps/nginx-deploy edited
[root@master deploy]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 3/33328m
[root@master deploy]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-deploy-68c658776b 33329m
[root@master deploy]# kubectl get po
NAME READY STATUS RESTARTS AGE
my-pod 1/1Running1 (44m ago) 4d19h
nginx-demo 1/1Running2 (44m ago) 4d23h
nginx-deploy-68c658776b-hgppq 1/1Running023s
nginx-deploy-68c658776b-vld7l 1/1Running023s
nginx-deploy-68c658776b-z9rc6 1/1Running029m
nginx-po 1/1Running2 (44m ago) 4d23h
[root@master deploy]#
//开两个终端
[root@master deploy]# kubectl set image deployment/nginx-deploy nginx=nginx:1.7.9
deployment.apps/nginx-deploy image updated
[root@master deploy]#
[root@master deploy]# kubectl rollout status deplloy nginx-deploy
Waiting for deployment "nginx-deploy" rollout to finish: 1outof3new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 1outof3new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 1outof3new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 2outof3new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 2outof3new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 2outof3new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 1old replicas are pending termination...
Waiting for deployment "nginx-deploy" rollout to finish: 1old replicas are pending termination...
deployment "nginx-deploy" successfully rolled out
[root@master deploy]#
# 滚动更新过程
1.创建一个空的rs2
2.在空的rs2中创建pod1,在rs1中关闭原pod1
3. 在rs2中创建pod2,在rs1中关闭原pod2
//整个过程中保持2个pod的存在
# 查看rs可以看到2个rs
[root@master deploy]# kubectl get rs --show-labels
NAME DESIRED CURRENT READY AGE LABELS
nginx-deploy-68c658776b 33340m app=nginx-deploy,pod-template-hash=68c658776b
nginx-deploy-7c97fc8644 0009m21s app=nginx-deploy,pod-template-hash=7c97fc8644
[root@master deploy]#
回滚
//当你的更新存在问题,可以回滚//可以使用如下命令查看更新的历史版本
[root@masterdeploy]# kubectl rollout history deployment/nginx-deploydeployment.apps/nginx-deployREVISIONCHANGE-CAUSE2<none>3<none>//查看历史版本
[root@masterdeploy]# kubectl rollout history deployment/nginx-deploy --revision=2deployment.apps/nginx-deploywithrevision#2Pod Template:Labels:app=nginx-deploypod-template-hash=7c97fc8644Containers:nginx:Image:nginx:1.9.1Port:<none>Host Port:<none>Environment:<none>Mounts:<none>Volumes:<none>
[root@masterdeploy]# kubectl rollout history deployment/nginx-deploy --revision=3deployment.apps/nginx-deploywithrevision#3Pod Template:Labels:app=nginx-deploypod-template-hash=68c658776bContainers:nginx:Image:nginx:1.7.9Port:<none>Host Port:<none>Environment:<none>Mounts:<none>Volumes:<none>//会记录修改的值//回退操作
[root@masterdeploy]# kubectl rollout undo deployment/nginx-deploy --to-revision=2deployment.apps/nginx-deployrolledback
[root@masterdeploy]# kubectl rollout status deployment/nginx-deploydeployment"nginx-deploy"successfullyrolledout
[root@masterdeploy]# //回退操作在.spec.revisionHistoryLimit中指定deploment保留多少revision,如果设置0,则不允许回滚
扩容和缩容
扩容
[root@master deploy]# kubectl scale --replicas=6 deploy nginx-deploy
deployment.apps/nginx-deploy scaled
[root@master deploy]# kubectl get po
NAME READY STATUS RESTARTS AGE
my-pod 1/1Running1 (81m ago) 4d20h
nginx-demo 1/1Running2 (81m ago) 5d
nginx-deploy-7c97fc8644-62dpp 1/1Running013m
nginx-deploy-7c97fc8644-g48zt 1/1Running010s
nginx-deploy-7c97fc8644-jlhfn 1/1Running013m
nginx-deploy-7c97fc8644-lqpxj 1/1Running013m
nginx-deploy-7c97fc8644-v69f4 1/1Running010s
nginx-deploy-7c97fc8644-zslj4 1/1Running010s
nginx-po 1/1Running2 (81m ago) 5d
[root@master deploy]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-deploy-68c658776b 00066m
nginx-deploy-7c97fc8644 66636m
[root@master deploy]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 6/66667m
[root@master deploy]#
缩容
[root@master deploy]# kubectl scale --replicas=3 deploy nginx-deploy
deployment.apps/nginx-deploy scaled
[root@master deploy]# kubectl get po
NAME READY STATUS RESTARTS AGE
my-pod 1/1Running1 (83m ago) 4d20h
nginx-demo 1/1Running2 (83m ago) 5d
nginx-deploy-7c97fc8644-62dpp 1/1Running014m
nginx-deploy-7c97fc8644-jlhfn 1/1Running014m
nginx-deploy-7c97fc8644-lqpxj 1/1Running014m
nginx-po 1/1Running2 (83m ago) 5d
[root@master deploy]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 3/33368m
[root@master deploy]#
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)