为了提升ACK集群内域名解析服务的稳定性,建议您升级集群的CoreDNS至最新版本。本文介绍如何升级CoreDNS的版本。
背景信息
低于1.7.0版本的CoreDNS存在以下问题,可能会影响ACK集群内域名解析服务的稳定性:
- CoreDNS与APIServer连通性异常(例如APIServer重启、APIServer迁移、网络抖动)时,CoreDNS会因错误日志写入失败导致容器重启。更多信息,请参见Set klog's logtostderr flag。
- CoreDNS启动时会占用额外内存,默认采用的Memory Limit在较大规模集群下可能触发OOM(OutOfMemory)问题,严重时可能导致CoreDNS Pod反复重启无法自动恢复。更多信息,请参见CoreDNS uses a lot memory during initialization phase。
- CoreDNS存在若干可能影响Headless Service域名、集群外部域名解析的问题。更多信息,请参见plugin/kubernetes: handle tombstones in default processor和Data is not synced when CoreDNS reconnects to kubernetes api server after protracted disconnection。
- 在集群节点异常情况下,部分旧版本CoreDNS默认采用的容忍策略可能会导致CoreDNS Pod无法被驱逐,继而导致域名解析异常。
- 关于升级流程的具体说明和业务影响,请参见升级方式。
升级方式
升级CoreDNS前,请仔细阅读Core DNS变更记录和Core DNS社区介绍,了解不同版本间的差异和注意事项。
CoreDNS支持两种方式升级:自动升级和手动升级,具体的使用场景如下:
- 自动升级CoreDNS:如果您在ACK控制台的组件管理页面CoreDNS组件上可以看到升级按钮,说明该版本的CoreDNS组件支持自动升级。具体操作,请参见CoreDNS自动升级。
- 手动升级CoreDNS:如果您在ACK控制台的组件管理页面CoreDNS组件上无法看到升级按钮,且当前组件版本较低,说明您的Kubernetes集群版本过低,已不再维护。由于过低版本的Kubernetes集群不支持升级到最新的CoreDNS,针对这种情况,您需要手动升级CoreDNS至1.6.2版本后,再升级Kubernetes集群版本,然后按照自动升级方案将CoreDNS升级到最新版本。关于手动升级的具体操作,请参见CoreDNS手动升级。