一、背景简介
当前使用的rancher版本存在如下漏洞:版本SUSE Rancher存在不当的特权管理漏洞(CVE-2023-22647),使普通用户能够利用其现有的权限来操纵本地集群中的Kubernetes密钥,导致密钥被删除,但其对密钥的只读级别权限被保留。当这个操作后跟其他特别制作的命令时,可能导致用户获得访问本地集群中服务帐户令牌的权限。
二、当前环境信息
服务器:CentOS Linux release 7
rancher版本:v2.6.3
部署方式:docker部署
当前rancher存储的数据:一些用户信息和一个k8s集群信息
三、升级步骤
升级说明:本次需将rancher的版本由v2.6.3升级到v2.6.13,任何事情都有其时效性和前提性,环境信息的不同或者升级版本的不同都可能会导致不同问题的出现,如果遇到了不同的问题可以在网上进行查询,但是一定要根据自己的环境做好评估验证后再操作!!!
第一步:删除当前管理的k8s集群,注意!!!删除后不会立马删除掉,还是需要登录到k8s master节点查看之前部署的pod是否还在,可使用下面的命令:
kubectl get po -A | grep cattle
第二步:查看容器ID
docker ps |grep rancher
第三步:停止容器
docker stop 容器ID(上一步查出的)
第四步:备份
docker create --volumes-from rancher --name rancher-data rancher/rancher:latest
第五步:基于备份数据开启新的服务(要清楚自己之前的启动命令是什么,我使用的命令没有通用性)
docker run -dti --restart=unless-stopped --privileged --network=host --name rancher rancher/rancher:v2.6.13
第六步:环境验证(有的需要等几分钟,rancher环境才能准备好)
#查看容器新启动的容器ID
docker ps |grep rancher
#查看后台日志
docker logs 容器ID
第七步:再像之前一样,导入之前的k8s集群即可
至此单节点rancher升级完毕,之前尝试了网上的很多博客,但是都是在没有删除集群的情况下操作的,我操作后k8s就显示集群Unavailable状态,然后我就根据自己的情况写了这篇博客,希望对大家有用,还是那句话,生产环境一定要验证充分后再操作。