《企业级云原生白皮书项目实战》——第三章 容器——3.2 业务部署——3.2.10 服务发现(2) https://developer.aliyun.com/article/1229230?groupCode=supportservice
配置CoreDNS优雅退出
说明CoreDNS刷新配置过程中,可能会占用额外内存。修改CoreDNS配置项后,请观察Pod运行状态,如果出现Pod内存不足的情况,请及时修改CoreDNS Deployment中容器内存限制,建议将内存调整至2 GB。
�控制台操作方式
A.登录容器服务管理控制台。
B.在控制台左侧导航栏中,单击集群。
C.在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
D.在集群管理页左侧导航栏中,选择配置管理 > 配置项。
E.在kube-system命名空间下,单击配置项coredns右侧的YAML编辑。
F.参考下列的YAML文件,保证health插件开启,并调整lameduck参数为15s,然后单击确定。
.:53 { errors #health插件在不同的CoreDNS版本中可能有不同的设置情形。 #情形一:默认未启用health插件。 #情形二:默认启用health插件,但未设置lameduck时间。 health #情形三:默认启用health插件,设置了lameduck时间为5s。 health { lameduck 5s } #对于以上三种情形,应统一修改成以下,调整lameduck参数为15s。 health { lameduck 15s } #其它插件不需要修改,此处省略。 }
配置Forward插件与上游VPC DNS服务器的默认协议
NodeLocal DNSCache采用TCP协议与CoreDNS进行通信,CoreDNS会根据请求来源使用的协议与上游DNS服务器进行通信。因此默认情况下,来自业务容器的集群外部域名解析请求会依次经过NodeLocal DNSCache、CoreDNS,最终以TCP协议请求VPC内DNS服务器,即ECS上默认配置的100.100.2.136和100.100.2.13两个 IP。
VPC内DNS服务器对TCP协议支持有限,如果您使用了NodeLocal DNSCache,您需要修改CoreDNS配置,让其总是优先采用UDP协议与上游DNS服务器进行通信,避免解析异常。建议您使用以下方式修改CoreDNS配置文件,即修改命名空间kube-system下名为coredns的Deployment。具体操作,请参见管理配置项。在forward插件中指定请求上游的协议为perfer_udp,修改之后CoreDNS会优先使用UDP协议与上游通信。修改方式如下所示:
#修改前 forward . /etc/resolv.conf #修改后 forward . /etc/resolv.conf { prefer_udp }