# :-: 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`
升级后的版本信息如图所示:

### 2.6 查看升级后容器是否正常
在2.3中开启的窗口观察是否有异常POD。
## 3.用例
### 3.1 启动容器
用例名称:新建并启动容器
预置条件:root用户登录后台操作
命令举例:`docker run -itd --name 新名称 镜像ID /bin/bash`
根据生产情况替换:

### 3.2 进入容器
用例名称:进入容器
预置条件:root用户登录后台操作
命令举例:`docker exec containerID /bin/sh`
根据生产情况替换:

### 3.3 命令查看
用例名称:查看容器时区
预置条件:root用户登录后台操作
命令举例:`docker exec containerID date -R`或`docker exec containerID date`
根据生产情况替换:

### 3.4 容器启停
用例名称:查看容器时区
预置条件:root用户登录后台操作
命令举例:
`docker stop containerID`
`docker exec containerID date`
根据生产情况替换:

### 3.5 容器删除
用例名称:进入容器
预置条件:root用户登录后台操作
命令举例:`docker rm containerID`
根据生产情况替换:

## 4.结果
待补充......
## 5.回退方案
如果在升级后发现POD异常需要回退,请参照以下步骤回退。
### 5.1 恢复备份
查看runc路径
`which runc`
切换至对应目录
`cd (runc目录)`
恢复runc
```
\cp runc_`date +"%x%X"` runc
```
### 5.2 查看当前版本
`runc -v`
回退后的版本信息如图2所示:

### 5.3 监控POD状态(Master节点)
另外开启一个窗口实时观察当前POD状态。
```
watch -n 1 "kubectl get pod -A -o wide | grep -v Running"
```
- 常见问题
- 进入救援模式
- 进入单用户模式
- grub引导修复
- V10SP1-biosdevname解析
- 外设挂载和卸载
- audit关闭解决方案
- 终端无法切换
- 救援模式取数据
- 网卡更名操作
- 问题复现解决类
- xgboost复现解决步骤
- 激活类
- 麒麟服务器激活常用命令
- 服务器故障激活问题--须知
- 激活权限获得方式
- V10-SP系列服务器激活
- 银河麒麟高级服务器操作系统V7&V10激活手册
- shell脚本类
- 多网卡队列绑定CPU脚本
- 服务器健康检查脚本
- 服务安装配置类
- 银河麒麟高级服务器操作系统V10(sp1)安装手册
- LVM创建
- Chrony时间同步配置
- 搭建网络yum源
- PXE部署实施
- Man手册安装
- 部署VNC服务
- Kylin-Server-V10-SP1-0711-DNS服务单机部署文档
- 麒麟ks文件定制-封装iso文件
- iptables端口配置
- V10-SP1-aarch64安装jdk1.7
- 工具使用类
- cyclictest测试工具
- e2fsprogs工具介绍
- Logrotate工具说明
- nmon工具安装与使用
- 升、降级类
- rsyslog升级报告
- 性能优化类
- 日志轮转
- 大页内存与透明大页详解
- 优化磁盘IO调度方式
- core文件设置
- 分析报告类
- bond模式4协商不通排查
- audit内存泄露问题分析报告
- mate-indicators内核占用过高问题分析报告
- ansible问题-hostname以及lvol报错
- 关于Linux内存计算的说明
- 磁盘IO调度算法
- 硬件相关类
- 串口
- 网络相关类
- bond创建
- 在已配置好网络情况下添加路由
- 网卡配合网桥实现内网互通KVM虚拟机
- Bond模式4协商不通排查过程
- HA高可用
- kylin HA shell实践
- kylin HA概念性及shell使用
- 虚拟化
- KVM创建虚拟机(图形化操作)
- KVM创建虚拟机(命令操作)
- 容器类
- docker-runc升级
- docker基础镜像制作-服务器版
- 麒麟云平台
- USB3.0设备穿透方法(针对win10云主机穿透)
- 麒麟云平台开关机操作说明
- 技术演练
