開發隨筆記錄——ASP.NET登入儲存Cookies
阿新 • • 發佈:2021-06-28
NodeLocal DNSCache在叢集的上執行一個dnsCache daemonset來提高clusterDNS效能和可靠性。在Kubernetes叢集上的一些測試表明:相比於純coredns方案,nodelocaldns + coredns方案能夠大幅降低DNS查詢timeout的頻次,提升服務穩定性,能夠扛住1倍多的QPS。
本文將介紹如何在ACK叢集上部署node local dns。
部署nodelocaldns
nodelocaldns通過新增iptables規則能夠接收節點上所有發往169.254.20.10
的dns查詢請求,把針對叢集內部域名查詢請求路由到coredns;把叢集外部域名請求直接通過host網路發往叢集外部dns伺服器。
# 下載部署指令碼 $ curl https://node-local-dns.oss-cn-hangzhou.aliyuncs.com/install-nodelocaldns.sh # 部署。確保kubectl能夠連線叢集 $ bash install-nodelocaldns.sh
DNS優化方案的具體實施仍在探索中,該指令碼部署不對叢集現有業務有任何影響,需要使用node local dns的業務容器也需要定製其dnsConfig。
定製業務容器dnsConfig
為了使業務容器能夠使用nodelocaldns,需要將nameserver配置為169.254.20.10
,而不是ClusterDNS。定製dnsConfig有以下幾點需要注意到:
- dnsPolicy: None。不使用ClusterDNS。
- 配置searches,保證叢集內部域名能夠被正常解析。
- 適當降低ndots值。當前ACK叢集ndots值預設為5,降低ndots值有利於加速叢集外部域名訪問。如果業務容器沒有使用帶多個dots的叢集內部域名,建議將值設為2。
apiVersion: v1 kind: Pod metadata: name: alpine namespace: default spec: containers: - image: alpine command: - sleep - "10000" imagePullPolicy: Always name: alpine dnsPolicy: None dnsConfig: nameservers: ["169.254.20.10"] searches: - default.svc.cluster.local - svc.cluster.local - cluster.local options: - name: ndots value: "2"