Microk8s 클러스터의 DNS 확인 문제

Microk8s 클러스터의 DNS 확인 문제

내 microk8s 클러스터가 centos8 vm에서 실행 중이고 내 포드의 DNS 확인에 몇 가지 문제가 있습니다. 네임서버가 있고 x.x.x.101x.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

무슨 일이 일어나고 있는지 전혀 모르겠습니다 ....

답변1

더 나은 가시성을 위해 커뮤니티 위키 답변을 게시했습니다. 처럼타고르댓글에서 문제가 해결되었으며 외부 DNS와 관련이 있다고 언급했습니다.

DNS가 작동하는 완전히 통제 가능한 인프라에서 클러스터를 재구축합니다.

호스트에서 iptables와 방화벽을 비활성화하고 coredns 구성을 통해 수행할 수 있는지 확인하십시오.

DNS에 대한 자세한 내용은 공식 사이트에서 찾을 수 있습니다.선적 서류 비치.

관련 정보