BlazingDNS基于內核可編程技術提供DNS緩存加速能力,可以顯著提升DNS服務發現的穩定性和性能。本文介紹如何管理BlazingDNS組件。
前提條件
已為ACK Serverless集群安裝ACK Virtual Node組件,且該組件版本已升級至2.10.0-rc.10及以上。具體操作,請參見管理組件。
注意事項
目前暫不支持集群運行中的存量Pod開啟DNS緩存加速。
使用限制
目前僅支持在ACK Serverless集群安裝,提升您運行在彈性容器實例上業務的DNS解析性能。
BlazingDNS功能上存在以下限制:
該組件僅支持常見的A/AAAA/CNAME記錄類型的DNS查詢。
該組件僅支持基于UDP協議的DNS查詢。
該組件僅支持響應報文小于等于256字節的DNS查詢。
BlazingDNS簡介
BlazingDNS是一款DNS緩存軟件,基于內核可編程技術實現,具有無侵入、低開銷、高性能等特點。業務應用容器Pod無需修改DNSConfig中DNS服務器指向即可獲得DNS加速效果。
如下圖所示,開啟BlazingDNS后,ECI實例中發起的DNS查詢請求即可被緩存加速,您無需進行額外操作。
開啟BlazingDNS
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇
。在組件管理頁面,單擊網絡頁簽,找到BlazingDNS組件,單擊BlazingDNS組件右側的安裝,然后根據頁面提示完成組件安裝。
安裝BlazingDNS組件后,會在
kube-system
命名空間中創建名為blazing-dns
的配置文件,請勿對其進行修改刪除。安裝BlazingDNS組件后,新創建的ECI Pod會被默認開啟DNS緩存加速。您可以通過檢查Pod Annotations中
k8s.aliyun.com/dns-cache-enable
布爾值的情況來確認Pod是否成功開啟緩存加速。
相關操作
升級BlazingDNS
在組件管理頁面,單擊網絡頁簽,找到BlazingDNS組件,單擊BlazingDNS組件右側的升級,然后根據頁面提示完成組件升級。升級BlazingDNS可以獲得最佳DNS緩存加速效果。
卸載BlazingDNS
卸載BlazingDNS組件前,您必須確保所有運行中的Pod沒有開啟BlazingDNS。
執行如下命令,查看所有運行中的Pod是否開啟BlazingDNS。
查找當前集群內開啟BlazingDNS的Pod名稱。
kubectl get pod -o=jsonpath='{.items[?(@.metadata.annotations.k8s\.aliyun\.com/dns-cache-enable=="true")].metadata.name}' -A
如果當前節點已經安裝jq,可以使用以下命令同時輸出Namespace和Pod名稱。
kubectl get pod -o=jsonpath='{.items[?(@.metadata.annotations.k8s\.aliyun\.com/dns-cache-enable=="true")]}' | jq -rc ".metadata.namespace,.metadata.name"
查看返回結果是否為空。
如果返回結果非空,請參考以下步驟先清理所有依賴BlazingDNS的Pod,直到所有Pod不再依賴BlazingDNS,然后再卸載組件。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在配置項頁面選擇
kube-system
命名空間,然后單擊blazing-dns
所在行的編輯,在彈出的對話框中修改config
字段的值為enabled: false
。刪除重建上述命令中輸出的所有Pod,直到運行命令后返回結果為空。
在組件管理頁面,單擊網絡頁簽,找到BlazingDNS組件,單擊BlazingDNS組件右側的卸載,然后根據頁面提示完成組件卸載。
如果返回結果為空,在組件管理頁面,單擊網絡頁簽,找到BlazingDNS組件,單擊BlazingDNS組件右側的卸載,然后根據頁面提示完成組件卸載。