本文介绍CoreDNS升级前的检查和优化操作,以及自动升级的步骤。
前提条件
升级CoreDNS过程说明
- CoreDNS升级过程中,ACK会用新版本的YAML模板覆盖您集群中旧版本的CoreDNS YAML模板,其中CoreDNS的配置文件会被自动升级,但CoreDNS的副本数不会变化。
- 若您此前对YAML模板进行手动自定义变更,修改了容忍Toleration、内存和CPU的资源请求和限制等字段,将会被覆盖。针对这种情况,您可以手动升级CoreDNS,或者在自动升级CoreDNS后再次更新YAML模板内容。关于如何手动升级,请参见CoreDNS手动升级。
-
如果您使用了IPVS作为kube-proxy负载均衡模式,在CoreDNS升级完成后,您可能会遇到五分钟内全集群范围内的解析超时或失败的情况,通过以下任意方式可以降低IPVS缺陷的影响:
- 修改kube-proxy中IPVS UDP会话保持的超时时间,具体操作,请参见如何修改kube-proxy中IPVS UDP会话保持的超时时间?。
- 使用节点DNS缓存NodeLocal DNSCache,具体操作,请参见使用节点DNS缓存NodeLocal DNSCache。
-
升级过程约2分钟,实际耗时可能和集群中CoreDNS副本数相关。如果遇到新副本无法调度或启动的情况,可提交工单咨询。但旧的副本不会被停止,因此不影响业务解析,升级十分钟内系统会自动回滚。
开启ready
插件
如果您之前有手动升级CoreDNS且当前CoreDNS版本大于1.5.0,那您在自动升级CoreDNS之前,需要检查CoreDNS配置文件是否已经开启ready
插件。如果配置文件中没有ready
插件,您需要开启ready
插件,然后再进行自动升级CoreDNS操作,否则CoreDNS将无法正常启动。
开始升级
您可以通过控制台的组件管理入口进行CoreDNS的版本升级。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面,选择目标集群,并在目标集群右侧操作列下,选择 。
- 在组件管理页面,搜索CoreDNS,然后单击升级。
配置IPVS类型集群的UDP超时时间
如果您的ACK集群使用了kube-proxy IPVS模式,IPVS的会话保持策略会导致整个集群在升级完成后五分钟内出现概率性解析失败的问题。您可以按以下方式降低IPVS
UDP类型的会话保持超时时间至10秒,以减少解析失败的次数。如果您ACK集群中包含UDP类型的业务,需要您提前评估该操作是否有影响再执行该操作。如果您无法评估,您可以提交工单咨询。
说明 如果您的集群不是IPVS类型,请忽略配置IPVS类型集群的UDP超时时间的操作。关于如何查看kube-proxy代理模式,请参见查看基本信息。
K8s 1.18及以上版本集群
控制台操作方式
命令行操作方式
K8s 1.16及以下版本集群
此类版本集群的kube-proxy不支持udpTimeout参数,推荐使用OOS服务批量在所有集群机器上执行
ipvsadm
命令以调整UDP超时时间配置。命令如下:yum install -y ipvsadm
ipvsadm -L --timeout > /tmp/ipvsadm_timeout_old
ipvsadm --set 900 120 10
ipvsadm -L --timeout > /tmp/ipvsadm_timeout_new
diff /tmp/ipvsadm_timeout_old /tmp/ipvsadm_timeout_new
关于OOS的批量操作实例介绍,请参见批量操作实例。
后续步骤
升级完成后,您可以对CoreDNS进行优化,合理配置CoreDNS。具体操作,请参见合理配置CoreDNS。