Puncte:0

Nu există poduri accesibile sau programate pe clusterul kubernetes

drapel ru

Am 2 clustere kubernetes în cloud-ul IBM, unul are 2 Noduri, celălalt 4.

Cel care are 4 Noduri funcționează corect, dar la celălalt a trebuit să elimin temporar nodurile de lucru din motive monetare (nu ar trebui plătit în timp ce sunt inactiv).

Când am reactivat cele două noduri, totul părea să pornească bine și atâta timp cât nu încerc să interacționez cu Pod-urile, tot arată bine la suprafață, fără mesaje despre indisponibilitate sau stare critică de sănătate. OK, am șters două învechite Spațiu de numes care s-a blocat în Încheiere stare, dar aș putea rezolva problema repornind un nod de cluster (nu mai știu exact care a fost).

Când totul părea în regulă, am încercat să accesez tabloul de bord kubernetes (tot ce s-a făcut înainte a fost la nivel de management IBM sau în linia de comandă), dar în mod surprinzător l-am găsit inaccesibil cu o pagină de eroare în browser care spunea:

503 Serviciu Indisponibil

Era un mic mesaj JSON în partea de jos a acelei pagini, care spunea:

{
  "kind": "Stare",
  "apiVersion": "v1",
  „metadate”: { },
  "status": "Eșec",
  "message": "eroare la încercarea de a ajunge la serviciu: citiți tcp 172.18.190.60:39946-\u003e172.19.151.38:8090: citiți: resetarea conexiunii de către peer",
  "motiv": "Serviciul indisponibil",
  „cod”: 503
}

am trimis un kubectl înregistrează kubernetes-dashboard-54674bdd65-nf6w7 --namespace=kube-system unde Pod a fost afișat ca rulând, dar rezultatul nu a fost jurnalele de vizualizat, a fost în schimb acest mesaj:

Eroare de la server: obțineți „https://10.215.17.75:10250/containerLogs/kube-system/kubernetes-dashboard-54674bdd65-nf6w7/kubernetes-dashboard”:
citiți tcp 172.18.135.195:56882->172.19.151.38:8090:
citiți: resetarea conexiunii de către peer

Apoi am aflat că nici nu pot obține jurnalele orice Pod rulează în acel cluster și nici nu pot implementa niciun obiect kubernetes personalizat nou care necesită programare (de fapt, aș putea aplica Servicius sau ConfigMaps, dar nu Pod, ReplicaSet, Implementare sau asemănător).

Am încercat deja

  • reîncărcați nodurile de lucru din grupul de lucrători
  • reporniți nodurile de lucru din grupul de lucrători
  • a repornit tabloul de bord kubernetes Implementare

Din păcate, niciuna dintre acțiunile de mai sus nu a schimbat accesibilitatea Pods.

Mai este un lucru care ar putea avea legătură (deși nu sunt sigur că este de fapt):

În celălalt grup care funcționează bine, există trei calicoți Podrulează și toate trei sunt sus, în timp ce în grupul problematic doar 2 din cele trei calico Podsunt în funcțiune, al treilea rămâne înăuntru In asteptarea stat și a kubectl descrie pod calico-blablabla-blabla dezvăluie motivul, an Eveniment

Avertisment FailedScheduling 13s planificator implicit
Sunt disponibile 0/2 noduri: 2 noduri nu au avut porturi libere pentru porturile de pod solicitate.

Are cineva vreo idee despre ce se întâmplă în acel cluster și îmi poate indica soluții posibile? Nu vreau să șterg clusterul și să deschid unul nou.

Editați | ×

Rezultatul kubectl descrie pod kubernetes-dashboard-54674bdd65-4m2ch --namespace=kube-system:

Nume: kubernetes-dashboard-54674bdd65-4m2ch
Spațiu de nume: kube-system
Prioritate: 2000000000
Nume clasa prioritară: system-cluster-critical
Nod: 10.215.17.82/10.215.17.82
Ora de începere: Luni, 15 noiembrie 2021 09:01:30 +0100
Etichete: k8s-app=kubernetes-dashboard
                      pod-template-hash=54674bdd65
Adnotări: cni.projectcalico.org/containerID: ca52cefaae58d8e5ce6d54883cb6a6135318c8db53d231dc645a5cf2e67d821e
                      cni.projectcalico.org/podIP: 172.30.184.2/32
                      cni.projectcalico.org/podIPs: 172.30.184.2/32
                      container.seccomp.security.alpha.kubernetes.io/kubernetes-dashboard: runtime/default
                      kubectl.kubernetes.io/restartedAt: 2021-11-10T15:47:14+01:00
                      kubernetes.io/psp: ibm-privileged-psp
Stare: Running
IP: 172.30.184.2
IP-uri:
  IP: 172.30.184.2
Controlat de: ReplicaSet/kubernetes-dashboard-54674bdd65
Containere:
  Kubernetes-tabloul de bord:
    ID container: containerd://bac57850055cd6bb944c4d893a5d315c659fd7d4935fe49083d9ef8ae03e5c31
    Imagine: registry.eu-de.bluemix.net/armada-master/kubernetesui-dashboard:v2.3.1
    ID imagine: registry.eu-de.bluemix.net/armada-master/kubernetesui-dashboard@sha256:f14f581d36b83fc9c1cfa3b0609e7788017ecada1f3106fab1c9db35295fe523
    Port: 8443/TCP
    Port gazdă: 0/TCP
    Argumente:
      --auto-generate-certificates
      --namespace=kube-system
    Stare: alergare
      Început: Luni, 15 noiembrie 2021 09:01:37 +0100
    Gata: Adevărat
    Număr de reporniri: 0
    Cereri:
      CPU: 50m
      memorie: 100 Mi
    Liveness: http-get https://:8443/ delay=30s timeout=30s period=10s #success=1 #failure=3
    Pregătire: http-get https://:8443/ delay=10s timeout=30s period=10s #success=1 #failure=3
    Mediu: <niciun>
    Suporturi:
      /certs de la kubernetes-dashboard-certs (rw)
      /tmp din tmp-volume (rw)
      /var/run/secrets/kubernetes.io/serviceaccount de la kube-api-access-sc9kw (ro)
Conditii:
  Tastați Stare
  Adevărat inițializat 
  Gata Adevărat 
  ContainersReady Adevărat 
  PodScheduled Adevărat 
Volume:
  kubernetes-dashboard-certs:
    Tip: Secret (un volum populat de un Secret)
    SecretName: kubernetes-dashboard-certs
    Opțional: fals
  tmp-volum:
    Tip: EmptyDir (un director temporar care partajează durata de viață a unui pod)
    Mediu:     
    SizeLimit: <dezactivat>
  kube-api-access-sc9kw:
    Tip: Proiectat (un volum care conține date injectate din mai multe surse)
    TokenExpirationSeconds: 3607
    ConfigMapName: kube-root-ca.crt
    ConfigMapOptional: <nil>
    DownwardAPI: adevărat
Clasa QoS: Burstable
Selectori de noduri: <niciunul>
Tolerări: node-role.kubernetes.io/master:NoSchedule
                             node.kubernetes.io/not-ready:NoExecute op=Există pentru 600 de secunde
                             node.kubernetes.io/unreachable:NoExecute op=Există de 600 de secunde
Evenimente: <niciunul>
Mikołaj Głodziak avatar
drapel id
Bună ziua, este posibil ca problema să fie conectată la certificatul SSL. Vă rugăm să priviți [această întrebare](https://stackoverflow.com/questions/46411598/kubernetes-dashboard-serviceunavailable-503-error) și să-mi spuneți despre rezultat. Ce versiune Kubernetes ai folosit?
deHaar avatar
drapel ru
Cesc @MikoÅajGÅodziak, mulțumesc pentru sugestii. Versiunea cluster este 1.22.2_1526, iar nodurile de lucru au versiunea 1.22.2_1528. Următorul lucru pe care îl voi face (din nou acum) este să actualizez clusterul. Voi verifica întrebarea pe care ai pus-o linkul, mulțumesc din nou!
Mikołaj Głodziak avatar
drapel id
Și cum anume ți-ai configurat clusterul? Este bare metal sau un furnizor de cloud? Este important să vă reproduceți problema. Vă rugăm să verificați sugestia mea și să-mi spuneți ;)
deHaar avatar
drapel ru
Este un cluster clasic în IBM Cloud pe care l-am configurat folosind consola web (și un cli pentru interacțiuni parțiale).
deHaar avatar
drapel ru
@MikoÅajGÅodziak ar putea fi motivul un certificat tls vechi (poate restaurat) care se afla pe primele noduri (care ar fi trebuit să fie șters cu săptămâni în urmă)? Văd un „Secret” suspect...
Mikołaj Głodziak avatar
drapel id
Da, sigur, se poate. Presupunând că aveți un certificat actual și l-ați restaurat pe cel vechi (care ar trebui eliminat), este posibil ca acum să arate ca cel mai nou. Cu toate acestea, este depășit, așa că obțineți o eroare.
deHaar avatar
drapel ru
Hmm, nu am un certificat nou sau actual, dar probabil că a fost unul generat când au apărut noile noduri (sau noul grup de lucrători). Trebuie să sapă în asta puțin mai adânc...
Mikołaj Głodziak avatar
drapel id
Ați putea rula și `kubectl describe pod ` și lipiți rezultatele la întrebare?
deHaar avatar
drapel ru
Acum este inclus în întrebare...
Mikołaj Głodziak avatar
drapel id
Ai verificat problema certificatului SSL?
deHaar avatar
drapel ru
Nu până acum, nu am putut afla cum să... Răspunsul la întrebarea pe care ați legat-o nu era aplicabil în IBM Cloud.
Mikołaj Głodziak avatar
drapel id
Ați spus „motivul ar putea fi un certificat tls vechi (poate restaurat) care a fost pe primele noduri (care ar fi trebuit să fie șters cu săptămâni în urmă)? Pot vedea un Secret suspect...” Ești sigur că ai doar un singur certificat valabil?
deHaar avatar
drapel ru
Nu sunt sigur de asta, dar furnizorul de cloud a aflat că această problemă a fost cauzată de actualizarea versiunii de cluster dincolo de 1.21 cu punctul final public și privat activat deoarece VRF este dezactivat. Această constelație a condus la problema mea, care este încă nerezolvată și cel mai probabil va rămâne în această stare. Furnizorul spune că acest lucru nu are legătură cu certificate.
deHaar avatar
drapel ru
@MikoÅajGÅodziak vă mulțumesc pentru că sunteți interesat de această problemă, vă rugăm să vedeți propriul meu răspuns la aceasta, pe care l-am aflat într-o luptă de 3 zile cu suportul IBM. Cineva de acolo mi-a indicat în sfârșit soluția.
Puncte:2
drapel ru

Problemă rezolvată...

Cauza problemei a fost o actualizare a clusterului la versiunea kubernetes 1.21 în timp ce clusterul meu îndeplinea următoarele condiții:

  • punct final de serviciu privat și public activat
  • VRF dezactivat

Cauza de bază:

În Kubernetes versiunea 1.21, Konnectivity înlocuiește OpenVPN ca proxy de rețea care este utilizat pentru a securiza comunicarea serverului master Kubernetes API către nodurile de lucru din cluster.
Când utilizați Konnectivity, există o problemă cu comunicarea de la master la nodurile cluster atunci când sunt îndeplinite toate condițiile menționate mai sus.

Pașii soluției:

  • a dezactivat punctul final al serviciului privat (cel public pare să nu fie o problemă) utilizând comanda
    ibmcloud ks cluster master private-service-endpoint dezactivare --cluster <CLUSTER_NAME> (această comandă este specifică furnizorului, dacă întâmpinați aceeași problemă cu un alt furnizor sau la o instalare locală, aflați cum să dezactivați punctul final al serviciului privat)
  • reîmprospătat cluster-ul master folosind ibmcloud ks cluster master refresh --cluster <CLUSTER_NAME> și, în sfârșit
  • a reîncărcat toate nodurile de lucru (în consola web, ar trebui să fie posibilă și printr-o comandă)
  • am asteptat vreo 30 de minute:
    • Tabloul de bord disponibil/accesibil din nou
    • Podeste accesibilă și programabilă din nou

Recomandare generala:

INAINTE DE actualizați orice cluster la kubernetes 1.21, verificați dacă ați activat punctul final al serviciului privat. Dacă aveți, fie dezactivați-l, fie amânați actualizarea până când puteți, fie activați VRF (routare și redirecționare virtuală), ceea ce nu am putut, dar mi s-a spus că probabil va rezolva problema.

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.