当前位置: 首页 > Linux

k8s集群部署时安装NodeLocalDNSCache后,想删除该服务,但新建的POD仍会获取DNS缓存地址

时间:2023-04-07 00:41:34 Linux

问题描述:本环境k8s版本为:v1.22.2。安装NodeLocalDNSCache服务是为了加快各节点POD的DNS解析速度,但是由于某些原因需要删除DNSCache服务。使用部署NodeLocalDNSCache的yaml文件删除DnsCache相关的POD后,新创建的POD仍会获取之前配置的NodeLocalDNSCache的地址。结果删除了NodeLocalDNSCache相关的POD后,无法正常解析域名。问题现象:删除NodeLocalDNSCache相关的POD后,仍然获取到169.254.20.10地址,导致无法正常解析集群中的域名。root@master01:~#kubectlrun--iamge=busyboxbusybox--tail-f/etc/hostsroot@master01:~#kubectlexec-itbusybox--/bin/sh/#cat/etc/resolv.confnameserver169.254。20.10searchdefault.svc.cluster.localsvc.cluster.localcluster.localoptionsndots:5解决方法:查阅资料发现在集群中新建POD获取的DNS地址由kubelet控制在每个节点节点。修改各节点kubelet相关配置文件(kubelet配置文件位置如图)确定coredns服务地址为10.100.0.2.root@master01:~#kubectlgetsvc-ANAMESPACENAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEdefaultkubernetesClusterIP10.100.0.1443/TCP5h38mkube-systemkube-dnsClusterIP10.100.0.253/UDP,53/TCP,9153/TCP5h32mkube-systemmetrics-serverClusterIP10.100.181.164/TCP3h12m将kubelet配置文件中的clusterDNS字段修改为coredns服务的地址。root@node02:~#cat/var/lib/kubelet/config.yamlkind:KubeletConfigurationapiVersion:kubelet.config.k8s.io/v1beta1address:192.168.10.102authentication:anonymous:enabled:falsewebhook:cacheTTL:2m0senabled:truex509:clientCAFile:/etc/kubernetes/ssl/ca.pemauthorization:mode:Webhookwebhook:cacheAuthorizedTTL:5m0scacheUnauthorizedTTL:30scgroupDriver:systemdcgroupsPerQOS:trueclusterDNS:-10.100.0.2Restartkubeletroot@node02:~#让我们像上面那样修改systemctlrestart重启kubelet所有节点的kubelet配置文件后,再次新建一个POD测试,发现新建的POD获取到的DNS地址已经是10.100.0.2.ps:本文的操作在我的环境下已经运行成功,如果有什么问题,或者表述不清楚欢迎指正。