域名服务器从k8s访问不稳定,k8s与dns--coredns的一些实战经验

coredns简介

安装新版本k8s,coredns已经成为默认dns了。之前是kube-dns。coredns是一个灵活,可扩展的DNS服务器,可以作为Kubernetes集群DNS。与Kubernetes一样,CoreDNS项目由CNCF主持。但是在实际使用中,需要一些注意的地方。

增加应用的反亲和性,防止coredns调度到一台主机上

coredns 所需要的资源非常小,所以很容易调度到一台主机上。coredns是一个系统组件,我们应该尽量让coredns分散部署,增强其可用性。故在deployment的yaml中增加如下设置:

affinity:

podAntiAffinity:

requiredDuringSchedulingIgnoredDuringExecution:

- labelSelector:

matchExpressions:

- key: app

operator: In

values:

- coredns

topologyKey: kubernetes.io/hostname

这里利用到了k8s的一个属性反亲和性。

选择合理的coredns 伸缩

很多k8s部署,默认是部署两个coredns 实例,但是当我们集群逐步变大的时候,2个实例是不能满足需求的。因而coredns的伸缩就非常重要了。切记coredns 千万不要用hpa来弹性伸缩coredns。频繁的伸缩,会导致业务很多dns解析失败的情况。需要用cluster-proportional-autoscaler组件,我一般是选择根据node节点数来伸缩dns。具体的伸缩策略大家可以选择。

如何利用coredn

你可能感兴趣的:(域名服务器从k8s访问不稳定)