更新对象存储卷访问密钥(AK/SK)后自动生效
如果您的业务容器依赖于对象存储服务来存储和读取数据,每次更改存储卷的访问密钥后,都必须手动重启所有相关的业务容器,以使新密钥生效,这可能会对业务的连续性产生一定影响。
CCE容器存储(Everest)支持更新对象存储卷访问密钥后自动生效的功能。当您更新了对象存储卷的访问密钥后,系统能够自动地检测到这一变化,并将所有受影响的工作负载配置为新的访问密钥,而无需手动重启工作负载,保证密钥更新期间业务也可以平稳运行。
前提条件
- 已创建一个CCE Standard或CCE Turbo集群,且集群版本满足以下要求:
- v1.25集群:v1.25.16-r30及以上版本
- v1.27集群:v1.27.16-r30及以上版本
- v1.28集群:v1.28.15-r20及以上版本
- v1.29集群:v1.29.13-r0及以上版本
- v1.30集群:v1.30.10-r0及以上版本
- v1.31集群:v1.31.6-r0及以上版本
- v1.32集群:v1.32.1-r0及以上版本
- 其他更高版本的集群
- 集群中需要安装2.4.150及以上版本的CCE容器存储(Everest)插件。
约束与限制
- 插件版本为2.4.150及以上、2.4.165以下时,自动更新密钥的能力仅支持并行文件系统;2.4.165及以上时同时支持并行文件系统和对象桶。
- 自动更新密钥的能力仅针对CCE容器存储(Everest)插件更新至特定版本(并行文件系统需要2.4.150及以上,对象桶需要2.4.165版本及以上)后新建的工作负载。存量的工作负载如果要支持该能力,需要在Everest插件升级后,手动重建相应的工作负载,后续自动更新密钥的能力将自动生效。
步骤一:确认工作负载支持自动更新密钥
由于更新对象存储卷访问密钥后自动生效的功能仅对Everest插件更新后新建的工作负载生效,您需要在确认Everest插件版本满足要求后,再次确认工作负载的启动时间是否晚于Everest插件升级时间。
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧导航栏选择“插件中心”,在右侧查看CCE容器存储(Everest)插件版本是否已满足2.4.150及以上。
单击“编辑”,查看“高级配置 > 扩展参数配置”中是否已开启动态更新AK/SK的能力,即enable_aksk_refresh参数需设置为true。
- 确认集群中已经使用对象存储的工作负载及其运行的节点,以并行文件系统类型为例。
- 在左侧导航栏选择“存储”,在右侧选择“存储卷声明”页签,查看全部命名空间下是否有使用并行文件系统的存储卷。
- 使用kubectl命令确认所有命名空间下使用对应并行文件系统的存储,以default命名空间为例,其中{pvc_name}为PVC的名称:
kubectl get pods -n default -o custom-columns="POD:.metadata.name,PVC:.spec.volumes[*].persistentVolumeClaim.claimName,hostIP:.status.hostIP,UID:.metadata.uid" | grep {pvc_name}
回显如下:
obs-test-65c6dd7675-c67ss obs 192.168.0.227 adb83cd4-58cc-4d01-a91a-584c6ed477fc
表示名为obs-test-65c6dd7675-c67ss的Pod中挂载了名为obs的PVC,其运行的节点IP为192.168.0.227,其UID为adb83cd4-58cc-4d01-a91a-584c6ed477fc。
- 在左侧导航栏选择“存储”,在右侧选择“存储卷声明”页签,查看全部命名空间下是否有使用并行文件系统的存储卷。
- 登录工作负载Pod所在的节点,执行以下命令,确认升级后的Everest插件提供的obsfs工具的时间。
ls -l /usr/bin/obsfs
回显如下,表示obsfs是3月20号下午17:09更新的。
-rwx------ 1 root root 9424176 Mar 20 17:09 /usr/bin/obsfs
- 确认Pod所在节点的obsfs进程启动时间。
ps -ef | grep {pod_uid}
回显如下:
表示Pod使用的obsfs进程是在10:34挂载的,晚于Everest更新obsfs工具的时间,所以该Pod是支持自动更新密钥的。
如果Pod使用的obsfs进程早于Everest更新obsfs工具的时间,则需要手动重启Pod,后续自动更新密钥的能力将自动生效。
步骤二:更新对象存储卷自定义访问密钥(AK/SK)
确认对象存储卷相关联的工作负载已支持自动更新密钥能力后,您可以更新对象存储卷自定义访问密钥(AK/SK)。
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧导航栏选择“存储”,在右侧选择“存储卷声明”页签,单击并行文件系统的存储卷“更多 > 更新访问密钥”。
- 上传新的访问密钥(AK/SK)后,单击“确定”。
请确保更新后的密钥合法有效,且具备访问对应的对象存储卷的权限,否则将导致工作负载无法访问已挂载的对象存储。
步骤三:确认工作负载密钥更新已经生效
更新对象存储使用的访问密钥后,正常情况下等待约30s后可通过Pod事件或告警确认更新是否生效。您可以通过以下步骤进行确认:
常见问题
- 证书不合法,事件如下:
failed to refresh ak/sk for xxx, reason: invalid credentials(host=xxx:443) - result of checking service.
解决方案:
请修改为合法的证书后重新查看异常是否解决。
- 更新AKSK超时失败,事件如下:
failed to refresh ak/sk for xxx, reason: wait timeout...
解决方案:
Pod删除或者迁移导致obsfs进程退出,可能会偶现此告警,该场景属于正常情况,如果没有持续上报告警可不用关注。
如果持续出现此告警,请尝试重建Pod后查看异常是否解决。