
Tengo una configuración de clúster de Kubernetes de 1 maestro y 1 trabajador usando kubeadm en el entorno de virtualización KVM de Fedora Linux con rango de pod cidr: 10.244.0.0/16. Uso de la política de networking de franela.
Nodo maestro: nombre de host - dirección IP de Fedkubemaster - 192.168.122.161 Nodo trabajado: nombre de host - dirección IP de Fedkubenode - 192.168.122.27 (NOTA: los FQDN de mi host no se pueden resolver mediante DNS)
$ 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
Aquí está mi ruta desde el nodo maestro, el nodo trabajador
[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
Estoy usando esta definición de dnsutil pod yml para probar mi conectividad con mis máquinas host.
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
Aquí está mi dirección IP y la ruta IP que muestran el resultado desde el módulo dnsutils.
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
Estoy intentando hacer una búsqueda y hacer ping al FQDN de mi máquina host y no se resuelve. Luego intenté hacer ping con su dirección IP respectiva en la que el nodo maestro muestra la salida como paquete filtrado y el nodo trabajador puede responder con la dirección IP.
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
El problema es que quiero que el FQDN de mis máquinas host se pueda resolver desde el Pod, pero no puedo entender cómo puedo solucionarlo. Parece que no hay una ruta para resolver el FQDN de mi host desde el pod, lo que también se refleja en los registros de coredns. Aquí está el error.
[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
Estoy tratando de averiguar si hay alguna forma de agregar la ruta a los pods de forma predeterminada, pero no estoy tan familiarizado con ellos para solucionarlo.
Por favor recomiende. Avíseme si se requieren otros detalles.
gracias sudhir
Respuesta1
Pude resolver mi problema deshabilitando temporalmente el servicio de firewall tanto en el maestro como en el trabajador.
[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
Pero lo que todavía necesito entender es por qué a pesar de que todos lospuertos requeridosSegún la documentación de Kubernetes, se habilitó el motivo por el que estaba causando este problema.