k8s: kube-proxy und weave-net in CrashLoopBackOff

Nach der Installation von kubernetes mit containerd als container runtime sind sowohl der kube-proxy als auch weave-net (oder kube-flannelI im Status CrashLoopBackOff, was heisst die Container stürzen gleich nach dem starten wieder ab.

Grund ist, dass containerd standarmässig nicht systemd als Cgroup nimmt, was bei den meisten Linux Distributionen und kubernetes der Standard ist.

Das Problem äusser sich darin, dass der Befehl kubectl get pods –all-namespaces die Pods kube-proxy und weave-net im Status CrashLoopBackOff anzeigt:

kubectl get pods --all-namespaces
NAMESPACE     NAME                                         READY   STATUS             RESTARTS           AGE
kube-system   coredns-7c65d6cfc9-hssnb                     1/1     Running            0                  5d21h
kube-system   coredns-7c65d6cfc9-pm98p                     1/1     Running            0                  5d21h
kube-system   etcd-ewsh-kmstr01-stage                      1/1     Running            0                  5d21h
kube-system   kube-apiserver-ewsh-kmstr01-stage            1/1     Running            0                  5d21h
kube-system   kube-controller-manager-ewsh-kmstr01-stage   1/1     Running            1 (4d10h ago)      5d21h
kube-system   kube-proxy-4hpdj                             0/1     CrashLoopBackOff   14 (3m18s ago)     63m
kube-system   kube-proxy-8m4t7                             0/1     CrashLoopBackOff   1355 (39s ago)     5d21h
kube-system   kube-proxy-d8zxk                             0/1     CrashLoopBackOff   17 (4m45s ago)     63m
kube-system   kube-proxy-vktqj                             0/1     CrashLoopBackOff   14 (4m33s ago)     63m
kube-system   kube-scheduler-ewsh-kmstr01-stage            1/1     Running            1 (4d10h ago)      5d21h
kube-system   weave-net-7wvn9                              0/2     CrashLoopBackOff   35 (56s ago)       63m
kube-system   weave-net-jvhkm                              0/2     CrashLoopBackOff   2888 (2m22s ago)   5d19h
kube-system   weave-net-m4z5q                              0/2     CrashLoopBackOff   29 (17s ago)       63m
kube-system   weave-net-zk7mt                              0/2     CrashLoopBackOff   28 (63s ago)       63m

Um das Problem zu lösen muss man zuerst die default Konfigurationsdatei für containerd erstellen, dort die Option SystemdCgroup auf true setzen und dann die Pods löschen, damit diese neu erstellt werden.

Dies muss bei jedem node (Control Plane und Worker) gemacht werden:

mkdir -v /etc/containerd
containerd config default > /etc/containerd/config.toml

Nun die Datei /etc/containerd/config.toml editieren und nach diesen Zeilen suchen:

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  ...
 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = false

Dort den Wert von SystemdCgroup auf true setzen, speichern und containerd neustarten:

systemctl restart containerd

Nun auf dem Control Plane Node die Pods löschen:

kubectl delete pod kube-proxy-4hpdj --namespace kube-system
kubectl delete pod kube-proxy-8m4t7 --namespace kube-system
kubectl delete pod kube-proxy-d8zxk --namespace kube-system
kubectl delete pod kube-proxy-vktqj --namespace kube-system

kubectl delete pod weave-net-7wvn9 --namespace kube-system
kubectl delete pod weave-net-jvhkm --namespace kube-system
kubectl delete pod weave-net-m4z5q --namespace kube-system
kubectl delete pod weave-net-zk7mt --namespace kube-system

Danach werden diese automatisch neu erstellt und sollten laufen:

kubectl get pods --namespace kube-system
NAME                                         READY   STATUS    RESTARTS        AGE
coredns-7c65d6cfc9-hssnb                     1/1     Running   0               6d
coredns-7c65d6cfc9-pm98p                     1/1     Running   0               6d
etcd-ewsh-kmstr01-stage                      1/1     Running   0               6d
kube-apiserver-ewsh-kmstr01-stage            1/1     Running   0               6d
kube-controller-manager-ewsh-kmstr01-stage   1/1     Running   1 (4d13h ago)   6d
kube-proxy-b5xm6                             1/1     Running   3 (37m ago)     39m
kube-proxy-gcdsl                             1/1     Running   3 (36m ago)     39m
kube-proxy-kqtnr                             1/1     Running   0               40m
kube-proxy-z9lhv                             1/1     Running   2 (36m ago)     39m
kube-scheduler-ewsh-kmstr01-stage            1/1     Running   1 (4d13h ago)   6d
weave-net-4pf4v                              2/2     Running   0               35m
weave-net-9bq7t                              2/2     Running   0               35m
weave-net-m6b8c                              2/2     Running   0               36m
weave-net-mngfr                              2/2     Running   0               36m

Referenzen

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert