阿里云容器服务ACS升级1.18.8-aliyun.1 踩坑记录

公司的项目的云服务提供方均为阿里云,为了减少运维成本,也基本基于阿里云的产品进行构建。

当然这样做有好处,也有不足,好处是:大大减少了相关产品运维成本更加方便。 不足就是一旦用上了阿里云的这种相关产品以后基本不太可能迁移他处,迁移成本过大。

阿里云的容器服务ACS产品(我们采用的是托管版本),一般半年期一个大版本升级,要持续跟进阿里云的升级进度,否则就会进入非维护期的产品系列了。 不过每次升级其实都是提心吊胆。最近一直提示可更新至1.18.8-aliyun.1版本,遂几个集群逐一开始升级,一般情况是没有问题的。 可今天就出现了幺蛾子。

其中一个集群在升级时死活不行(相同配置的其他集群OK):

Node: cn-zhangjiakou.172.16.8.128, error logs: curl: (7) Failed to connect to ::1: No route to host + if_ok= + set -e + '[' '' = ok ']' + count=0 + sleep 2 + (( i++ )) + (( i < 30 )) + public::common::log 'curl kubelet healthz, this is round 4' /usr/local/k8s-upgrade/common.sh: fork: retry: No child processes /usr/local/k8s-upgrade/common.sh: fork: retry: No child processes /usr/local/k8s-upgrade/common.sh: fork: re

遇到这种情况只能寻求阿里云官方帮助解决,官方的工单服务还是不错的。最终得到的回复是其中一个Node资源不足引起的。

其实整体Node资源占用率仅为30%左右,而CPU一般在10%以下,每个node机器配置为:8核64G,上面业务Pod数10个左右,每个内存资源占用大概2G,很难理解哪块资源会不足,由于情况紧急并未深究此原因,紧急解决之。

最终的解决办法是先取消升级,排空该Node,再重新升级集群解决此问题。

当然阿里云给出的第一套建议是直接从集群中删除此node,升级完成后再添加回来,这个方法基本可以解决100%的node异常问题,但由于我们这节点上手动安装了dns等其他服务无法采用该方式,只能放弃。

Leave a Reply


正在读取数据……