分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

kubernetes云平台管理实战: 滚动升级秒级回滚(六)

发布时间:2023-09-06 02:33责任编辑:顾先生关键词:kubernetes

一、nginx保证有两个版本

1、查看当前容器运行nginx版本

[root@k8s-master ~]# kubectl get pod ?-o wideNAME ?????????READY ????STATUS ???RESTARTS ??AGE ??????IP ???????????NODEmyweb-7w38b ??1/1 ??????Running ??0 ?????????4h ???????172.16.10.4 ??k8s-node1myweb-btflm ??1/1 ??????Running ??0 ?????????4h ???????172.16.48.4 ??k8s-node2myweb-cbt47 ??1/1 ??????Running ??0 ?????????4h ???????172.16.48.3 ??k8s-node2myweb-rt3b9 ??1/1 ??????Running ??0 ?????????4h ???????172.16.10.3 ??k8s-node1nginx ????????1/1 ??????Running ??0 ?????????6h ???????172.16.10.2 ??k8s-node1nginx2 ???????1/1 ??????Running ??0 ?????????5h ???????172.16.48.2 ??k8s-node2[root@k8s-master ~]# curl -I 172.16.10.2HTTP/1.1 200 OKServer: nginx/1.15.8Date: Sun, 20 Jan 2019 11:31:17 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Tue, 25 Dec 2018 09:56:47 GMTConnection: keep-aliveETag: "5c21fedf-264"Accept-Ranges: bytes

2、下载nginx1.13

[root@k8s-master ~]# docker pull nginx:1.13

3、上传到私有仓库

[root@k8s-master ~]# docker tag docker.io/nginx:latest 10.0.128.0:5000/nginx:1.15[root@k8s-master ~]# docker tag docker.io/nginx:1.13 10.0.128.0:5000/nginx:1.13[root@k8s-master ~]# docker push 10.0.128.0:5000/nginx:1.13The push refers to a repository [10.0.128.0:5000/nginx]7ab428981537: Pushed 82b81d779f83: Pushed d626a8ad97a1: Pushed 1.13: digest: sha256:e4f0474a75c510f40b37b6b7dc2516241ffa8bde5a442bde3d372c9519c84d90 size: 948[root@k8s-master ~]# docker push 10.0.128.0:5000/nginx:1.15The push refers to a repository [10.0.128.0:5000/nginx]b7efe781401d: Layer already exists c9c2a3696080: Layer already exists 7b4e562e58dc: Layer already exists 1.15: digest: sha256:e2847e35d4e0e2d459a7696538cbfea42ea2d3b8a1ee8329ba7e68694950afd3 size: 948[root@k8s-master ~]# docker imagesREPOSITORY ?????????????????????????????TAG ????????????????IMAGE ID ???????????CREATED ????????????SIZEdocker.io/registry ?????????????????????latest ?????????????33fbbf4a24e5 ???????2 weeks ago ????????24.17 MB10.0.128.0:5000/busybox ????????????????latest ?????????????3a093384ac30 ???????2 weeks ago ????????1.199 MBdocker.io/busybox ??????????????????????latest ?????????????3a093384ac30 ???????2 weeks ago ????????1.199 MB10.0.128.0:5000/nginx ??????????????????1.15 ???????????????7042885a156a ???????3 weeks ago ????????109.2 MB10.0.128.0:5000/nginx ??????????????????latest ?????????????7042885a156a ???????3 weeks ago ????????109.2 MBdocker.io/nginx ????????????????????????latest ?????????????7042885a156a ???????3 weeks ago ????????109.2 MB10.0.128.0:5000/nginx ??????????????????1.13 ???????????????ae513a47849c ???????8 months ago ???????108.9 MBdocker.io/nginx ????????????????????????1.13 ???????????????ae513a47849c ???????8 months ago ???????108.9 MB10.0.128.0:5000/pod-infrastructure ?????latest ?????????????34d3450d733b ???????24 months ago ??????205 MBdocker.io/tianyebj/pod-infrastructure ??latest ?????????????34d3450d733b ???????24 months ago ??????205 MB

4、私有仓库查看

[root@k8s-master ~]# ls /opt/myregistry/docker/registry/v2/repositories/nginx/_manifests/tags/1.13 ?1.15 ?latest

二、滚动升级

1、删除所有pod和rc

[root@k8s-master ~]# kubectl get allNAME ??????DESIRED ??CURRENT ??READY ????AGErc/myweb ??5 ????????5 ????????5 ????????5hNAME ????????????CLUSTER-IP ??EXTERNAL-IP ??PORT(S) ??AGEsvc/kubernetes ??10.254.0.1 ??<none> ???????443/TCP ??21hNAME ????????????READY ????STATUS ???RESTARTS ??AGEpo/myweb-7w38b ??1/1 ??????Running ??0 ?????????5hpo/myweb-btflm ??1/1 ??????Running ??0 ?????????5hpo/myweb-cbt47 ??1/1 ??????Running ??0 ?????????5hpo/myweb-rt3b9 ??1/1 ??????Running ??0 ?????????5hpo/nginx ????????1/1 ??????Running ??0 ?????????6hpo/nginx2 ???????1/1 ??????Running ??0 ?????????5h[root@k8s-master ~]# kubectl delete pod nginxpod "nginx" deleted

2、创建升级rc

[root@k8s-master ~]# cat myweb-rcv1.yml apiVersion: v1kind: ReplicationControllermetadata: ?name: mywebspec: ?replicas: 3 ?selector: ???app: myweb ?template: ???metadata: ?????labels: ???????app: myweb ???spec: ?????containers: ?????- name: myweb ???????image: 10.0.128.0:5000/nginx:1.13 ???????ports: ???????- containerPort: 80[root@k8s-master ~]# cat myweb-rcv2.yml apiVersion: v1kind: ReplicationControllermetadata: ?name: myweb2spec: ?replicas: 3 ?selector: ???app: myweb2 ?template: ???metadata: ?????labels: ???????app: myweb2 ???spec: ?????containers: ?????- name: myweb2 ???????image: 10.0.128.0:5000/nginx:1.15 ???????ports: ???????- containerPort: 80

3、执行升级

[root@k8s-master ~]# kubectl rolling-update myweb -f myweb-rcv2.yml --update-period=20sCreated myweb2Scaling up myweb2 from 0 to 3, scaling down myweb from 3 to 0 (keep 3 pods available, don‘t exceed 4 pods)Scaling myweb2 up to 1Scaling myweb down to 2Scaling myweb2 up to 2Scaling myweb down to 1Scaling myweb2 up to 3Scaling myweb down to 0Update succeeded. Deleting mywebreplicationcontroller "myweb" rolling updated to "myweb2"

4、滚动升级过程

[root@k8s-master ~]# kubectl get allNAME ???????DESIRED ??CURRENT ??READY ????AGErc/myweb ???2 ????????2 ????????2 ????????20mrc/myweb2 ??2 ????????2 ????????2 ????????25sNAME ????????????CLUSTER-IP ??EXTERNAL-IP ??PORT(S) ??AGEsvc/kubernetes ??10.254.0.1 ??<none> ???????443/TCP ??21hNAME ?????????????READY ????STATUS ???RESTARTS ??AGEpo/myweb-3hg1r ???1/1 ??????Running ??0 ?????????20mpo/myweb-hzxcp ???1/1 ??????Running ??0 ?????????20mpo/myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????5spo/myweb2-xdtrp ??1/1 ??????Running ??0 ?????????25s[root@k8s-master ~]# kubectl get allNAME ???????DESIRED ??CURRENT ??READY ????AGErc/myweb ???2 ????????2 ????????2 ????????20mrc/myweb2 ??2 ????????2 ????????2 ????????28sNAME ????????????CLUSTER-IP ??EXTERNAL-IP ??PORT(S) ??AGEsvc/kubernetes ??10.254.0.1 ??<none> ???????443/TCP ??21hNAME ?????????????READY ????STATUS ???RESTARTS ??AGEpo/myweb-3hg1r ???1/1 ??????Running ??0 ?????????20mpo/myweb-hzxcp ???1/1 ??????Running ??0 ?????????20mpo/myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????8spo/myweb2-xdtrp ??1/1 ??????Running ??0 ?????????28s[root@k8s-master ~]# kubectl get allNAME ???????DESIRED ??CURRENT ??READY ????AGErc/myweb ???2 ????????2 ????????2 ????????20mrc/myweb2 ??2 ????????2 ????????2 ????????30sNAME ????????????CLUSTER-IP ??EXTERNAL-IP ??PORT(S) ??AGEsvc/kubernetes ??10.254.0.1 ??<none> ???????443/TCP ??21hNAME ?????????????READY ????STATUS ???RESTARTS ??AGEpo/myweb-3hg1r ???1/1 ??????Running ??0 ?????????20mpo/myweb-hzxcp ???1/1 ??????Running ??0 ?????????20mpo/myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????10spo/myweb2-xdtrp ??1/1 ??????Running ??0 ?????????30s[root@k8s-master ~]# kubectl get allNAME ???????DESIRED ??CURRENT ??READY ????AGErc/myweb ???1 ????????1 ????????1 ????????20mrc/myweb2 ??2 ????????2 ????????2 ????????40sNAME ????????????CLUSTER-IP ??EXTERNAL-IP ??PORT(S) ??AGEsvc/kubernetes ??10.254.0.1 ??<none> ???????443/TCP ??21hNAME ?????????????READY ????STATUS ???????RESTARTS ??AGEpo/myweb-3hg1r ???1/1 ??????Running ??????0 ?????????20mpo/myweb-hzxcp ???1/1 ??????Terminating ??0 ?????????20mpo/myweb2-khl9t ??0/1 ??????Pending ??????0 ?????????0spo/myweb2-rhgq3 ??1/1 ??????Running ??????0 ?????????20spo/myweb2-xdtrp ??1/1 ??????Running ??????0 ?????????41s[root@k8s-master ~]# kubectl get allNAME ???????DESIRED ??CURRENT ??READY ????AGErc/myweb ???1 ????????1 ????????1 ????????20mrc/myweb2 ??3 ????????3 ????????3 ????????46sNAME ????????????CLUSTER-IP ??EXTERNAL-IP ??PORT(S) ??AGEsvc/kubernetes ??10.254.0.1 ??<none> ???????443/TCP ??21hNAME ?????????????READY ????STATUS ???RESTARTS ??AGEpo/myweb-3hg1r ???1/1 ??????Running ??0 ?????????20mpo/myweb2-khl9t ??1/1 ??????Running ??0 ?????????6spo/myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????26spo/myweb2-xdtrp ??1/1 ??????Running ??0 ?????????46s[root@k8s-master ~]# kubectl get allNAME ???????DESIRED ??CURRENT ??READY ????AGErc/myweb ???1 ????????1 ????????1 ????????20mrc/myweb2 ??3 ????????3 ????????3 ????????50sNAME ????????????CLUSTER-IP ??EXTERNAL-IP ??PORT(S) ??AGEsvc/kubernetes ??10.254.0.1 ??<none> ???????443/TCP ??21hNAME ?????????????READY ????STATUS ???RESTARTS ??AGEpo/myweb-3hg1r ???1/1 ??????Running ??0 ?????????20mpo/myweb2-khl9t ??1/1 ??????Running ??0 ?????????10spo/myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????30spo/myweb2-xdtrp ??1/1 ??????Running ??0 ?????????50s[root@k8s-master ~]# kubectl get allNAME ???????DESIRED ??CURRENT ??READY ????AGErc/myweb ???1 ????????1 ????????1 ????????20mrc/myweb2 ??3 ????????3 ????????3 ????????53sNAME ????????????CLUSTER-IP ??EXTERNAL-IP ??PORT(S) ??AGEsvc/kubernetes ??10.254.0.1 ??<none> ???????443/TCP ??21hNAME ?????????????READY ????STATUS ???RESTARTS ??AGEpo/myweb-3hg1r ???1/1 ??????Running ??0 ?????????20mpo/myweb2-khl9t ??1/1 ??????Running ??0 ?????????13spo/myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????33spo/myweb2-xdtrp ??1/1 ??????Running ??0 ?????????53s[root@k8s-master ~]# kubectl get allNAME ???????DESIRED ??CURRENT ??READY ????AGErc/myweb ???1 ????????1 ????????1 ????????20mrc/myweb2 ??3 ????????3 ????????3 ????????57sNAME ????????????CLUSTER-IP ??EXTERNAL-IP ??PORT(S) ??AGEsvc/kubernetes ??10.254.0.1 ??<none> ???????443/TCP ??21hNAME ?????????????READY ????STATUS ???RESTARTS ??AGEpo/myweb-3hg1r ???1/1 ??????Running ??0 ?????????20mpo/myweb2-khl9t ??1/1 ??????Running ??0 ?????????17spo/myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????37spo/myweb2-xdtrp ??1/1 ??????Running ??0 ?????????57s[root@k8s-master ~]# kubectl get allNAME ???????DESIRED ??CURRENT ??READY ????AGErc/myweb ???0 ????????0 ????????0 ????????21mrc/myweb2 ??3 ????????3 ????????3 ????????1mNAME ????????????CLUSTER-IP ??EXTERNAL-IP ??PORT(S) ??AGEsvc/kubernetes ??10.254.0.1 ??<none> ???????443/TCP ??21hNAME ?????????????READY ????STATUS ???RESTARTS ??AGEpo/myweb2-khl9t ??1/1 ??????Running ??0 ?????????23spo/myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????43spo/myweb2-xdtrp ??1/1 ??????Running ??0 ?????????1m[root@k8s-master ~]# kubectl get allNAME ???????DESIRED ??CURRENT ??READY ????AGErc/myweb2 ??3 ????????3 ????????3 ????????1mNAME ????????????CLUSTER-IP ??EXTERNAL-IP ??PORT(S) ??AGEsvc/kubernetes ??10.254.0.1 ??<none> ???????443/TCP ??21hNAME ?????????????READY ????STATUS ???RESTARTS ??AGEpo/myweb2-khl9t ??1/1 ??????Running ??0 ?????????29spo/myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????49spo/myweb2-xdtrp ??1/1 ??????Running ??0 ?????????1m

三、秒级回滚

1、执行回滚

[root@k8s-master ~]# kubectl get pods -o wideNAME ??????????READY ????STATUS ???RESTARTS ??AGE ??????IP ???????????NODEmyweb2-khl9t ??1/1 ??????Running ??0 ?????????29m ??????172.16.10.2 ??k8s-node1myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????29m ??????172.16.10.3 ??k8s-node1myweb2-xdtrp ??1/1 ??????Running ??0 ?????????29m ??????172.16.48.3 ??k8s-node2[root@k8s-master ~]# kubectl rolling-update myweb2 -f myweb-rcv1.yml --update-period=10sCreated mywebScaling up myweb from 0 to 3, scaling down myweb2 from 3 to 0 (keep 3 pods available, don‘t exceed 4 pods)Scaling myweb up to 1Scaling myweb2 down to 2Scaling myweb up to 2Scaling myweb2 down to 1Scaling myweb up to 3Scaling myweb2 down to 0Update succeeded. Deleting myweb2replicationcontroller "myweb2" rolling updated to "myweb"

2、回滚过程

[root@k8s-master ~]# kubectl get pods -o wideNAME ??????????READY ????STATUS ???RESTARTS ??AGE ??????IP ???????????NODEmyweb2-khl9t ??1/1 ??????Running ??0 ?????????20m ??????172.16.10.2 ??k8s-node1myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????20m ??????172.16.10.3 ??k8s-node1myweb2-xdtrp ??1/1 ??????Running ??0 ?????????20m ??????172.16.48.3 ??k8s-node2[root@k8s-master ~]# kubectl get pods -o wideNAME ??????????READY ????STATUS ???RESTARTS ??AGE ??????IP ???????????NODEmyweb-mnf7x ???1/1 ??????Running ??0 ?????????4s ???????172.16.48.2 ??k8s-node2myweb2-khl9t ??1/1 ??????Running ??0 ?????????29m ??????172.16.10.2 ??k8s-node1myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????29m ??????172.16.10.3 ??k8s-node1myweb2-xdtrp ??1/1 ??????Running ??0 ?????????30m ??????172.16.48.3 ??k8s-node2[root@k8s-master ~]# kubectl get pods -o wideNAME ??????????READY ????STATUS ???RESTARTS ??AGE ??????IP ???????????NODEmyweb-mnf7x ???1/1 ??????Running ??0 ?????????6s ???????172.16.48.2 ??k8s-node2myweb2-khl9t ??1/1 ??????Running ??0 ?????????29m ??????172.16.10.2 ??k8s-node1myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????29m ??????172.16.10.3 ??k8s-node1myweb2-xdtrp ??1/1 ??????Running ??0 ?????????30m ??????172.16.48.3 ??k8s-node2[root@k8s-master ~]# kubectl get pods -o wideNAME ??????????READY ????STATUS ???RESTARTS ??AGE ??????IP ???????????NODEmyweb-mnf7x ???1/1 ??????Running ??0 ?????????7s ???????172.16.48.2 ??k8s-node2myweb2-khl9t ??1/1 ??????Running ??0 ?????????29m ??????172.16.10.2 ??k8s-node1myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????29m ??????172.16.10.3 ??k8s-node1myweb2-xdtrp ??1/1 ??????Running ??0 ?????????30m ??????172.16.48.3 ??k8s-node2[root@k8s-master ~]# kubectl get pods -o wideNAME ??????????READY ????STATUS ???RESTARTS ??AGE ??????IP ???????????NODEmyweb-7m76h ???1/1 ??????Running ??0 ?????????2s ???????172.16.10.2 ??k8s-node1myweb-mnf7x ???1/1 ??????Running ??0 ?????????12s ??????172.16.48.2 ??k8s-node2myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????29m ??????172.16.10.3 ??k8s-node1myweb2-xdtrp ??1/1 ??????Running ??0 ?????????30m ??????172.16.48.3 ??k8s-node2[root@k8s-master ~]# kubectl get pods -o wideNAME ??????????READY ????STATUS ???RESTARTS ??AGE ??????IP ???????????NODEmyweb-7m76h ???1/1 ??????Running ??0 ?????????5s ???????172.16.10.2 ??k8s-node1myweb-mnf7x ???1/1 ??????Running ??0 ?????????15s ??????172.16.48.2 ??k8s-node2myweb2-rhgq3 ??1/1 ??????Running ??0 ?????????30m ??????172.16.10.3 ??k8s-node1myweb2-xdtrp ??1/1 ??????Running ??0 ?????????30m ??????172.16.48.3 ??k8s-node2[root@k8s-master ~]# kubectl get pods -o wideNAME ??????????READY ????STATUS ?????????????RESTARTS ??AGE ??????IP ???????????NODEmyweb-7m76h ???1/1 ??????Running ????????????0 ?????????11s ??????172.16.10.2 ??k8s-node1myweb-kzq8c ???0/1 ??????ContainerCreating ??0 ?????????1s ???????<none> ???????k8s-node2myweb-mnf7x ???1/1 ??????Running ????????????0 ?????????21s ??????172.16.48.2 ??k8s-node2myweb2-xdtrp ??1/1 ??????Running ????????????0 ?????????30m ??????172.16.48.3 ??k8s-node2[root@k8s-master ~]# kubectl get pods -o wideNAME ??????????READY ????STATUS ???RESTARTS ??AGE ??????IP ???????????NODEmyweb-7m76h ???1/1 ??????Running ??0 ?????????14s ??????172.16.10.2 ??k8s-node1myweb-kzq8c ???1/1 ??????Running ??0 ?????????4s ???????172.16.48.4 ??k8s-node2myweb-mnf7x ???1/1 ??????Running ??0 ?????????24s ??????172.16.48.2 ??k8s-node2myweb2-xdtrp ??1/1 ??????Running ??0 ?????????30m ??????172.16.48.3 ??k8s-node2[root@k8s-master ~]# kubectl get pods -o wideNAME ?????????READY ????STATUS ???RESTARTS ??AGE ??????IP ???????????NODEmyweb-7m76h ??1/1 ??????Running ??0 ?????????24s ??????172.16.10.2 ??k8s-node1myweb-kzq8c ??1/1 ??????Running ??0 ?????????14s ??????172.16.48.4 ??k8s-node2myweb-mnf7x ??1/1 ??????Running ??0 ?????????34s ??????172.16.48.2 ??k8s-node2

kubernetes云平台管理实战: 滚动升级秒级回滚(六)

原文地址:https://www.cnblogs.com/luoahong/p/10300314.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved