내 microk8s 클러스터가 centos8 vm에서 실행 중이고 내 포드의 DNS 확인에 몇 가지 문제가 있습니다. 네임서버가 있고 x.x.x.101
둘 x.x.x.100
다 포드 내에서 핑할 수 있으며 나도 핑할 수 있습니다.8.8.8.8
포드 내에서 nslookup은 다음과 같습니다.
root@debug-7857894f66-mnklp:/# nslookup kubernetes.default
Server: 10.152.183.10
Address: 10.152.183.10#53
Name: kubernetes.default.svc.cluster.local
Address: 10.152.183.1
coredns 구성은 다음과 같습니다.
apiVersion: v1
data:
Corefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n
\ log . {\n class error\n }\n kubernetes cluster.local in-addr.arpa
ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n }\n
\ prometheus :9153\n forward . x.x.x.101 x.x.x.100 \n cache 30\n
\ loop\n reload\n loadbalance\n}\n"
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","data":{"Corefile":".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n log . {\n class error\n }\n kubernetes cluster.local in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n }\n prometheus :9153\n forward . x.x.x.101 x.x.x.100 \n cache 30\n loop\n reload\n loadbalance\n}\n"},"kind":"ConfigMap","metadata":{"annotations":{},"labels":{"addonmanager.kubernetes.io/mode":"EnsureExists","k8s-app":"kube-dns"},"name":"coredns","namespace":"kube-system"}}
creationTimestamp: "2021-08-31T08:57:27Z"
labels:
addonmanager.kubernetes.io/mode: EnsureExists
k8s-app: kube-dns
name: coredns
namespace: kube-system
resourceVersion: "2420090"
selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
uid: 471b258a-253d-4b51-aaf7-7e934ab300d1
내 포드의 내용 /etc/resolv.conf
은 다음과 같습니다.
search default.svc.cluster.local svc.cluster.local cluster.local xxx.xxxxx
nameserver 10.152.183.10
options ndots:5
내 kube-dns의 로그를 보면 $ microk8s kubectl logs --namespace=kube-system -l k8s-app=kube-dns
다음과 같은 응답을 얻습니다.
[INFO] 10.1.107.105:47549 - 5288 "AAAA IN www.google.com. udp 36 false 512" NOERROR - 0 0.000256103s
[ERROR] plugin/errors: 2 www.google.com. AAAA: read udp 10.1.107.127:51486->x.x.x.101:53: read: no route to host
DNS 서비스가 작동 중입니다:
$ microk8s kubectl get svc --namespace=kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
[...]
kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP,9153/TCP 21d
DNS 엔드포인트가 노출됩니다.
$ microk8s kubectl get endpoints kube-dns --namespace=kube-system
NAME ENDPOINTS AGE
kube-dns 10.1.107.127:53,10.1.107.127:53,10.1.107.127:9153 21d
클러스터가 실행 중인 가상 머신은 문제 없이 동일한 이름 서버를 사용하고 있습니다. 이것이 관리자를 귀찮게 해야 하는 문제입니까, 아니면 잘못 구성된 것이 누락된 것입니까?
편집하다:
좋습니다. 좀 더 시도해 보았는데 구성 파일을 잘못 생성한 것과 관련이 있다고 생각되는 이상한 동작이 있습니다 coredns
. 클러스터를 완전히 재설정하고 다시 시도했지만 8.8.8.8 또는 8.8.4.4를 DNS 서버로 사용할 때에도 여전히 동일한 오류가 발생했습니다. 그러나 다음 명령을 실행하면 $ microk8s enable dns:x.x.x.101,x.x.x.100
마침내 작동합니다. 그런 다음 이를 구성하려고 시도했고 $ microk8s kubectl -n kube-system edit configmap/coredns
작동이 중지된 구성에 두 DNS를 모두 추가하면 다시 오류가 발생합니다. [ERROR] plugin/errors: 2 www.google.com. AAAA: read udp 10.1.107.127:51486->x.x.x.101:53: read: no route to host
자동으로 올바르게 설정된 구성에 어떤 문제가 있습니까 $ microk8s enable dns:x.x.x.101,x.x.x.100
?
두 번째 편집
여기에서 dig를 사용하려고 했는데 DNS 서버를 지정해도 작동하지 않습니다. 핑은 통과할 수 있는데 시스템에 의해 DNS가 차단된 이유가 있나요? 이 문제는 에서만 발생합니다 microk8s cluster
. 호스트 시스템은 fin docker가 정상적으로 실행됩니다. 출력물은 다음과 같습니다. 이는 포드 내에서 가져온 것입니다.
root@debug-865cb7fb4-wfhw4:/# dig www.google.com
; <<>> DiG 9.11.5-P4-5.1+deb10u5-Debian <<>> www.google.com
;; global options: +cmd
;; connection timed out; no servers could be reached
root@debug-865cb7fb4-wfhw4:/# dig @x.x.x.101 www.google.com
; <<>> DiG 9.11.5-P4-5.1+deb10u5-Debian <<>> @x.x.x.101 www.google.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
root@debug-865cb7fb4-wfhw4:/# dig @8.8.8.8 www.google.com
; <<>> DiG 9.11.5-P4-5.1+deb10u5-Debian <<>> @8.8.8.8 www.google.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
root@debug-865cb7fb4-wfhw4:/# dig @x.x.x.100 www.google.com
; <<>> DiG 9.11.5-P4-5.1+deb10u5-Debian <<>> @x.x.x.100 www.google.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
이는 호스트 시스템에서 가져온 것입니다.
$ dig www.google.com
; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8_3.1 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25735
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 113 IN A 142.250.185.228
;; Query time: 0 msec
;; SERVER: x.x.x.101#53(x.x.x.101)
;; WHEN: Fri Oct 08 15:10:21 CEST 2021
;; MSG SIZE rcvd: 59
$ dig @8.8.8.8 www.google.com
; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8_3.1 <<>> @8.8.8.8 www.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3924
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 300 IN A 142.250.185.228
;; Query time: 34 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Oct 08 15:10:49 CEST 2021
;; MSG SIZE rcvd: 59
$ dig @x.x.x.101 www.google.com
; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8_3.1 <<>> @x.x.x.101 www.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60305
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 70 IN A 142.250.185.228
;; Query time: 0 msec
;; SERVER: x.x.x.101#53(x.x.x.101)
;; WHEN: Fri Oct 08 15:11:04 CEST 2021
;; MSG SIZE rcvd: 59
무슨 일이 일어나고 있는지 전혀 모르겠습니다 ....