ACK 1.18集群升级 - CSI Block Volume升级说明

背景:

ACK1.16集群升级到1.18版本时,CSI Block Volume出现一个不兼容的问题需要处理;

即:需要将1.16版本的节点(Kubelet)上使用Block Volume的Pod先迁移到1.18版本的节点上,然后再升级1.16版本节点;

什么是Block Volume:https://kubernetes.io/zh/docs/concepts/storage/persistent-volumes/#raw-block-volume-support

原因:

Kubernetes在1.17版本中对Block Volume的GlobalPath目录结构做了修改,这样就导致在1.16版本挂载的Block Volume在1.18版本上无法识别。

所以需要遵循:在一个版本挂载的Block Volume必须在相同版本上进行卸载;问题详见:
https://v1-17.docs.kubernetes.io/docs/setup/release/notes/#storage
https://github.com/kubernetes/kubernetes/pull/74026

ACK解决方案:

ACK在1.18 Kubernetes(kubelet)做了兼容,即让1.18版本kubelet在卸载block volume时,也认识1.16版本的目录结构;

但此问题在不同场景的行为有区别,目前对以下场景具有不同的兼容性。

  1. 兼容直接升级:
    以下场景在升级1.18集群,可以直接升级:
    通过StatefulSet部署的应用挂载了Block Volume,
    通过单个Pod部署的应用挂载了Block Volume,

  2. 不兼容直接升级:
    以下场景还不兼容,您升级时需要遵循社区的Drain方案,进行排水或者先将挂载Block Volume的pod停掉:
    单个Block Volume被同一个节点的多个Pod同时挂载的场景;
    通过Deployment部署pod,并挂载了Block Volume;

升级注意:

对于不兼容的场景,您不要对进群进行升级,除非使用社区排水方案,或者联系我们一起看一下具体场景并给出升级方案;

上一篇:FGAP加速图片和视频转码


下一篇:容器服务Windows Kubernetes使用阿里云日志服务来收集容器日志