• 升级Kubernetes集群的Docker版本(亲测)


    在Kubernetes集群中,组件版本升级非常快,可能需要不停的进行升级。升级master和node的Docker和Containerd,逐台升级,确保升级节点被驱逐时集群内有足够的资源承载负载,对于生产环境在升级前做好充足验证,避免版本变化而导致的异常产生。本次升级是在测试环境kubernetes集群版本是 v1.17.11,docker版本是18.09.9,本次只升级docker以及对应的Containerd。

    一.环境查看

    1.查看集群版本

    1. root@master01 ~]# kubectl get node -o wide
    2. NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
    3. master01 Ready master 242d v1.17.11 10.10.20.3 <none> CentOS Linux 7 (Core) 3.10.0-1127.18.2.el7.x86_64 docker://18.9.9
    4. master02 Ready master 2y136d v1.17.11 10.10.20.4 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 docker://18.9.9
    5. master03 Ready master 2y136d v1.17.11 10.10.20.5 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 docker://18.9.9
    6. work01 Ready <none> 2y134d v1.17.11 10.10.20.6 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 docker://18.9.9
    7. work02 Ready <none> 2y82d v1.17.11 10.10.20.7 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 docker://18.9.9

    2.查看docker以及Containerd

    1. [root@master01 ~]# containerd -v && docker -v
    2. containerd containerd.io 1.2.13 7ad184331fa3e55e52b890ea95e65ba581ae3429
    3. Docker version 18.09.9, build 039a7df9ba

    3.查看安装的docker相关的软件包

    1. [root@master01 ~]# rpm -qa | grep docker
    2. docker-ce-cli-18.09.9-3.el7.x86_64
    3. docker-ce-18.09.9-3.el7.x86_64

    4.查看containered对应的软件包

    1. [root@master01 ~]# rpm -qa | grep container
    2. containerd.io-1.2.13-3.1.el7.x86_64
    3. container-selinux-2.107-3.el7.noarch

    二.升级过程

    先升级node节点,再升级master,采用逐台升级,本次升级的docker版本从ocker-ce-18.09.9-3.el7.x86_64升级到docker-ce-20.10.12-3.el7.x86_64.

    1.配置docker的yum源

    1. yum install -y yum-utils device-mapper-persistent-data lvm2
    2. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

    2.腾空节点(首先在node节点执行,之后再在master节点执行),本次以worker02为例。

    1. kubectl drain work02 --ignore-daemonsets --delete-local-data --force
    2. 输出:
    3. node/work02 cordoned
    4. WARNING: deleting Pods not managed by ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet: default/init-demo, default/kucc4
    5. evicting pod "init-demo"
    6. evicting pod "kucc4"
    7. evicting pod "ds.kusc00201-7c7bdb685c-l7xkk"
    8. evicting pod "mysql-doraemon-74874995b4-vnpgp"
    9. evicting pod "nginx-5d78bdd449-9t2zx"
    10. pod/ds.kusc00201-7c7bdb685c-l7xkk evicted
    11. pod/nginx-5d78bdd449-9t2zx evicted
    12. pod/mysql-doraemon-74874995b4-vnpgp evicted
    13. pod/init-demo evicted
    14. pod/kucc4 evicted
    15. node/work02 evicted

    2.停掉拟升级节点的kubelet和docker服务

    1. systemctl stop kubelet
    2. systemctl stop docker

    3.查看docket有哪些版本

    1. [root@master01 ~]# yum list docker-ce --showduplicates | sort -r
    2. 输出:
    3. Repository base is listed more than once in the configuration
    4. Repository updates is listed more than once in the configuration
    5. Repository extras is listed more than once in the configuration
    6. Repository centosplus is listed more than once in the configuration
    7. * updates: mirrors.huaweicloud.com
    8. Loading mirror speeds from cached hostfile
    9. Loaded plugins: fastestmirror
    10. Installed Packages
    11. * extras: mirrors.tuna.tsinghua.edu.cn
    12. docker-ce.x86_64 3:20.10.9-3.el7 docker-ce-stable
    13. docker-ce.x86_64 3:20.10.8-3.el7 docker-ce-stable
    14. docker-ce.x86_64 3:20.10.7-3.el7 docker-ce-stable
    15. docker-ce.x86_64 3:20.10.6-3.el7 docker-ce-stable
    16. docker-ce.x86_64 3:20.10.5-3.el7 docker-ce-stable
    17. docker-ce.x86_64 3:20.10.4-3.el7 docker-ce-stable
    18. docker-ce.x86_64 3:20.10.3-3.el7 docker-ce-stable
    19. docker-ce.x86_64 3:20.10.2-3.el7 docker-ce-stable
    20. docker-ce.x86_64 3:20.10.17-3.el7 docker-ce-stable
    21. docker-ce.x86_64 3:20.10.16-3.el7 docker-ce-stable
    22. docker-ce.x86_64 3:20.10.15-3.el7 docker-ce-stable
    23. docker-ce.x86_64 3:20.10.14-3.el7 docker-ce-stable
    24. docker-ce.x86_64 3:20.10.1-3.el7 docker-ce-stable
    25. docker-ce.x86_64 3:20.10.13-3.el7 docker-ce-stable
    26. docker-ce.x86_64 3:20.10.12-3.el7 docker-ce-stable
    27. docker-ce.x86_64 3:20.10.11-3.el7 docker-ce-stable
    28. docker-ce.x86_64 3:20.10.10-3.el7 docker-ce-stable
    29. docker-ce.x86_64 3:20.10.0-3.el7 docker-ce-stable
    30. docker-ce.x86_64 3:19.03.9-3.el7 docker-ce-stable
    31. docker-ce.x86_64 3:19.03.8-3.el7 docker-ce-stable
    32. docker-ce.x86_64 3:19.03.7-3.el7 docker-ce-stable
    33. docker-ce.x86_64 3:19.03.6-3.el7 docker-ce-stable
    34. docker-ce.x86_64 3:19.03.5-3.el7 docker-ce-stable
    35. docker-ce.x86_64 3:19.03.4-3.el7 docker-ce-stable
    36. docker-ce.x86_64 3:19.03.3-3.el7 docker-ce-stable
    37. docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable
    38. docker-ce.x86_64 3:19.03.15-3.el7 docker-ce-stable
    39. docker-ce.x86_64 3:19.03.14-3.el7 docker-ce-stable
    40. docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable
    41. docker-ce.x86_64 3:19.03.13-3.el7 docker-ce-stable
    42. docker-ce.x86_64 3:19.03.12-3.el7 docker-ce-stable
    43. docker-ce.x86_64 3:19.03.11-3.el7 docker-ce-stable
    44. docker-ce.x86_64 3:19.03.10-3.el7 docker-ce-stable
    45. docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable
    46. docker-ce.x86_64 3:18.09.9-3.el7 docker-ce-stable
    47. docker-ce.x86_64 3:18.09.9-3.el7 @docker-ce-stable
    48. docker-ce.x86_64 3:18.09.8-3.el7 docker-ce-stable
    49. docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable
    50. docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable
    51. docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable
    52. docker-ce.x86_64 3:18.09.4-3.el7 docker-ce-stable
    53. docker-ce.x86_64 3:18.09.3-3.el7 docker-ce-stable
    54. docker-ce.x86_64 3:18.09.2-3.el7 docker-ce-stable
    55. docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
    56. docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
    57. docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
    58. docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable
    59. docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
    60. docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
    61. docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
    62. docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
    63. docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
    64. docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
    65. docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
    66. docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable
    67. docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
    68. docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable
    69. docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable
    70. docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable
    71. docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
    72. docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
    73. docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
    74. * base: mirrors.huaweicloud.com
    75. Available Packages

    4.卸载旧版本docker

    1. -bash-4.2# yum remove docker docker-ce-cli
    2. 输出:
    3. Loaded plugins: fastestmirror
    4. Repository base is listed more than once in the configuration
    5. Repository updates is listed more than once in the configuration
    6. Repository extras is listed more than once in the configuration
    7. Repository centosplus is listed more than once in the configuration
    8. No Match for argument: docker
    9. Resolving Dependencies
    10. --> Running transaction check
    11. ---> Package docker-ce-cli.x86_64 1:18.09.9-3.el7 will be erased
    12. --> Processing Dependency: docker-ce-cli for package: 3:docker-ce-18.09.9-3.el7.x86_64
    13. --> Running transaction check
    14. ---> Package docker-ce.x86_64 3:18.09.9-3.el7 will be erased
    15. --> Finished Dependency Resolution
    16. Dependencies Resolved
    17. ==============================================================================================================================================================================================================================================================================
    18. Package Arch Version Repository Size
    19. ==============================================================================================================================================================================================================================================================================
    20. Removing:
    21. docker-ce-cli x86_64 1:18.09.9-3.el7 @docker-ce-stable 72 M
    22. Removing for dependencies:
    23. docker-ce x86_64 3:18.09.9-3.el7 @docker-ce-stable 90 M
    24. Transaction Summary
    25. ==============================================================================================================================================================================================================================================================================
    26. Remove 1 Package (+1 Dependent package)
    27. Installed size: 163 M
    28. Is this ok [y/N]: y
    29. Downloading packages:
    30. Running transaction check
    31. Running transaction test
    32. Transaction test succeeded
    33. Running transaction
    34. /usr/bin/dockerd has not been configured as an alternative for dockerd
    35. Erasing : 3:docker-ce-18.09.9-3.el7.x86_64 1/2
    36. Erasing : 1:docker-ce-cli-18.09.9-3.el7.x86_64 2/2
    37. Verifying : 1:docker-ce-cli-18.09.9-3.el7.x86_64 1/2
    38. Verifying : 3:docker-ce-18.09.9-3.el7.x86_64 2/2
    39. Removed:
    40. docker-ce-cli.x86_64 1:18.09.9-3.el7
    41. Dependency Removed:
    42. docker-ce.x86_64 3:18.09.9-3.el7
    43. Complete!

    5. 升级docker和containerd为最新版本

    1. -bash-4.2# yum install docker-ce-20.10.12-3.el7
    2. 输出:
    3. Loaded plugins: fastestmirror
    4. Repository base is listed more than once in the configuration
    5. Repository updates is listed more than once in the configuration
    6. Repository extras is listed more than once in the configuration
    7. Repository centosplus is listed more than once in the configuration
    8. Loading mirror speeds from cached hostfile
    9. * base: mirrors.huaweicloud.com
    10. * extras: mirrors.tuna.tsinghua.edu.cn
    11. * updates: mirrors.huaweicloud.com
    12. Resolving Dependencies
    13. --> Running transaction check
    14. ---> Package docker-ce.x86_64 3:20.10.12-3.el7 will be installed
    15. --> Processing Dependency: containerd.io >= 1.4.1 for package: 3:docker-ce-20.10.12-3.el7.x86_64
    16. --> Processing Dependency: docker-ce-cli for package: 3:docker-ce-20.10.12-3.el7.x86_64
    17. --> Processing Dependency: docker-ce-rootless-extras for package: 3:docker-ce-20.10.12-3.el7.x86_64
    18. --> Running transaction check
    19. ---> Package containerd.io.x86_64 0:1.2.13-3.2.el7 will be updated
    20. ---> Package containerd.io.x86_64 0:1.6.8-3.1.el7 will be an update
    21. ---> Package docker-ce-cli.x86_64 1:20.10.17-3.el7 will be installed
    22. --> Processing Dependency: docker-scan-plugin(x86-64) for package: 1:docker-ce-cli-20.10.17-3.el7.x86_64
    23. ---> Package docker-ce-rootless-extras.x86_64 0:20.10.17-3.el7 will be installed
    24. --> Processing Dependency: fuse-overlayfs >= 0.7 for package: docker-ce-rootless-extras-20.10.17-3.el7.x86_64
    25. --> Processing Dependency: slirp4netns >= 0.4 for package: docker-ce-rootless-extras-20.10.17-3.el7.x86_64
    26. --> Running transaction check
    27. ---> Package docker-scan-plugin.x86_64 0:0.17.0-3.el7 will be installed
    28. ---> Package fuse-overlayfs.x86_64 0:0.7.2-6.el7_8 will be installed
    29. --> Processing Dependency: libfuse3.so.3(FUSE_3.2)(64bit) for package: fuse-overlayfs-0.7.2-6.el7_8.x86_64
    30. --> Processing Dependency: libfuse3.so.3(FUSE_3.0)(64bit) for package: fuse-overlayfs-0.7.2-6.el7_8.x86_64
    31. --> Processing Dependency: libfuse3.so.3()(64bit) for package: fuse-overlayfs-0.7.2-6.el7_8.x86_64
    32. ---> Package slirp4netns.x86_64 0:0.4.3-4.el7_8 will be installed
    33. --> Running transaction check
    34. ---> Package fuse3-libs.x86_64 0:3.6.1-4.el7 will be installed
    35. --> Finished Dependency Resolution
    36. Dependencies Resolved
    37. ==============================================================================================================================================================================================================================================================================
    38. Package Arch Version Repository Size
    39. ==============================================================================================================================================================================================================================================================================
    40. Installing:
    41. docker-ce x86_64 3:20.10.12-3.el7 docker-ce-stable 23 M
    42. Installing for dependencies:
    43. docker-ce-cli x86_64 1:20.10.17-3.el7 docker-ce-stable 29 M
    44. docker-ce-rootless-extras x86_64 20.10.17-3.el7 docker-ce-stable 8.2 M
    45. docker-scan-plugin x86_64 0.17.0-3.el7 docker-ce-stable 3.7 M
    46. fuse-overlayfs x86_64 0.7.2-6.el7_8 extras 54 k
    47. fuse3-libs x86_64 3.6.1-4.el7 extras 82 k
    48. slirp4netns x86_64 0.4.3-4.el7_8 extras 81 k
    49. Updating for dependencies:
    50. containerd.io x86_64 1.6.8-3.1.el7 docker-ce-stable 33 M
    51. Transaction Summary
    52. ==============================================================================================================================================================================================================================================================================
    53. Install 1 Package (+6 Dependent packages)
    54. Upgrade ( 1 Dependent package)
    55. Total download size: 97 M
    56. Is this ok [y/d/N]: y
    57. Downloading packages:
    58. Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
    59. (1/8): containerd.io-1.6.8-3.1.el7.x86_64.rpm | 33 MB 00:00:11
    60. (2/8): docker-ce-20.10.12-3.el7.x86_64.rpm | 23 MB 00:00:11
    61. (3/8): docker-ce-rootless-extras-20.10.17-3.el7.x86_64.rpm | 8.2 MB 00:00:02
    62. (4/8): fuse3-libs-3.6.1-4.el7.x86_64.rpm | 82 kB 00:00:00
    63. (5/8): fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm | 54 kB 00:00:00
    64. (6/8): slirp4netns-0.4.3-4.el7_8.x86_64.rpm | 81 kB 00:00:00
    65. (7/8): docker-scan-plugin-0.17.0-3.el7.x86_64.rpm | 3.7 MB 00:00:00
    66. (8/8): docker-ce-cli-20.10.17-3.el7.x86_64.rpm | 29 MB 00:00:04
    67. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    68. Total 6.0 MB/s | 97 MB 00:00:16
    69. Running transaction check
    70. Running transaction test
    71. Transaction test succeeded
    72. Running transaction
    73. Installing : docker-scan-plugin-0.17.0-3.el7.x86_64 1/9
    74. Installing : 1:docker-ce-cli-20.10.17-3.el7.x86_64 2/9
    75. Installing : slirp4netns-0.4.3-4.el7_8.x86_64 3/9
    76. Updating : containerd.io-1.6.8-3.1.el7.x86_64 4/9
    77. Installing : fuse3-libs-3.6.1-4.el7.x86_64 5/9
    78. Installing : fuse-overlayfs-0.7.2-6.el7_8.x86_64 6/9
    79. Installing : 3:docker-ce-20.10.12-3.el7.x86_64 7/9
    80. Installing : docker-ce-rootless-extras-20.10.17-3.el7.x86_64 8/9
    81. Cleanup : containerd.io-1.2.13-3.2.el7.x86_64 9/9
    82. Verifying : fuse3-libs-3.6.1-4.el7.x86_64 1/9
    83. Verifying : containerd.io-1.6.8-3.1.el7.x86_64 2/9
    84. Verifying : docker-ce-rootless-extras-20.10.17-3.el7.x86_64 3/9
    85. Verifying : 1:docker-ce-cli-20.10.17-3.el7.x86_64 4/9
    86. Verifying : slirp4netns-0.4.3-4.el7_8.x86_64 5/9
    87. Verifying : docker-scan-plugin-0.17.0-3.el7.x86_64 6/9
    88. Verifying : fuse-overlayfs-0.7.2-6.el7_8.x86_64 7/9
    89. Verifying : 3:docker-ce-20.10.12-3.el7.x86_64 8/9
    90. Verifying : containerd.io-1.2.13-3.2.el7.x86_64 9/9
    91. Installed:
    92. docker-ce.x86_64 3:20.10.12-3.el7
    93. Dependency Installed:
    94. docker-ce-cli.x86_64 1:20.10.17-3.el7 docker-ce-rootless-extras.x86_64 0:20.10.17-3.el7 docker-scan-plugin.x86_64 0:0.17.0-3.el7 fuse-overlayfs.x86_64 0:0.7.2-6.el7_8 fuse3-libs.x86_64 0:3.6.1-4.el7 slirp4netns.x86_64 0:0.4.3-4.el7_8
    95. Dependency Updated:
    96. containerd.io.x86_64 0:1.6.8-3.1.el7
    97. Complete!

    6.启动docker服务

    1. -bash-4.2# systemctl restart docker
    2. 查看状态
    3. -bash-4.2# systemctl status docker
    4. 输出:
    5. ● docker.service - Docker Application Container Engine
    6. Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
    7. Active: active (running) since Wed 2022-08-31 10:59:48 CST; 1s ago
    8. Docs: https://docs.docker.com
    9. Main PID: 3685 (dockerd)
    10. Tasks: 20
    11. Memory: 42.7M
    12. CGroup: /system.slice/docker.service
    13. └─3685 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    14. Aug 31 10:59:47 work02 dockerd[3685]: time="2022-08-31T10:59:47.056821559+08:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
    15. Aug 31 10:59:47 work02 dockerd[3685]: time="2022-08-31T10:59:47.211745089+08:00" level=info msg="Loading containers: start."
    16. Aug 31 10:59:48 work02 dockerd[3685]: time="2022-08-31T10:59:48.126311336+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
    17. Aug 31 10:59:48 work02 dockerd[3685]: time="2022-08-31T10:59:48.445690355+08:00" level=info msg="Loading containers: done."
    18. Aug 31 10:59:48 work02 dockerd[3685]: time="2022-08-31T10:59:48.534402456+08:00" level=info msg="Docker daemon" commit=459d0df graphdriver(s)=overlay2 version=20.10.12
    19. Aug 31 10:59:48 work02 dockerd[3685]: time="2022-08-31T10:59:48.534728281+08:00" level=info msg="Daemon has completed initialization"
    20. Aug 31 10:59:48 work02 systemd[1]: Started Docker Application Container Engine.
    21. Aug 31 10:59:48 work02 dockerd[3685]: time="2022-08-31T10:59:48.627941713+08:00" level=info msg="API listen on /var/run/docker.sock"
    22. Aug 31 10:59:48 work02 dockerd[3685]: time="2022-08-31T10:59:48.712673010+08:00" level=warning msg="Published ports are discarded when using host network mode"
    23. Aug 31 10:59:48 work02 dockerd[3685]: time="2022-08-31T10:59:48.985802600+08:00" level=warning msg="Published ports are discarded when using host network mode"

    7.检查版本

    1. -bash-4.2# containerd -v && docker -v
    2. containerd containerd.io 1.6.8 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
    3. Docker version 20.10.17, build 100c701

    8.查看软件docker安装包

    1. -bash-4.2# rpm -qa | grep docker
    2. 输出:
    3. docker-ce-cli-20.10.17-3.el7.x86_64
    4. docker-scan-plugin-0.17.0-3.el7.x86_64
    5. docker-ce-20.10.12-3.el7.x86_64
    6. docker-ce-rootless-extras-20.10.17-3.el7.x86_64

    9.查看containerd安装包

    1. -bash-4.2# rpm -qa | grep containerd
    2. containerd.io-1.6.8-3.1.el7.x86_64

    10.查看docker镜像

    1. -bash-4.2# docker images
    2. REPOSITORY TAG IMAGE ID CREATED SIZE
    3. busybox latest beae173ccac6 8 months ago 1.24MB
    4. nginx latest 605c77e624dd 8 months ago 141MB
    5. memcached latest 752e592c22f1 8 months ago 89.1MB
    6. redis latest 7614ae9453d1 8 months ago 113MB
    7. consul latest 76802375bc5c 8 months ago 118MB
    8. nginx <none> 7e4d58f0e5f3 23 months ago 133MB
    9. redis <none> 41de2cc0b30e 24 months ago 104MB
    10. busybox <none> edabd795951a 24 months ago 1.22MB
    11. nginx <none> 4bb46517cac3 2 years ago 133MB
    12. registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy v1.17.11 597c722f6011 2 years ago 117MB
    13. consul <none> 6adcb25542ed 2 years ago 122MB
    14. memcached <none> 9541a03b5007 2 years ago 82.3MB
    15. jenkins/jenkins lts 5d1103b93f92 2 years ago 656MB
    16. nginx 1.16 dfcfd8e9a5d3 2 years ago 127MB
    17. quay.io/coreos/flannel v0.12.0-amd64 4e9f801d2217 2 years ago 52.8MB
    18. polinux/stress latest df58d15b053d 2 years ago 9.74MB
    19. registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy v1.16.4 091df896d78f 2 years ago 86.1MB
    20. registry.cn-hangzhou.aliyuncs.com/google_containers/coredns 1.6.5 70f311871ae1 2 years ago 41.6MB
    21. registry.cn-beijing.aliyuncs.com/abcdocker/jenkins v1.2 1040138b5448 3 years ago 1.01GB
    22. rancher/rancher-agent v2.2.4 7b50ddb5354c 3 years ago 290MB
    23. quay.io/prometheus/node-exporter v0.18.1 e5a616e4b9cf 3 years ago 22.9MB
    24. quay.io/coreos/kube-rbac-proxy v0.4.1 70eeaa7791f2 3 years ago 41.3MB
    25. mysql 5.6.41 085b9b6ec8a9 3 years ago 256MB
    26. quay.io/external_storage/nfs-client-provisioner latest 16d2f904b0d8 4 years ago 45.5MB
    27. cnych/jenkins jnlp d68e6cfb2be2 4 years ago 1.29GB
    28. registry.cn-hangzhou.aliyuncs.com/google_containers/pause 3.1 da86e6ba6ca1 4 years ago 742kB
    29. nginx 1.12.0 313ec0a602bc 5 years ago 107MB
    30. nginx 1.11.9 cc1b61406712 5 years ago 182MB
    31. nginx 1.9.1 94ec7e53edfc 7 years ago 133MB

    原来升级前的数据没有丢失

    11.启用kubelet

    1. -bash-4.2# systemctl restart kubelet
    2. -bash-4.2# systemctl status kubelet
    3. ● kubelet.service - kubelet: The Kubernetes Node Agent
    4. Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
    5. Drop-In: /usr/lib/systemd/system/kubelet.service.d
    6. └─10-kubeadm.conf
    7. Active: active (running) since Wed 2022-08-31 11:04:37 CST; 6s ago
    8. Docs: https://kubernetes.io/docs/
    9. Main PID: 6525 (kubelet)
    10. Tasks: 15
    11. Memory: 21.5M
    12. CGroup: /system.slice/kubelet.service
    13. └─6525 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=registry.cn-hangz...
    14. Aug 31 11:04:38 work02 kubelet[6525]: I0831 11:04:38.580320 6525 docker_service.go:260] Docker Info: &{ID:ENBK:MTLY:ZF26:J5GJ:4GGV:E2Q3:JZQR:U7FI:ODLB:AJTF:KQWL:IJWL Containers:14 ContainersRunning:7 ContainersPaused:0 ContainersStopped:7 Imag...pports d_type true] [
    15. Aug 31 11:04:38 work02 kubelet[6525]: I0831 11:04:38.580770 6525 docker_service.go:273] Setting cgroupDriver to systemd
    16. Aug 31 11:04:38 work02 kubelet[6525]: I0831 11:04:38.631428 6525 remote_runtime.go:59] parsed scheme: ""
    17. Aug 31 11:04:38 work02 kubelet[6525]: I0831 11:04:38.631547 6525 remote_runtime.go:59] scheme "" not registered, fallback to default scheme
    18. Aug 31 11:04:38 work02 kubelet[6525]: I0831 11:04:38.631771 6525 passthrough.go:48] ccResolverWrapper: sending update to cc: {[{/var/run/dockershim.sock 0 <nil>}] <nil>}
    19. Aug 31 11:04:38 work02 kubelet[6525]: I0831 11:04:38.631855 6525 clientconn.go:577] ClientConn switching balancer to "pick_first"
    20. Aug 31 11:04:38 work02 kubelet[6525]: I0831 11:04:38.632031 6525 remote_image.go:50] parsed scheme: ""
    21. Aug 31 11:04:38 work02 kubelet[6525]: I0831 11:04:38.632053 6525 remote_image.go:50] scheme "" not registered, fallback to default scheme
    22. Aug 31 11:04:38 work02 kubelet[6525]: I0831 11:04:38.632079 6525 passthrough.go:48] ccResolverWrapper: sending update to cc: {[{/var/run/dockershim.sock 0 <nil>}] <nil>}
    23. Aug 31 11:04:38 work02 kubelet[6525]: I0831 11:04:38.632097 6525 clientconn.go:577] ClientConn switching balancer to "pick_first"
    24. Hint: Some lines were ellipsized, use -l to show in full.

    12.master节点查看升级后的集群状态

    1. [root@master01 ~]# kubectl get node -o wide
    2. NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
    3. master01 Ready master 242d v1.17.11 10.10.20.3 <none> CentOS Linux 7 (Core) 3.10.0-1127.18.2.el7.x86_64 docker://18.9.9
    4. master02 Ready master 2y137d v1.17.11 10.10.20.4 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 docker://18.9.9
    5. master03 Ready master 2y137d v1.17.11 10.10.20.5 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 docker://18.9.9
    6. work01 Ready <none> 2y135d v1.17.11 10.10.20.6 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 docker://18.9.9
    7. work02 Ready,SchedulingDisabled <none> 2y82d v1.17.11 10.10.20.7 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 docker://20.10.12

    最后一行线上docker版本已经升级

    13.解除节点的禁止调度(master节点操作)

    1. [root@master01 ~]# kubectl uncordon work02
    2. 输出:
    3. node/work02 uncordoned

    以上即完成node节点的升级

    二.其他worker节点的升级

    采用逐台升级,当一台升级完成后,采用以上步骤,再升级其它节点。

    三.master节点升级

    如果是单主单从,node升级会有风险,可能导致业务异常;

    如果是单台master,且master没有参与集群负载,此时master上的pod为静态pod,此时不需要执行驱逐节点操作,停止docker和kubelet,升级docker即可;

    如果是单台master,master参与集群负载,此时驱逐后进行升级。master执行驱逐操作后,工作负载pod会迁移至其它节点,系统pod作为静态pod还会保留,停止docker和kubelet,升级docker即可;

    如果是多master,多node,且master没有参与集群负载,此时master上的pod为静态pod,此时不需要执行驱逐节点操作,停止docker和kubelet,升级docker即可;

    如果是多master,多node,master参与集群负载,此时驱逐后进行升级,按步骤2顺序进行升级。master执行驱逐操作后,工作负载pod会迁移至其它节点,系统pod作为静态pod还会保留,停止docker和kubelet,升级docker即可。

    如下命令可以完成节点docker升级

    1. kubectl drain node_name --ignore-daemonsets --delete-local-data --force
    2. systemctl stop kubelet && systemctl stop docker
    3. yum makecache
    4. yum install docker-ce-20.10.12-3.el7 -y
    5. systemctl restart docker && systemctl restart kubelet

  • 相关阅读:
    python 中 __init__ 文件的作用
    在美国高校找教职及教学中的体会
    编译rabbitmq-c报错,切换cmake版本就可以了【resolved】
    保研CS/软件工程/通信专业问题汇总(搜集和自己遇到的)
    Unity - Shader - Projector 高空云层底下透明阴影
    LabVIEW中将前面板置于所有桌面窗口的前面
    llava1.5-部署
    MySQL视图详解
    spring缓存的使用
    vue 提效的一些技巧
  • 原文地址:https://blog.csdn.net/rendongxingzhe/article/details/126620225