1、部署CoreDNS(K8s版本为1.21.0)
cd /opt
https://github.com/coredns/deployment/archive/refs/heads/master.ziphttps://github.com/coredns/deployment/archive/refs/heads/master.zipwget https://github.com/coredns/deployment/archive/refs/heads/master.zip
解压后进入目录
cd deployment-master/kubernetes
cp coredns.yaml.sed coredns.yaml
修改coredns.yaml文件中的 CLUSTER_DOMAIN 为shuai.local
UPSTREAMNAMESERVER 为 /etc/resolv.conf 或者是233.6.6.6
删掉STUBDOMAINS这个字段,否则会报错,coredns的容器会一直无法启动
CLUSTER_DNS_IP 为 10.200.10.2 (这个地址为安装kubernets的时候的设定的SERVICE_CIDR的第二个地址 ,我当时设置的是10.200.10.0/24,所以第二个地址为10.200.10.2,建议设置16位的地址)
还可以对cpu和memory进行限制 cpu可以写核,也可以写毫核
2核=2000m 可以写cpu:2 也可以写cpu:2000
yaml文件更改完成后,部署coredns
# kubectl apply -f coredns.yaml
检查pod是否启动完成
# kubectl get pod -A
可以发现coredns已经正常启动,此时进入一个新创建的pod内就可以解析域名了。
如果这个coredns的pod不能正常启动,就要使用下面的命令来查看报错信息
# kubectl descirbe pod coredns的NAME -n kube-system
进入pod后查看/etc/resolv.conf
如果nameserver不是10.200.10.2,而是169.254.20.10,那么就说明kubelet安装时指定的kubelet的local dns地址是这个,需要进入kubelet的配置文件进行修改/var/lib/kubelet/config.yaml
将这个文件中的clusterDNS改为10.200.10.2即可。
注意,需要在每个node节点上都修改kubelet的配置,然后重启kubelet服务。
其实最好的还是在安装kubelet之前确认一下配置文件中的配置最好。
修改之后就可以正常进行解析和ping了。