NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# :-: docker-runc升级 | 适用范围 | 适用版本 | 人员 | 发布时间 | 文档版本 |备注 | | --- | --- | --- | --- | --- |--- | | 服务器操作系统 | V10-SP1-0711-arm64 | 钱海龙 |2022.3.1| V1.0|发布| | 服务器操作系统 | V10-SP1-0711-arm64 | 张志勇 |2022.3.1| V1.1|模板调整| ### 经测试,该方案有效可行 ## :-: 目录 1. 概述 1.1. 目的 1.2. 操作人员 1.3. 环境信息 1.4. 过程概述 1.4.1 准备阶段 1.4.2 升级第一阶段 1.4.3 升级第二阶段 1.4.4 升级第三阶段 2. 升级方案 2.1 上传runc包 2.2 备份当前runc 2.3 监控POD状态(Master节点) 2.4 升级当前runc 2.5 检查runc版本 2.6 查看升级后容器是否正常 3. 用例 3.1 启动容器 3.2 进入容器 3.3 命令查看 3.4 容器启停 3.5 容器删除 4. 结果 5. 回退方案 5.1 恢复备份 5.2 查看当前版本 5.3 监控POD状态(Master节点) ***** ## 1.概述 ### 1.1.目的 升级docker runc后解决了k8s exec健康检查偶发性连接报错问题。 ### 1.2.操作人员 麒麟技术工程师:XXX ### 1.3.环境信息 服务器:华为泰山200 操作系统:Kylin-Server-10-SP1-Release-Build04-20200711-arm64 内核版本:4.19.90-17.ky10.aarch64 Docker容器版本:18.09.0 ### 1.4.过程概述 #### 1.4.1 准备阶段 挑选可用的单个集群,集群中所有节点均有健康检查报错的现象。 #### 1.4.2 升级第一阶段 升级两台节点(1Master+1Node),观察时间2021.10.28-2021.11.1,如果升级节点未有健康检查报错以及新的报错接着进行第二阶段升级。 #### 1.4.3 升级第二阶段 再次升级三台节点(3Node),观察时间2021.11.2-2021.11.8,如果升级节点未有健康检查报错以及新的报错接着进行第三阶段。 #### 1.4.4 升级第三阶段 集群中剩余节点全部升级,观察时间2021.11.9-2021.11.15,如果升级节点未有健康检查报错以及新的报错,准备升级其它集群Runc。 ## 2.升级方案 ### 2.1 上传runc包 生产环境根据实际情况,将docker-runc-1.0.0.rc3-201.p01.ky10.aarch64.rpm上传至宿主机/tmp/下。 ### 2.2 备份当前runc 查看runc路径 `which runc` 切换至对应目录 `cd (runc目录)` 备份当前runc包 ``` cp runc runc_`date +"%x%X"` ``` ### 2.3监控POD状态(Master节点) 另外开启一个窗口实时观察当前POD状态。 `watch -n 1 "kubectl get pod -A -o wide | grep -v Running"` ### 2.4 升级当前runc `rpm -Uvh /tmp/docker-runc-1.0.0.rc3-201.p01.ky10.aarch64.rpm` ### 2.5 检查runc版本 `runc -v` 升级后的版本信息如图所示: ![](https://img.kancloud.cn/c4/6c/c46caf859337d8b0316ac596dbf8a333_445x206.png) ### 2.6 查看升级后容器是否正常 在2.3中开启的窗口观察是否有异常POD。 ## 3.用例 ### 3.1 启动容器 用例名称:新建并启动容器 预置条件:root用户登录后台操作 命令举例:`docker run -itd --name 新名称 镜像ID /bin/bash` 根据生产情况替换: ![](https://img.kancloud.cn/55/30/55308b895b0f6886424bdfe84f1044c7_403x46.png) ### 3.2 进入容器 用例名称:进入容器 预置条件:root用户登录后台操作 命令举例:`docker exec containerID /bin/sh` 根据生产情况替换: ![](https://img.kancloud.cn/c9/6d/c96ddd1f368aafb8a757a596ded851e7_402x53.png) ### 3.3 命令查看 用例名称:查看容器时区 预置条件:root用户登录后台操作 命令举例:`docker exec containerID date -R`或`docker exec containerID date` 根据生产情况替换: ![](https://img.kancloud.cn/79/f8/79f840535e79f95d7bbdcdfa4b9cf838_402x55.png) ### 3.4 容器启停 用例名称:查看容器时区 预置条件:root用户登录后台操作 命令举例: `docker stop containerID` `docker exec containerID date` 根据生产情况替换: ![](https://img.kancloud.cn/ae/77/ae777e73b0ab0efbdc5f2a220abdba14_402x73.png) ### 3.5 容器删除 用例名称:进入容器 预置条件:root用户登录后台操作 命令举例:`docker rm containerID` 根据生产情况替换: ![](https://img.kancloud.cn/60/9e/609e5d4f55e642edcd2b9652820a4ae4_402x81.png) ## 4.结果 待补充...... ## 5.回退方案 如果在升级后发现POD异常需要回退,请参照以下步骤回退。 ### 5.1 恢复备份 查看runc路径 `which runc` 切换至对应目录 `cd (runc目录)` 恢复runc ``` \cp runc_`date +"%x%X"` runc ``` ### 5.2 查看当前版本 `runc -v` 回退后的版本信息如图2所示: ![](https://img.kancloud.cn/29/f6/29f60068df217e3131280fe5e6b59c6c_461x213.png) ### 5.3 监控POD状态(Master节点) 另外开启一个窗口实时观察当前POD状态。 ``` watch -n 1 "kubectl get pod -A -o wide | grep -v Running" ```