Puncte:0

Instalarea curată a Kubernetes pe Raspberry Pi nu funcționează

drapel cn

Încerc să fac o instalare curată a Kubernetes 1.23.x pe un grup de patru Raspberry Pi, fiecare rulând versiunea x64 a sistemului de operare Raspberry Pi, totuși mă confrunt cu o problemă majoră de îndată ce încerc să rulez kubeadm init pe nodul principal (înainte chiar de a încerca să se alăture celorlalte noduri). Și anume: la doar cinci minute după ce ai sunat kubeadm init pe nodul master, clusterul nu mai funcționează. De fapt, nu funcționează niciodată cu adevărat de la început. La început, serverul răspunde spunând că nodul este NotReady, dar apoi după 5 minute nu mai răspunde cu totul.

Iată ce am făcut și ce am văzut: am instalat containerd și kubeadm. Apoi rulez următoarea comandă pe nodul principal pentru a încerca să pornesc Kubernetes:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 \
    --token-ttl=0 --apiserver-advertise-address=192.168.1.194

După rularea acelei comenzi și, ulterior, copierea fișierului /etc/kubernetes/admin.conf în ~/.kube/config, pot rula următoarea comandă:

$ kubectl obține noduri

NUME STARE ROLURI VÂRSTA VERSIUNE
k8s-master-1 NotReady control-plane, master 3m36s v1.23.4

Și va continua să arate starea NotReady timp de aproximativ 5 minute, după care aceeași comandă dă un rezultat foarte diferit:

$ kubectl obține noduri

Conexiunea la serverul 192.168.1.194:6443 a fost refuzată - ați specificat gazda sau portul potrivit?

Nu sunt sigur de ce se întâmplă asta, dar este foarte consistent. Am încercat de câteva ori acum resetarea kubeadm și apoi kubeadm init din nou, iar expirarea conexiunii are loc întotdeauna la marcajul de 5 minute. Așa că ultima dată când am încercat să fac asta, m-am hotărât să pun toate fișierele jurnal sub /var/log/containers/. După marcajul de 5 minute, înregistrează în mod repetat o variație a unei erori de conexiune la 127.0.0.1:2379. De exemplu:

2022-03-09T19:30:29.307156643-06:00 stderr F W0310 01:30:29.306871 1 clientconn.go:1331] [core] grpc: addrConn.createTransport nu a reușit să se conecteze la 0.017.23.0.0.0. }. Err: eroare de conectare: desc = „transport: eroare la apelare dial tcp 127.0.0.1:2379: conectare: conexiune refuzată”. Se reconecta...

Din Google, se pare că etcd rulează pe acel port, dar apoi, la 5 minute, o grămadă de servicii (inclusiv etcd) încep să se închidă. Am încărcat jurnalele complete de atunci kubeadm init aleargă până înainte de temutul marcaj de 5 minute, ca un Gist.

Am verificat deja că toate porturile sunt deschise, de asemenea. (Ei sunt.) În timpul primelor cinci minute, pot face telenet la portul local 2379. De ce nu pornește Kubernetes pe Pi-ul meu? Ce îmi lipsește?

ACTUALIZAȚI: După cum mi-am cerut, pot oferi câteva detalii suplimentare. Am văzut o postare care recomanda setarea valorii lui --apiserver-advertise-address la 0.0.0.0 în loc de IP-ul direct, așa că am încercat asta, dar nu părea să aibă nicio diferență. Am încercat să alerg systemctl status kubelet ceea ce arată că serviciul kubelet este „activ” în perioada inițială de 5 minute.

am alergat si eu kubectl descrie nodul k8s-master-1, care arată patru evenimente din această secvență:

  1. KubeletHasSuficientMemory
  2. KubeletHasNoDiskPressure
  3. KubeletHasSuficientPID
  4. KubeletNotReady

Ultimul eveniment este însoțit de acest mesaj: „Network runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized.” Deci asta m-a pus pe gânduri. Am așteptat ca Node să apară ca Ready înainte de a instala Flannel (alias pluginul CNI), dar de data aceasta am decis să încerc să instalez Flannel în perioada inițială de 5 minute, folosind această comandă:

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

Și spre marea mea surpriză, asta a funcționat! Un fel de. Nodul principal a început în cele din urmă să raporteze o stare „Gata”.Și am observat că toate păstăile mele au apărut cu excepția notabilă a păstăilor coredns. Cu toate acestea, după un timp scurt, pod-ul kube-proxy (în spațiul de nume kube-system) moare și rămâne blocat într-un CrashLoopBackoff, iar apoi mai târziu pod-urile kube-controller-manager și kube-scheduler intră în mod similar într-un CrashLoopBackoff. Apoi, de data aceasta, după aproximativ 15 minute, întregul cluster a murit din nou ca înainte (înseamnă că am primit același mesaj „conexiunea la server a fost refuzată”). Așa că simt că sunt puțin mai aproape, dar sunt încă departe de a face acest lucru.

A DOUA ACTUALIZARE: Câteva lucruri: se pare că atunci când instalez pluginul flanel CNI, coredns fie nu este inclus, fie nu funcționează. Dar când instalez Weave Works CNI, atunci cel puțin încearcă să rotească nucleele, deși, din păcate, acele poduri se blochează în ContainerCreating și nu se activează niciodată. Așadar, așa cum mi sa cerut, ofer un număr de jurnale suplimentare. Sunt suficient de lungi pentru a garanta încărcarea lor separat, așa că iată a link la un Gist conținând patru loguri:

  1. Alergare kubectl -n kube-system jurnalele pod/coredns-...
  2. Alergare kubectl -n jurnalele de sistem kube pod/kube-controller-manager-k8s-master-1
  3. Alergare kubectl -n jurnalele de sistem kube pod/kube-proxy-...
  4. Alergare kubectl descrie nodul k8s-master-1

Rețineți că înainte ca totul să moară, pod-ul kube-controller-manager-... pornește, dar în curând se găsește într-un CrashLoopBackoff. În timp ce podurile coredns nu pornesc deloc cu succes.

tilleyc avatar
drapel us
Ce arată dmesg sau syslog?
mozello avatar
drapel cn
Rulați „kubectl describe node nodename” pentru a verifica de ce nodul este NotReady. Verificați `systemctl status kubelet` și `journalctl -u kubelet`. Ai dezactivat schimbul?
drapel cn
@mozello Mi-am actualizat postarea inițială cu mai multe detalii conform recomandărilor tale.
mozello avatar
drapel cn
Sunt podurile coredns în starea „În așteptare”? Verificați dacă există vreo „pată” atunci când rulați „kubectl describe node”.
mozello avatar
drapel cn
De asemenea, vă rugăm să adăugați jurnalele din podul kube-proxy `kubectl -n kube-system logs kube-proxy-...`
drapel cn
@mozello mulțumesc pentru că m-ați urmărit și scuze pentru întârzierea lungă. Mi-am editat postarea inițială pentru a adăuga o grămadă de jurnale suplimentare într-un link Gist la sfârșit. Apreciez foarte mult că te uiți la asta!

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.