Host-Computer kann vom Pod im Kubernetes-Cluster nicht erreicht werden

Host-Computer kann vom Pod im Kubernetes-Cluster nicht erreicht werden

Ich habe 1 Master- und 1 Worker-Kubernetes-Cluster-Setup mit Kubeadm auf einer Fedora-Linux-KVM-Virtualisierungsumgebung mit Pod-CIDR-Bereich – 10.244.0.0/16. Ich verwende die Flannel-Netzwerkrichtlinie.

Masterknoten: Hostname – Fedkubemaster-IP-Adresse – 192.168.122.161. Gearbeiteter Knoten: Hostname – Fedkubenode-IP-Adresse – 192.168.122.27 (HINWEIS – Die FQDNs meines Hosts sind nicht über DNS auflösbar.)

$ kubectl get nodes -o wide
NAME            STATUS   ROLES                  AGE     VERSION   INTERNAL-IP       EXTERNAL-IP   OS-IMAGE                                KERNEL-VERSION            CONTAINER-RUNTIME
fedkubemaster   Ready    control-plane,master   2d20h   v1.23.3   192.168.122.161   <none>        Fedora Linux 35 (Workstation Edition)   5.15.16-200.fc35.x86_64   docker://20.10.12
fedkubenode     Ready    <none>                 2d6h    v1.23.3   192.168.122.27    <none>        Fedora Linux 35 (Workstation Edition)   5.15.16-200.fc35.x86_64   docker://20.10.12

Hier ist meine Route vom Masterknoten zum Workerknoten

[admin@fedkubemaster ~]$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.122.1   0.0.0.0         UG    100    0        0 enp1s0
10.244.0.0      0.0.0.0         255.255.255.0   U     0      0        0 cni0
10.244.1.0      10.244.1.0      255.255.255.0   UG    0      0        0 flannel.1
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-25b1faebd814
192.168.122.0   0.0.0.0         255.255.255.0   U     100    0        0 enp1s0
[admin@fedkubenode ~]$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.122.1   0.0.0.0         UG    100    0        0 enp1s0
10.244.0.0      10.244.0.0      255.255.255.0   UG    0      0        0 flannel.1
10.244.1.0      0.0.0.0         255.255.255.0   U     0      0        0 cni0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.122.0   0.0.0.0         255.255.255.0   U     100    0        0 enp1s0

Ich verwende diese DNSUtil-Pod-YML-Definition zum Testen meiner Konnektivität zu meinen Host-Rechnern.

apiVersion: v1
kind: Pod
metadata:
  name: dnsutils
  namespace: default
spec:
  containers:
  - name: dnsutils
    image: k8s.gcr.io/e2e-test-images/jessie-dnsutils:1.3
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always

Hier ist die Ausgabe meiner IP-Adresse und IP-Route aus dem DNSUtils-Pod.

root@dnsutils:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default 
    link/ether 7a:50:37:bc:4b:45 brd ff:ff:ff:ff:ff:ff
    inet 10.244.1.2/24 brd 10.244.1.255 scope global eth0
       valid_lft forever preferred_lft forever
root@dnsutils:/# 
root@dnsutils:/# ip route show
default via 10.244.1.1 dev eth0 
10.244.0.0/16 via 10.244.1.1 dev eth0 
10.244.1.0/24 dev eth0  proto kernel  scope link  src 10.244.1.2 

Ich versuche, einen nslookup und einen Ping an den FQDN meiner Host-Rechner zu senden, aber es funktioniert nicht. Dann habe ich versucht, einen Ping mit der jeweiligen IP-Adresse zu senden, wobei der Masterknoten die Ausgabe als „Paket gefiltert“ anzeigt und der Worker-Knoten mit der IP-Adresse antworten kann.

root@dnsutils:/# nslookup fedkubemaster
;; connection timed out; no servers could be reached

root@dnsutils:/# nslookup fedkubenode  
;; connection timed out; no servers could be reached
root@dnsutils:/# ping fedkubemaster
ping: unknown host fedkubemaster
root@dnsutils:/# ping fedkubenode  
ping: unknown host fedkubenode
root@dnsutils:/# ping 192.168.122.161
PING 192.168.122.161 (192.168.122.161) 56(84) bytes of data.
From 10.244.1.1 icmp_seq=1 Packet filtered
From 10.244.1.1 icmp_seq=2 Packet filtered
^C
--- 192.168.122.161 ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1013ms

root@dnsutils:/# ping 192.168.122.27 
PING 192.168.122.27 (192.168.122.27) 56(84) bytes of data.
64 bytes from 192.168.122.27: icmp_seq=1 ttl=64 time=0.286 ms
64 bytes from 192.168.122.27: icmp_seq=2 ttl=64 time=0.145 ms

Das Problem ist, dass ich möchte, dass der FQDN meiner Host-Maschinen innerhalb des Pods auflösbar ist, aber ich weiß nicht, wie ich das beheben kann. Es scheint, als gäbe es keine Möglichkeit, meinen Host-FQDN innerhalb des Pods aufzulösen, was sich auch in den CoredNS-Protokollen widerspiegelt. Hier ist der Fehler.

[admin@fedkubemaster networkutils]$ kubectl logs -f coredns-64897985d-8skq2 -n kube-system
.:53
[INFO] plugin/reload: Running configuration MD5 = db32ca3650231d74073ff4cf814959a7
CoreDNS-1.8.6
linux/amd64, go1.17.1, 13a9191
[ERROR] plugin/errors: 2 2603559064493035223.1593267795798361043. HINFO: read udp 10.244.0.2:38440->192.168.122.1:53: read: no route to host
[ERROR] plugin/errors: 2 2603559064493035223.1593267795798361043. HINFO: read udp 10.244.0.2:34275->192.168.122.1:53: read: no route to host

Ich versuche herauszufinden, ob es eine Möglichkeit gibt, die Route standardmäßig zu den Pods hinzuzufügen, kenne mich damit aber nicht so gut aus, um das Problem zu beheben.

Bitte machen Sie Vorschläge. Lassen Sie mich wissen, wenn Sie weitere Einzelheiten benötigen.

Danke, Sudhir

Antwort1

Ich konnte mein Problem lösen, indem ich den Firewall-Dienst sowohl auf dem Master- als auch auf dem Worker-Computer vorübergehend deaktivierte.

[admin@fedkubemaster ~]$ sudo systemctl stop firewalld.service
[admin@fedkubemaster ~]$ sudo systemctl disable firewalld.service

[admin@fedkubenode ~]$ sudo systemctl stop firewalld.service
[admin@fedkubenode ~]$ sudo systemctl disable firewalld.service

Aber die Sache, die ich noch verstehen muss, ist, warum, obwohl alleErforderliche Portsgemäß der Kubernetes-Dokumentation wurden sie aktiviert, warum verursachte dies dieses Problem.

verwandte Informationen