混合雲節點池如通過雲上CoreDNS解析網域名稱,頻繁的訪問會加重專線負載,還可能出現因專線不穩定導致的網域名稱解析失敗,配置NodeLocal DNSCache可減少這些問題的影響。
工作原理
NodeLocal DNSCache在每個節點上運行DNS緩衝代理。節點上Pod的DNS請求會優先由本機快取處理,僅在緩衝未命中時,才會通過專線回源到雲端的CoreDNS服務。這種架構帶來了兩個優勢:
絕大多數DNS查詢在本地完成,減少了專線的流量負載。
專線網路異常時,已緩衝的網域名稱解析不受影響。
NodeLocal DNSCache首次解析某個網域名稱需要回源到CoreDNS Server,如果此時遇到專線網路異常,會導致網域名稱解析失敗。
專線網路異常時,快取資料無法即時更新。
適用範圍
已建立ACK託管叢集Pro版,且滿足以下條件:
ACK託管叢集Pro版所在的VPC,已打通跨雲網路。
ACK託管叢集Pro版版本為1.33及以上。
使用混合雲節點池時,同時保有ECS節點,用於部署部分ACK管控組件(建議使用3個及以上ECS節點以保證高可用)。
操作步驟
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理。
在網路頁簽中找到ACK NodeLocal DNSCache卡片,單擊安裝,在彈出的對話方塊中單擊確認。
在左側導覽列選擇,然後在上方命名空間中選擇kube-system。
編輯名為
node-local-dns的ConfigMap,在其中添加prefetch 10和serve_stale配置,為組件開啟預熱、取和服務保持的能力:升級NodeLocal DNSCache組件後,這些配置項將被覆蓋,請重新設定。
apiVersion: v1 data: Corefile: | .:53 { errors cache { ... prefetch 1 30s 10% # 預取 serve_stale 1h immediate # 服務保持 } ... } kind: ConfigMap metadata: ...prefetch 1 30s 10%:緩衝的預取配置。當一個網域名稱在30秒內被請求超過1次時,在其條目緩衝到期前的最後10%時間內,自動在後台更新該條目。serve_stale 1h immediate:配置緩衝到期後的服務保持策略。緩衝到期1小時內仍可以使用到期的緩衝提供網域名稱解析;到期緩衝重新整理策略為immediate,表示命中到期緩衝時,會立即向用戶端返回到期條目,然後再向上遊DNS伺服器請求最新的條目。