k 8 s【coredns解析問題解析解決】
10166 ワード
に質問
以上のように、
ぶんせき
以上の試験により証明する問題は
解決する
既存の
修正
最新の
入るまで解析できなかった
新たに作成する
最終試験は、新しい
[root@master busybox]# kubectl get pod -nkube-system -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
coredns-5c98db65d4-8zjps 1/1 Running 1 2d23h 10.244.0.13 master <none> <none>
coredns-5c98db65d4-d2kth 1/1 Running 1 2d23h 10.244.0.14 master <none> <none>
[root@master busybox]# kubectl get pod -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
curl-6bf6db5c4f-pjld9 1/1 Running 1 3d 10.244.1.2 node2 <none> <none>
gateway-99b655cc6-np685 1/1 Running 0 44s 10.244.0.54 master <none> <none>
test-post-start1 1/1 Running 0 115s 10.244.1.6 node2 <none> <none>
test-post-start2 1/1 Running 0 115s 10.244.0.52 master <none> <none>
test-post-start3 1/1 Running 0 115s 10.244.0.53 master <none> <none>
以上のように、
master
ノード上に配置するpod
は、gateway.default.svc.cluster.local
ドメイン名を解析することはできないが、node2
に配置することは、解析可能であり、curl-6bf6db5c4f-pjld9
、test-post-start1
は、nslookup
によって解析可能である.#
/ # nslookup gateway
nslookup: can't resolve '(null)': Name does not resolve
nslookup: can't resolve 'gateway': Try again
/ # nslookup gateway.default.svc.cluster.local
Server: 10.244.0.10
Address 1: 10.244.0.10
nslookup: can't resolve 'gateway.default.svc.cluster.local'
ぶんせき
master
ノードpod
に入り、coredns pod ip
解析テストに直接合格します.kubectl exec -it test-post-start2 sh
/ # nslookup gateway.default.svc.cluster.local 10.244.0.13
Server: 10.244.0.13
Address 1: 10.244.0.13 10-244-0-13.kube-dns.kube-system.svc.cluster.local
Name: gateway.default.svc.cluster.local
Address 1: 10.244.106.29 gateway.default.svc.cluster.local
coredns pod ip
の解析によって直接成功し、coredns
のサービス自体に問題がないことを証明した.dns clusterIP
を参照してください.[root@master ~]# kubectl get svc -nkube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.244.0.10 <none> 53/UDP,53/TCP,9153/TCP 21m
# clusterIP
nslookup gateway.default.svc.cluster.local 10.244.0.10
以上の試験により証明する問題は
coredns service
に現れた.解決する
既存の
kube-dns service
構成のエクスポートkubectl get svc -nkube-system kube-dns -oyaml > kube-dns-svc.yaml
修正
kube-dns-svc.yaml
.apiVersion: v1
kind: Service
metadata:
annotations:
prometheus.io/port: "9153"
prometheus.io/scrape: "true"
labels:
k8s-app: kube-dns
kubernetes.io/cluster-service: "true"
kubernetes.io/name: KubeDNS
name: kube-dns
namespace: kube-system
spec:
ports:
- name: dns
port: 53
protocol: UDP
targetPort: 53
- name: dns-tcp
port: 53
protocol: TCP
targetPort: 53
- name: metrics
port: 9153
protocol: TCP
targetPort: 9153
selector:
k8s-app: kube-dns
sessionAffinity: None
type: ClusterIP
kubectl apply -f kube-dns-svc.yaml
最新の
coredns clusterIP
を参照してください.現在は10.244.47.231
です.[root@master ~]# kubectl get svc -nkube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.244.47.231 <none> 53/UDP,53/TCP,9153/TCP 21m
入るまで解析できなかった
pod
でテストし、新しいclusterIP
に問題がないことを証明した.nslookup gateway.default.svc.cluster.local 10.244.47.231
新たに作成する
kubelet --clusterDNS
のうちpod /etc/resolv.conf
が新たなnameserver
であるように、coredns clusterIP
を修正する.# kubelet
vim /var/lib/kubelet/config.yaml
# clusterDNS
clusterDNS:
- 10.244.47.231
# kubelet , k8s
systemctl restart kubelet.service
最終試験は、新しい
pod
のうち/etc/resolv.conf
である.解析は問題ありません./ # cat /etc/resolv.conf
nameserver 10.244.47.231
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5