Puncte:0

Kubernetes: adresa IP a podului este în afara intervalului specificat în --pod-network-cidr

drapel vn

După actualizarea la v1.24.0 (după eliminarea Dockershim), a trebuit să instalez cri-dockerd, apoi am facut urmatoarele:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.0.196

am ales flanel ca plugin de rețea:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Până acum totul a funcționat conform așteptărilor, dar după ce am activat programarea pe nodul principal, m-am alăturat unui nod de lucru și am implementat podurile și serviciile mele, am observat o problemă ciudată de rețea în care NodePort și ClusterIP serviciile nu funcționau între noduri (nicio problemă la utilizarea unui singur nod).

Mai târziu am aflat că podurile primesc adrese IP de la rețeaua docker (172.17.0.*) și nu de la --pod-network-cidr=10.244.0.0/16:

masterzulu@master-zulu:~$ kubectl obține pods --all-namespaces -o wide
SPAȚIUL DE NUMELE NUMELE STAREA PREGĂTITĂ REPORNEAAZĂ VÂRĂ IP NODE          

django-space django-588cb669d4-46b4w 1/1 Alergare 0 3m35s 172.17.0.4 master-zulu
django-space postgres-deployment-b58d5ff94-hs7t4 1/1 Rulează 0 3m35s 172.17.0.5 master-zulu
kube-system coredns-6d4b75cb6d-8gw6c 1/1 Running 0 7m9s 172.17.0.2 master-zulu
kube-system coredns-6d4b75cb6d-nxlq9 1/1 Running 0 7m9s 172.17.0.3 master-zulu

Flannel DaemonSet rulează:

kube-system kube-flannel-ds-tqgvk 1/1 Alergare 0 5m51s 192.168.3.132 master-zulu

și podCIDR este setat:

masterzulu@master-zulu:~$ kubectl nu obține master-zulu -o json | jq '.spec.podCIDR'
„10.244.0.0/24”

Am încercat să adaug --network-plugin=cni semnalizator la configurația de pornire a kubelet, dar primesc o eroare, deoarece acest indicator este eliminat împreună cu dockershim și alte semnalizatoare în v1.24.0.

iată starea lui cri-docker:

â cri-docker.service - Interfață CRI pentru Docker Application Container Engine
     Încărcat: încărcat (/etc/systemd/system/cri-docker.service; activat; prestabilit furnizor: activat)
     Activ: activ (în rulare) din miercuri 25-05-2022 21:36:57 BST; acum 5h 34min
TriggeredBy: â cri-docker.socket
       Documente: https://docs.mirantis.com
   PID principal: 1098 (cri-dockerd)
      Sarcini: 15
     Memorie: 53,4 M
     CGroup: /system.slice/cri-docker.service
             ââ1098 /usr/local/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=

26 mai 01:51:56 master-zulu cri-dockerd[1098]: time="2022-05-26T01:51:56+01:00" level=info msg="Failed to read pod IP from plugin/docker: Nu s-a putut găsi starea rețelei pentru kube-system/coredns-6d4b75cb6d-nxlq9 prin plugin: starea rețelei invalidă pentru"
26 mai 01:51:56 master-zulu cri-dockerd[1098]: time="2022-05-26T01:51:56+01:00" level=info msg="Failed to read pod IP from plugin/docker: Nu s-a putut găsi starea rețelei pentru kube-system/coredns-6d4b75cb6d-nxlq9 prin plugin: starea rețelei invalidă pentru"
26 mai 01:51:56 master-zulu cri-dockerd[1098]: time="2022-05-26T01:51:56+01:00" level=info msg="Failed to read pod IP from plugin/docker: Nu s-a putut găsi starea rețelei pentru kube-system/coredns-6d4b75cb6d-8gw6c prin plugin: starea rețelei nevalidă pentru"
26 mai 01:53:13 master-zulu cri-dockerd[1098]: time="2022-05-26T01:53:13+01:00" level=info msg="Voi încerca să rescrie fișierul de configurare /var /lib/docker/containers/8ee7640d48c129058259b4b7632a0f6173ad8a9e2d5368cf3c9f29d1ea7db13e/resolv.conf ca [server de nume 192.168.168.3.192.
26 mai 01:55:30 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:30+01:00" level=info msg="Voi încerca să rescrie fișierul de configurare /var /lib/docker/containers/f378aff3d077030215ef664d72132b189f8412a8d432e5a554cdbfbb37c3ea19/resolv.conf ca [nameserver 10.96.0.10 opțiuni de căutare] local cluster.
26 mai 01:55:30 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:30+01:00" level=info msg="Failed to read pod IP from plugin/docker: Nu s-a putut găsi starea rețelei pentru django-space/django-588cb669d4-46b4w prin plugin: starea rețelei nevalidă pentru"
26 mai 01:55:31 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:31+01:00" level=info msg="Failed to read pod IP from plugin/docker: Nu s-a putut găsi starea rețelei pentru django-space/django-588cb669d4-46b4w prin plugin: starea rețelei nevalidă pentru"
26 mai 01:55:43 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:43+01:00" level=info msg="Voi încerca să rescrie fișierul de configurare /var /lib/docker/containers/9523255b7991855027185cecbc8420bbe1268fcef21c2ddcb4d76851bce7e3a0/resolv.conf ca [nameserver 10.96.0.10 search django.
26 mai 01:55:43 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:43+01:00" level=info msg="Failed to read pod IP from plugin/docker: Nu s-a putut găsi starea rețelei pentru django-space/postgres-deployment-b58d5ff94-hs7t4 prin plugin: starea rețelei nevalidă pentru"
26 mai 01:55:43 master-zulu cri-dockerd[1098]: time="2022-05-26T01:55:43+01:00" level=info msg="Failed to read pod IP from plugin/docker: Nu s-a putut găsi starea rețelei pentru django-space/postgres-deployment-b58d5ff94-hs7t4 prin plugin: starea rețelei nevalidă pentru"

Stie cineva ce ar trebui sa fac pentru a rezolva aceasta problema?

Actualizați:

cni0 interfața lipsește pe k8s master:

masterzulu@master-zulu:~$ ifconfig -a
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 172.17.0.1 netmask 255.255.0.0 difuzare 172.17.255.255
        inet6 fe80::42:e9ff:fec1:dd1b prefixlen 64 scopeid 0x20<link>
        ether 02:42:e9:c1:dd:1b txqueuelen 0 (Ethernet)
        Pachete RX 5140 octeți 418818 (418,8 KB)
        Erori RX 0 a scăzut 0 depășiri 0 cadru 0
        Pachete TX 5475 octeți 522703 (522,7 KB)
        Erori TX 0 a scăzut 0 depășiri 0 purtător 0 coliziuni 0

enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.0.196 netmask 255.255.255.0 broadcast 192.168.0.255
        inet6 fe80::e808:144d:a0dc:60a6 prefixlen 64 scopeid 0x20<link>
        ether 98:40:bb:3e:f2:1c txqueuelen 1000 (Ethernet)
        Pachete RX 6332 octeți 515688 (515,6 KB)
        Erori RX 0 a scăzut 0 depășiri 0 cadru 0
        Pachete TX 6684 octeți 631167 (631,1 KB)
        Erori TX 0 a scăzut 0 depășiri 0 purtător 0 coliziuni 0

flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450
        inet 10.244.0.0 netmask 255.255.255.255 difuzare 0.0.0.0
        inet6 fe80::494:d8ff:fe1b:4aab prefixlen 64 scopeid 0x20<link>
        ether 06:94:d8:1b:4a:ab txqueuelen 0 (Ethernet)
        Pachete RX 0 octeți 0 (0,0 B)
        Erori RX 0 a scăzut 0 depășiri 0 cadru 0
        Pachete TX 0 octeți 0 (0,0 B)
        Erori TX 0 scăzut 129 depășiri 0 purtător 0 coliziuni 0
Puncte:0
drapel vn

După câteva investigații, am constatat că cri-dockerd serviciului îi lipseau câteva argumente:

CGroup: /system.slice/cri-docker.service
         ââ1098 /usr/local/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=

Le-am adăugat manual la /etc/systemd/system/cri-docker.service:

...
ExecStart=/usr/local/bin/cri-dockerd --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache - -cni-conf-dir=/etc/cni/net.d --pod-infra-container-image=k8s.gcr.io/pause:3.7
...

Serviciu de reîncărcare:

sudo systemctl daemon-reload
sudo systemctl reporniți cri-docker.service

in acest moment cri-dockerd este configurat corect, dar problema persista, ulterior am observat asta /opt/cni/bin este gol (fără pluginuri de rețea container):

masterzulu@master-zulu:~$ sudo /usr/local/bin/cri-dockerd
INFO[0000] Conectarea la docker pe Endpoint unix:///var/run/docker.sock
INFO[0000] Porniți clientul docker cu expirarea cererii 0s
INFO[0000] Modul ac de păr este setat la niciunul
EROARE[0000] Eroare la validarea listei de configurare CNI ({
  "nume": "cbr0",
  "cniVersion": "0.3.1",
  „pluginuri”: [
    {
      "tip": "flanel",
      „delegat”: {
        „hairpinMode”: adevărat,
        „isDefaultGateway”: adevărat
      }
    },
    {
      "type": "portmap",
      „capacități”: {
        „portMappings”: adevărat
      }
    }
  ]
}
): [nu s-a găsit pluginul „portmap” în calea [/opt/cni/bin]]
INFO[0000] Docker cri networking gestionat de pluginul de rețea kubernetes.io/no-op
...
INFO[0000] Setarea cgroupDriver cgroupfs
INFO[0000] Docker cri a primit configurația de rulare &RuntimeConfig{NetworkConfig:&NetworkConfig{PodCidr:,},}
INFO[0000] Pornirea backend-ului GRPC pentru interfața Docker CRI.
INFO[0000] Porniți backend-ul cri-dockerd grpc

Cred că am șters /opt/cni/bin din greșeală, așa că i-am adăugat din nou conținutul (obțineți Ultima lansare):

cd /tmp && mkdir cni-plugins && wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz && cd cni-plugins && tar zxfv ../cni-plugins-linux-amd64-v1.1.1.tgz
sudo cp /tmp/cni-plugins/* /opt/cni/bin/

ls /opt/cni/bin
lățime de bandă punte dhcp firewall flanel gazdă-dispozitiv gazdă-local ipvlan loopback macvlan portmap ptp sbr reglaj static vlan vrf

după repornire cri-docker service, totul începe să funcționeze conform așteptărilor:

masterzulu@master-zulu:~$ kubectl get pods -Ao wide
SPAȚIUL DE NUMELE NUMELE STAREA PREGĂTITĂ REPORNEAAZĂ VÂRĂ IP NODE
django-space django-588cb669d4-4zz7f 1/1 Running 0 11s 10.244.0.4 master-zulu
django-space postgres-deployment-b58d5ff94-scmrx 1/1 Rulează 0 12s 10.244.0.5 master-zulu
kube-system coredns-6d4b75cb6d-rnjlm 1/1 Alergare 0 73m 10.244.0.2 master-zulu
kube-system coredns-6d4b75cb6d-s6zl7 1/1 Alergare 0 73m 10.244.0.3 master-zulu

cni0 este sus:

masterzulu@master-zulu:~$ ifconfig -a
cni0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450
        inet 10.244.0.1 netmask 255.255.255.0 difuzare 10.244.0.255
        inet6 fe80::8c8:84ff:fe78:d999 prefixlen 64 scopeid 0x20<link>
        ether 0a:c8:84:78:d9:99 txqueuelen 1000 (Ethernet)
        Pachete RX 27714 octeți 5010722 (5,0 MB)
        Erori RX 0 a scăzut 0 depășiri 0 cadru 0
        Pachete TX 26936 octeți 2898949 (2,8 MB)
        Erori TX 0 a scăzut 0 depășiri 0 purtător 0 coliziuni 0

cri-docker stare:

masterzulu@master-zulu:~$ sudo systemctl status cri-docker
â cri-docker.service - Interfață CRI pentru Docker Application Container Engine
     Încărcat: încărcat (/etc/systemd/system/cri-docker.service; activat; prestabilit furnizor: activat)
     Activ: activ (în rulare) din vineri 2022-05-27 22:39:06 BST; acum 1h 57min
TriggeredBy: â cri-docker.socket
       Documente: https://docs.mirantis.com
   PID principal: 187399 (cri-dockerd)
      Sarcini: 11
     Memorie: 17,1 M
     CGroup: /system.slice/cri-docker.service
             ââ187399 /usr/local/bin/cri-dockerd --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib /cni/cache --cni-conf-dir=/etc/cni/net.d --po>

28 mai 00:36:20 master-zulu cri-dockerd[187399]: time="2022-05-28T00:36:20+01:00" level=info msg="Utilizarea fișierului de configurare CNI /etc/cni/net .d/10-flannel.conflist"

concluzia mea

în absența --network-plugin=cni în cri-dockerd argumente de pornire sau orice altă problemă în CNI configurațiile pot cauza această problemă în cazul în care cri-docker consideră că CNI lipsește și folosește interfața docker0 direct, astfel încât pod-urile să obțină IP-ul lor din acest interval 172.17.0.x.

Sper că acest lucru va ajuta pe oricine are aceeași problemă.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.