Puncte:0

Serviciul kubelet nu rulează (fluctuează) în nodul principal Kubernetes

drapel gb

Încercam să creez un cluster Kubernetes folosind kubeadm. Am pornit un server Ubuntu 18.04, am instalat docker (m-am asigurat că rulează docker.service), am instalat kubeadm kubelet și kubectl.

Următorii sunt pașii pe care i-am făcut:

sudo apt-get update
sudo apt-get install docker.io -y
sudo systemctl enable docker
sudo systemctl start docker
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt-get install kubeadm kubelet kubectl -y
sudo apt-mark hold kubeadm kubelet kubectl 
versiunea kubeadm
swapoff âa

sudo hostnamectl set-hostname master-node
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

Odată după ce am fugit sudo kubeadm init --pod-network-cidr=10.244.0.0/16, am primit următoarea eroare:

root@ip-172-31-10-50:/home/ubuntu# sudo kubeadm init --pod-network-cidr=192.168.0.0/16
[init] Folosind versiunea Kubernetes: v1.23.1
[preflight] Executare verificări înainte de zbor
[flight] Extragerea imaginilor necesare pentru configurarea unui cluster Kubernetes
[flight] Acest lucru poate dura un minut sau două, în funcție de viteza conexiunii dvs. la internet
[flight] Puteți efectua această acțiune în prealabil folosind „kubeadm config images pull”
[cert] Folosind folderul certificateDir „/etc/kubernetes/pki”
[cert] Folosind autoritatea de certificare CA existentă
[cert] Folosind certificatul apiserver existent și cheia de pe disc
[cert] Folosind certificatul apiserver-kubelet-client existent și cheia de pe disc
[cert] Folosind autoritatea de certificare front-proxy-ca existentă
[cert] Folosind certificatul front-proxy-client existent și cheia de pe disc
[cert] Folosind autoritatea de certificare etcd/ca existentă
[cert] Folosind certificatul etcd/server existent și cheia de pe disc
[cert] Folosind certificatul etcd/peer existent și cheia de pe disc
[cert] Folosind certificatul etcd/healthcheck-client existent și cheia de pe disc
[certs] Folosind certificatul apiserver-etcd-client existent și cheia de pe disc
[cert] Folosind cheia existentă „sa”.
[kubeconfig] Folosind folderul kubeconfig „/etc/kubernetes”
[kubeconfig] Folosind fișierul kubeconfig existent: „/etc/kubernetes/admin.conf”
[kubeconfig] Folosind fișierul kubeconfig existent: „/etc/kubernetes/kubelet.conf”
[kubeconfig] Folosind fișierul kubeconfig existent: „/etc/kubernetes/controller-manager.conf”
[kubeconfig] Folosind fișierul kubeconfig existent: „/etc/kubernetes/scheduler.conf”
[kubelet-start] Se scrie un fișier de mediu kubelet cu steaguri în fișierul „/var/lib/kubelet/kubeadm-> flags.env”
[kubelet-start] Se scrie configurația kubelet în fișierul „/var/lib/kubelet/config.yaml”
[kubelet-start] Pornirea kubeletului
[control-plane] Folosind folderul manifest „/etc/kubernetes/manifests”
[control-plane] Se creează manifestul Pod static pentru „kube-apiserver”
[control-plane] Se creează manifestul Pod static pentru „kube-controller-manager”
[control-plane] Se creează manifestul static Pod pentru „kube-scheduler”
[etcd] Se creează manifestul Pod static pentru etcd local în „/etc/kubernetes/manifests”
[wait-control-plane] Se așteaptă ca kubelet să pornească planul de control ca Pod-uri statice din directorul „/etc/kubernetes/manifests”. Acest lucru poate dura până la 4m0s
[kubelet-check] Timpul de expirare inițial de 40 de secunde a trecut.
[kubelet-check] Se pare că kubelet-ul nu funcționează sau nu este sănătos.
[kubelet-check] Apelul HTTP egal cu „curl -sSL http://localhost:10248/healthz” a eșuat cu eroare: Obțineți „http://localhost:10248/healthz”: formați tcp 127.0.0.1:10248: conectați : conexiune refuzata.

Am încercat să fug kubectl init --pod-network-cidr folosind CIDR Flannel (10.244.0.0/16) Si deasemenea CIDR lui Calico (192.168.0.0/16). Totuși, am primit aceeași eroare.

De asemenea, am observat că statutul de Kubelet în cazul meu EC2 a fost fluctuant. Când am fugit starea systemctl kubelet.service, uneori nu rula și alteori rula Kubelet-ul. Se întâmplă automat. Gândiți-vă că acesta este ceea ce eșuează kubectl init din moment ce kubelet-check spune clar: „Se pare că kubeletul nu funcționează sau nu este sănătos”

După alergare starea systemctl kubelet.service, eroarea:

root@ip-172-31-10-50:/home/ubuntu# systemctl status kubelet.service
â kubelet.service - kubelet: Agentul nodului Kubernetes
Încărcat: încărcat (/lib/systemd/system/kubelet.service; activat; prestabilit furnizor: activat)
Drop-in: /etc/systemd/system/kubelet.service.d
ââ10-kubeadm.conf
Activ: se activează (repornire automată) (Rezultat: cod de ieșire) din miercuri 29-12-2021 17:52:35 UTC; acum 3s
Documente: https://kubernetes.io/docs/home/
Proces: 22901 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=1/FAILURE)
PID principal: 22901 (cod=ieșit, stare=1/Eșec)

Și când continui să alerg starea systemctl kubelet.service, după câteva secunde, kubectl.service pare să ruleze și după câteva secunde, eșuează din nou.

...sărind...
â kubelet.service - kubelet: Agentul nodului Kubernetes
Încărcat: încărcat (/lib/systemd/system/kubelet.service; activat; prestabilit furnizor: activat)
Drop-in: /etc/systemd/system/kubelet.service.d
ââ10-kubeadm.conf
Activ: activ (în rulare) din joi 2021-12-30 18:50:49 UTC; acum 125 ms
Documente: https://kubernetes.io/docs/home/
PID principal: 12895 (kubelet)
Sarcini: 9 (limită: 4686)
CGroup: /system.slice/kubelet.service
ââ12895 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf > --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib /kubelet/conf

Nu sunt sigur de ce kubelet fluctuează în acest fel.
Stie cineva cum sa repare asta?

drapel jp
Verificați jurnalul pentru jurnalele „kubelet”.
arjunbnair avatar
drapel gb
1. Nu s-a executat kubelet" err="Nu s-a putut rula Kubelet: configurare greșită: driverul kubelet cgroup: \"systemd\" este diferit de driverul docker cgroup: \"cgroupfs\"" 2. kubelet.service: Proces principal ieșit, cod=ieșit, stare=1/Eșec 3. kubelet.service: a eșuat cu rezultatul „cod de ieșire”. 4. kubelet.service: Timpul de suspendare a serviciului s-a încheiat, programarea repornirii. 5. kubelet.service: lucrare de repornire programată, contorul de repornire este la 45. 6. Kubelet oprit: Agentul nodului Kubernetes.
Puncte:1
drapel jp

Jurnalul de erori are răspunsul dvs.:

Nu s-a putut rula Kubelet: configurare greșită: kubelet cgroup driver: „systemd” este diferit de docker cgroup driver: „cgroupfs””

Consultați documentația Kubernetes despre cum să configurați undriverul cgroup

arjunbnair avatar
drapel gb
Mulțumiri. Acest lucru a ajutat.
Puncte:0
drapel gb

Am reușit să remediez problema kubelet.service prin editare /etc/systemd/system/kubelet.service.d/10-kubeadm.conf.

In cadrul fisierului am adaugat Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd" și a comentat Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml".

/etc/systemd/system/kubelet.service.d/10-kubeadm.conf pentru trimitere:

# Notă: acest dropin funcționează numai cu kubeadm și kubelet v1.11+
[Serviciu]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
#Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
# Acesta este un fișier pe care „kubeadm init” și „kubeadm join” îl generează în timpul execuției, populând variabila KUBELET_KUBEADM_ARGS în mod dinamic
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# Acesta este un fișier pe care utilizatorul îl poate folosi pentru suprascrieri ale argumentelor kubelet ca ultimă soluție. De preferință, utilizatorul ar trebui să folosească
# obiectul .NodeRegistration.KubeletExtraArgs din fișierele de configurare. KUBELET_EXTRA_ARGS ar trebui să provină din acest fișier.
EnvironmentFile=-/etc/default/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS

Apoi a alergat: systemctl daemon-reload și systemctl reporniți kubelet
În acest fel, kubelet.service rula mereu.

Mulțumiri!

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.