为避免过期版本集群存在的安全和稳定性风险,同时保证您业务的连贯性,容器服务ACK采用原地升级的方式升级ACK灵骏集群版本。您可以通过控制台升级集群的Kubernetes版本,也可以独立升级控制面和节点池,灵活控制升级节奏。本文介绍集群升级前后的注意事项、升级流程、操作步骤等。
为什么需要升级
ACK灵骏集群支持Kubernetes 1.20升级至1.22。
主动升级集群有以下好处:
-
降低安全和稳定性风险:随着Kubernetes版本迭代,会不断优化及修复发现的安全及稳定性漏洞,长期使用过期版本集群会给业务带来安全和稳定性风险。
-
使用新版本的新功能:随着社区Kubernetes版本的演进,新版本包含新的功能和改进,ACK也将适配新版本,为您带来更好的开发和运维体验。
建议您参照下文提前主动升级集群。
升级集群时,容器服务ACK会对您的集群进行前置检查,但无法保证检查出所有不兼容的功能配置和API。根据安全责任共担模型,请您通过帮助文档、控制台信息、站内信等渠道关注版本发布情况,并在集群升级时提前了解相应版本的升级注意事项。
更多关于Kubernetes版本支持信息,请参见ACK灵骏Kubernetes版本概览及机制。
注意事项(重要)
版本说明
您可以登录容器服务管理控制台,在集群页面的版本列查看集群的Kubernetes版本。确定待升级版本后,参见下方链接了解待升级版本的版本解读、废弃资源API、升级注意事项等,避免因高版本的功能变更导致业务功能不兼容,从而影响集群正常运行。
如果您的HELM Chart YAML文件中使用了废弃资源,请及时修改。更多信息,请参见上方版本说明和废弃API说明。
相关功能及自定义配置说明
如果您的集群中使用了如下相关功能,请仔细阅读以下说明及解决方案。
|
配置项 |
注意事项 |
推荐解决方案 |
|
Flexvolume存储 |
集群升级过程中,老版本的Flexvolume(v1.11.2.5及以前)挂载的OSS存储卷会被重新挂载。 |
若您的集群使用OSS存储卷,请在集群升级后重建相应的Pod。 同时,由于Flexvolume存储插件已经弃用,建议您将FlexVolume迁移至CSI插件。具体操作,请参见迁移Flexvolume至CSI。 |
|
节点自动伸缩 |
如果您的集群使用了节点自动伸缩功能,为保证自动伸缩功能不受影响,集群在升级成功后会自动更新Cluster Autoscaler组件至最新版本。 |
确认Cluster Autoscaler组件版本正常。更多信息,请参见启用节点自动伸缩。 |
|
节点资源预留 |
升级至Kubernetes v1.18后,ACK会默认配置节点资源预留。如果集群未配置资源预留且节点水位较高,升级后存在Pod驱逐后无法被快速调度的风险。 |
为节点预留部分资源,推荐CPU使用率不超过50%,内存使用率不超过70%。更多信息,请参见节点资源预留策略。 |
|
Loadbalancer配置 |
集群外部访问集群时,需要通过SLB来访问。但当SLB设置 |
检查是否完成对应配置,避免LoadBalancer暴露的SLB地址访问不通的风险。如有相关问题,请参见Kubernetes集群中访问LoadBalancer暴露的SLB地址不通。 |
|
API Server |
集群升级过程中,ACK竭力保障控制面的平滑升级,集群上的应用不会中断,但升级过程中可能会出现短暂的API Server中断。如果您的应用强依赖于API Server,例如需要对资源List-Watch,API Server重启会导致Watch 中断,需要您自行保证在中断时自动重试。 |
如果您的应用不访问API Server,将不会受到升级影响;如果需要访问API Server,则需要有失败重试的能力。 |
|
kubectl |
集群升级后,请同步升级您本地的kubectl版本。 如果未及时升级,在使用本地kubectl的过程中可能会因为与集群API Server版本不同,发生类似 |
安装或升级kubectl。具体操作,请参见安装kubectl。 |
如果您对集群曾有自定义配置,请仔细阅读以下说明。
|
配置项 |
说明 |
|
网络 |
集群升级需要使用yum下载升级所需的软件包。如果您的集群曾自行修改节点的网络配置或者使用了自定义的操作系统镜像,需确保节点yum能正常使用。您可以执行 |
|
操作系统镜像 |
自定义操作系统镜像非容器服务官方严格验证。ACK无法完全保证升级成功。 |
|
其他 |
如果您对集群有过配置更改,例如打开了SWAP分区、曾通过黑屏操作修改kubelet配置等,集群升级过程有可能失败,或自定义配置有可能丢失。 |
操作步骤
升级控制面
在控制面升级页签单击前置检查,提前扫描集群升级可能存在的潜在风险。检查完成后,在前置检查结果区域查看检查结果。
结果正常:升级检查成功,继续执行升级。
结果异常:不影响当前集群的运行及集群状态。请参见解决方案完成修复。更多信息,请参见集群检查项及修复方案。
后续操作:升级节点池
控制面升级完成后,新扩容节点的版本遵循控制面的版本。建议您在业务低峰期尽快完成存量节点的升级,并在升级完成后查看kubelet版本,确认升级是否成功。具体操作,请参见升级节点和升级灵骏节点池。
集群升级常见问题
关于升级集群前和升级过程中的常见问题,请参见集群检查项及修复方案。
参考信息:控制面及节点池升级流程
控制面升级流程
ACK灵骏集群将按照以下流程升级您集群的控制面。具体策略如下。
-
升级控制面和托管组件,包括kube-apiserver、kube-controller-manager和kube-scheduler等。
-
升级Kubernetes组件,例如kube-proxy等。
节点池升级流程
相关文档
当您在升级ACK灵骏集群过程中遇到问题,请参见集群检查项及修复方案进行定位和解决。