為了提升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手動升級。