CoreDNS解析異常記錄
異常情況:叢集是用kubespray部署的4個worknode,coredns預設部署2個deployment。今天發現部署了coredns的node上的pod正常解析內部域名,而另外2個未執行coredns的node卻無法解析。
配置檔案:
下圖中我們看到coredns2個pod分別在node1與node2上,只要分配到這2節點上的deployment都可以正常解析。
其他節點無法解析:
處理過程:
正常來說所有的pod都是通過coredns來進行叢集內域名解析的,我也搞不清楚為啥其他兩個node沒有跑coredns則就無法解析後面再研究。所以我臨時的解決方法是擴容coredns讓每個node都跑。
1、修改 ConfigMap 中的 dns-autoscaler(coredns自動擴容保證高可用)
kubectl edit configmap dns-autoscaler --namespace=kube-system
2、修改key:linear
- coresPerReplica: 按照核心數目來計算副本集(replicas = cores / coresPerReplica)
- nodesPerReplica:按照節點數目來計算副本集(replicas = nodes / nodesPerReplica)
- min:最小副本數(預設為2,我先有4個節點改為4)
- max:最大副本數
- preventSinglePointFailure:防止單點故障
公式
replicas = max( ceil( cores × 1/coresPerReplica ) , ceil( nodes × 1/nodesPerReplica ) )