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 ) )