Kubeadm: CoreDNS startet nicht unter Ubuntu 18.04.Bionic Beaver

Erstellt am 9. Juli 2018  ·  18Kommentare  ·  Quelle: kubernetes/kubeadm

Welche Keywords haben Sie in kubeadm-Ausgaben gesucht, bevor Sie diese eingereicht haben?

dns, resolv.conf, coredns

FEHLERBERICHT

Versionen

kubeadm version (benutze kubeadm version ):
kubeadm version: &version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.0", GitCommit:"91e7b4fd31fcd3d5f436da26c980becec37ceefe", GitTreeState:"clean", BuildDate:"2018-06-27T20:14:41Z", GoVersion:"go1.10.2", Compiler:"gc", Platform:"linux/amd64"}

Umwelt :

  • Kubernetes-Version (verwenden Sie kubectl version ):
  Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.0", GitCommit:"91e7b4fd31fcd3d5f436da26c980becec37ceefe", GitTreeState:"clean", BuildDate:"2018-06-27T20:17:28Z", GoVersion:"go1.10.2", Compiler:"gc", Platform:"linux/amd64"}
  Server Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.0", GitCommit:"91e7b4fd31fcd3d5f436da26c980becec37ceefe", GitTreeState:"clean", BuildDate:"2018-06-27T20:08:34Z", GoVersion:"go1.10.2", Compiler:"gc", Platform:"linux/amd64"}
  • Cloud-Anbieter oder Hardwarekonfiguration :
    Baremetall (Intel Xeon, 2x2 TB Festplatte, 32 GB RAM)
  • Betriebssystem (zB aus / etc / os-release):
    Ubuntu 18.04 LTS (Bionic Beaver)
  • Kernel (zB uname -a ):
    4.15.0-24-generisch

Was ist passiert?

Nach der Installation von Kubernetes über Kubeadm werden die Coredns Pods nicht mehr angezeigt. kubectl get pods --all-namespaces druckt dies:

NAMESPACE     NAME                                  READY     STATUS    RESTARTS   AGE
kube-system   coredns-78fcdf6894-kgg8d              0/1       Pending   0          2h
kube-system   coredns-78fcdf6894-vl9jf              0/1       Pending   0          2h
kube-system   etcd-beetlejuice                      1/1       Running   0          2h
kube-system   kube-apiserver-beetlejuice            1/1       Running   0          2h
kube-system   kube-controller-manager-beetlejuice   1/1       Running   0          2h
kube-system   kube-proxy-bjdqd                      1/1       Running   0          2h
kube-system   kube-scheduler-beetlejuice            1/1       Running   0          2h

Was hast du erwartet?

coredns ändert sich in den Status 'Running' und kubernetes läuft ohne Probleme

Wie kann man es reproduzieren (so minimal und präzise wie möglich)?

Dies ist das Skript, das ich für die Installation verwendet habe:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF

apt-get update
apt-get install -y docker.io
apt-get install -y kubeadm

kubeadm init --pod-network-cidr=10.27.0.0/16

Was müssen wir noch wissen?

Ich denke ja, aber ich weiß nicht was ... Wenn Sie eine Art von Protokollen benötigen, sagen Sie es mir einfach.

kinbug prioritawaiting-more-evidence prioritimportant-soon

Hilfreichster Kommentar

Schade, dass es keine Protokolle vom Scheduler gibt.

Der Inhalt von /var/lib/kubelet/kubeadm-flags.env ist

Das Flag --resolv-conf scheint hinzugefügt worden zu sein, das ist also in Ordnung.

Inzwischen wird es sich um einen einzelnen Knotenwürfel handeln.

Rufen Sie kubeadm reset und dann erneut kubeadm init ... an.
Kopieren Sie dann die Konfiguration in Ihr Benutzerverzeichnis und versuchen Sie, ein Pod-Netzwerk-Plugin (Weave) zu installieren:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

und sehen, ob die DNS-Pods bereit sind. Dies ist möglicherweise nicht sinnvoll, aber versuchen Sie es bitte.

Alle 18 Kommentare

@ sergej2705
die Ausgabe von:
kubectl describe pod <coredns-pod-ids>

und relevante Fehler von:

'systemctl status kubelet'
'journalctl -xeu kubelet'

würde mehr helfen.
Vielen Dank.

Von kubectl describe pod coredns-78fcdf6894-kgg8d -n kube-system :

Name:           coredns-78fcdf6894-kgg8d
Namespace:      kube-system
Node:           <none>
Labels:         k8s-app=kube-dns
                pod-template-hash=3497892450
Annotations:    <none>
Status:         Pending
IP:             
Controlled By:  ReplicaSet/coredns-78fcdf6894
Containers:
coredns:
    Image:       k8s.gcr.io/coredns:1.1.3
    Ports:       53/UDP, 53/TCP, 9153/TCP
    Host Ports:  0/UDP, 0/TCP, 0/TCP
    Args:
    -conf
    /etc/coredns/Corefile
    Limits:
    memory:  170Mi
    Requests:
    cpu:        100m
    memory:     70Mi
    Liveness:     http-get http://:8080/health delay=60s timeout=5s period=10s #success=1 #failure=5
    Environment:  <none>
    Mounts:
    /etc/coredns from config-volume (ro)
    /var/run/secrets/kubernetes.io/serviceaccount from coredns-token-4fqm7 (ro)
Conditions:
Type           Status
PodScheduled   False 
Volumes:
config-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      coredns
    Optional:  false
coredns-token-4fqm7:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  coredns-token-4fqm7
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     CriticalAddonsOnly
                node-role.kubernetes.io/master:NoSchedule
                node.kubernetes.io/not-ready:NoExecute for 300s
                node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type     Reason            Age                 From               Message
----     ------            ----                ----               -------
Warning  FailedScheduling  4m (x1436 over 4h)  default-scheduler  0/1 nodes are available: 1 node(s) were not ready.

und von kubectl describe pod coredns-78fcdf6894-vl9jf -n kube-system :

Name:           coredns-78fcdf6894-vl9jf
Namespace:      kube-system
Node:           <none>
Labels:         k8s-app=kube-dns
                pod-template-hash=3497892450
Annotations:    <none>
Status:         Pending
IP:             
Controlled By:  ReplicaSet/coredns-78fcdf6894
Containers:
coredns:
    Image:       k8s.gcr.io/coredns:1.1.3
    Ports:       53/UDP, 53/TCP, 9153/TCP
    Host Ports:  0/UDP, 0/TCP, 0/TCP
    Args:
    -conf
    /etc/coredns/Corefile
    Limits:
    memory:  170Mi
    Requests:
    cpu:        100m
    memory:     70Mi
    Liveness:     http-get http://:8080/health delay=60s timeout=5s period=10s #success=1 #failure=5
    Environment:  <none>
    Mounts:
    /etc/coredns from config-volume (ro)
    /var/run/secrets/kubernetes.io/serviceaccount from coredns-token-4fqm7 (ro)
Conditions:
Type           Status
PodScheduled   False 
Volumes:
config-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      coredns
    Optional:  false
coredns-token-4fqm7:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  coredns-token-4fqm7
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     CriticalAddonsOnly
                node-role.kubernetes.io/master:NoSchedule
                node.kubernetes.io/not-ready:NoExecute for 300s
                node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type     Reason            Age                 From               Message
----     ------            ----                ----               -------
Warning  FailedScheduling  1m (x1467 over 4h)  default-scheduler  0/1 nodes are available: 1 node(s) were not ready.

Ich sehe keine Fehler in systemctl status kubelet , hier ist die vollständige Ausgabe:

● kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/kubelet.service.d
        └─10-kubeadm.conf, override.conf
Active: active (running) since Mon 2018-07-09 17:43:53 CEST; 4h 7min ago
    Docs: http://kubernetes.io/docs/
Main PID: 26710 (kubelet)
    Tasks: 32 (limit: 4915)
CGroup: /system.slice/kubelet.service
        └─26710 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=cgroupfs --cni-bin-dir=/opt/cni/bin --cni-co

In journalctl -xeu kubelet sehe ich mehrmals folgende Zeilen:

Jul 09 21:54:48 beetlejuice kubelet[26710]: E0709 21:54:48.883071   26710 kubelet.go:2112] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninit
Jul 09 21:54:49 beetlejuice kubelet[26710]: E0709 21:54:49.566069   26710 dns.go:131] Nameserver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: 213.133.99.99 213.133.98.98 213.133.100.100
Jul 09 21:54:53 beetlejuice kubelet[26710]: W0709 21:54:53.884846   26710 cni.go:172] Unable to update cni config: No networks found in /etc/cni/net.d

fyi, die /etc/resolv.conf :

### Hetzner Online GmbH installimage
# nameserver config
nameserver 213.133.99.99
nameserver 213.133.98.98
nameserver 213.133.100.100
nameserver 2a01:4f8:0:1::add:1010
nameserver 2a01:4f8:0:1::add:9999
nameserver 2a01:4f8:0:1::add:9898

Dabei ist Hetzner der Name des Rechenzentrumsbetreibers.

@ sergej2705
Der Scheduler schlägt fehl, aber mir ist nicht klar, warum.

Sie finden die ID des Kube-Scheduler-Pods mit
kubectl get pods --all-namespace

Dann können Sie dies versuchen, um ein Terminal in diesem Pod zu starten:
kubectl exec -ti <POD-ID-HERE> bash -n kube-system

und von dort aus können Sie versuchen, das Protokoll zu betrachten:
cat /var/log

Keine Garantie, dass es etwas Relevantes hat.

ein paar andere Dinge:

  • Installieren Sie ein Pod-Netzwerk nach init (fragen Sie nur für den Fall)?
  • nach init welche Inhalte erhalten Sie in /var/lib/kubelet/kubeadm-flags.env ?

kubectl exec -ti kube-scheduler-beetlejuice bash -n kube-system sagt

OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"bash\": executable file not found in $PATH": unknown command terminated with exit code 126

Also habe ich kubectl exec -ti kube-scheduler-beetlejuice sh -n kube-system versucht, also sh statt bash ... aber es gibt keine Datei /var/log

ls -lAh /var :

drwxr-xr-x    3 root     root        4.0K May 22 17:00 spool
drwxr-xr-x    2 root     root        4.0K May 22 17:00 www

Inzwischen wird es sich um einen einzelnen Knotenwürfel handeln.

Der Inhalt von /var/lib/kubelet/kubeadm-flags.env ist

KUBELET_KUBEADM_ARGS=--cgroup-driver=cgroupfs --cni-bin-dir=/opt/cni/bin --cni-conf-dir=/etc/cni/net.d --network-plugin=cni --resolv-conf=/run/systemd/resolve/resolv.conf

Schade, dass es keine Protokolle vom Scheduler gibt.

Der Inhalt von /var/lib/kubelet/kubeadm-flags.env ist

Das Flag --resolv-conf scheint hinzugefügt worden zu sein, das ist also in Ordnung.

Inzwischen wird es sich um einen einzelnen Knotenwürfel handeln.

Rufen Sie kubeadm reset und dann erneut kubeadm init ... an.
Kopieren Sie dann die Konfiguration in Ihr Benutzerverzeichnis und versuchen Sie, ein Pod-Netzwerk-Plugin (Weave) zu installieren:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

und sehen, ob die DNS-Pods bereit sind. Dies ist möglicherweise nicht sinnvoll, aber versuchen Sie es bitte.

Nach einer neuen Initialisierung sehen die Pods (wieder) folgendermaßen aus:

NAMESPACE     NAME                                  READY     STATUS    RESTARTS   AGE
kube-system   coredns-78fcdf6894-lcmg6              0/1       Pending   0          1m
kube-system   coredns-78fcdf6894-wd9nt              0/1       Pending   0          1m
kube-system   etcd-beetlejuice                      1/1       Running   0          18s
kube-system   kube-apiserver-beetlejuice            1/1       Running   0          36s
kube-system   kube-controller-manager-beetlejuice   1/1       Running   0          12s
kube-system   kube-proxy-zrhgj                      1/1       Running   0          1m
kube-system   kube-scheduler-beetlejuice            1/1       Running   0          24s

Nach der Installation des Web-Plugins sieht es folgendermaßen aus:

NAMESPACE     NAME                                  READY     STATUS    RESTARTS   AGE
kube-system   coredns-78fcdf6894-lcmg6              1/1       Running   0          2m
kube-system   coredns-78fcdf6894-wd9nt              1/1       Running   0          2m
kube-system   etcd-beetlejuice                      1/1       Running   0          1m
kube-system   kube-apiserver-beetlejuice            1/1       Running   0          1m
kube-system   kube-controller-manager-beetlejuice   1/1       Running   0          58s
kube-system   kube-proxy-zrhgj                      1/1       Running   0          2m
kube-system   kube-scheduler-beetlejuice            1/1       Running   0          1m
kube-system   weave-net-ldxg5                       2/2       Running   0          24s

jetzt funktioniert es 👍

Ich habe kubernetes-dashboard jetzt ohne Probleme installiert, das hat vorher nicht funktioniert. Aber ist das die Lösung für dieses Problem?

Danke fürs Testen.

Aber ist das die Lösung für dieses Problem?

Ich würde sagen - ja, vorerst.

Sowohl die CLI als auch die Dokumentation weisen die Benutzer an, ein Pod-Netzwerk-Plugin direkt nach init zu installieren.
Wir haben nicht genau dokumentiert, was passiert, wenn dieser Schritt übersprungen wird, aber es wird erwartet, dass der Cluster nicht richtig funktioniert ...

Wenn jemand der Meinung ist, dass dieses Problem nicht geschlossen werden sollte, öffnen Sie es bitte erneut.

Ich habe das genaue Problem, obwohl das Web-Plugin den Trick nicht gemacht hat. Ich sehe immer noch Coredns-Pods im ContainerCreating- Status. Es ist jetzt fast eine Stunde her, also ...

linux-uwkw:~ # kubectl cluster-info
Kubernetes master is running at https://192.168.178.163:6443
KubeDNS is running at https://192.168.178.163:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
linux-uwkw:~ # cat /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS=--cgroup-driver=cgroupfs --cni-bin-dir=/opt/cni/bin --cni-conf-dir=/etc/cni/net.d --network-plugin=cni
  • Das Flag --resolv-conf fehlt. Ich denke, das ist ein Problem. Wie kann ich kubeqdm konfigurieren, um es hinzuzufügen?
  • Das --cni-bin-dir=/opt/cni/bin ist falsch. In meinem System habe ich das nicht.
linux-uwkw:~ # rpm -ql cni
/etc/cni
/etc/cni/net.d
/etc/cni/net.d/99-loopback.conf.sample
/usr/lib/cni
/usr/lib/cni/noop
/usr/sbin/cnitool
/usr/share/doc/packages/cni
/usr/share/doc/packages/cni/CONTRIBUTING.md
/usr/share/doc/packages/cni/DCO
/usr/share/doc/packages/cni/README.md
/usr/share/licenses/cni
/usr/share/licenses/cni/LICENSE

Ich denke, ich muss dort /usr/sbin , oder?

Die Protokolle des Schedulers lauten außerdem:

linux-uwkw:~ # docker logs k8s_kube-scheduler_kube-scheduler-linux-uwkw_kube-system_a00c35e56ebd0bdfcd77d53674a5d2a1_0
I0813 21:18:19.816990       1 server.go:126] Version: v1.11.2
W0813 21:18:19.821719       1 authorization.go:47] Authorization is disabled
W0813 21:18:19.821744       1 authentication.go:55] Authentication is disabled
I0813 21:18:19.821787       1 insecure_serving.go:47] Serving healthz insecurely on 127.0.0.1:10251
E0813 21:18:25.603025       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.PersistentVolume: persistentvolumes is forbidden: User "system:kube-scheduler" cannot list persistentvolumes at the cluster scope
E0813 21:18:25.603122       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.ReplicationController: replicationcontrollers is forbidden: User "system:kube-scheduler" cannot list replicationcontrollers at the cluster scope
E0813 21:18:25.603161       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.Service: services is forbidden: User "system:kube-scheduler" cannot list services at the cluster scope
E0813 21:18:25.603253       1 reflector.go:205] k8s.io/kubernetes/cmd/kube-scheduler/app/server.go:176: Failed to list *v1.Pod: pods is forbidden: User "system:kube-scheduler" cannot list pods at the cluster scope
E0813 21:18:25.603286       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.StorageClass: storageclasses.storage.k8s.io is forbidden: User "system:kube-scheduler" cannot list storageclasses.storage.k8s.io at the cluster scope
E0813 21:18:25.603335       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.PersistentVolumeClaim: persistentvolumeclaims is forbidden: User "system:kube-scheduler" cannot list persistentvolumeclaims at the cluster scope
E0813 21:18:25.603364       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1beta1.StatefulSet: statefulsets.apps is forbidden: User "system:kube-scheduler" cannot list statefulsets.apps at the cluster scope
E0813 21:18:25.603437       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1beta1.PodDisruptionBudget: poddisruptionbudgets.policy is forbidden: User "system:kube-scheduler" cannot list poddisruptionbudgets.policy at the cluster scope
E0813 21:18:25.603491       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1beta1.ReplicaSet: replicasets.extensions is forbidden: User "system:kube-scheduler" cannot list replicasets.extensions at the cluster scope
E0813 21:18:25.605642       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.Node: nodes is forbidden: User "system:kube-scheduler" cannot list nodes at the cluster scope
E0813 21:18:26.603723       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.PersistentVolume: persistentvolumes is forbidden: User "system:kube-scheduler" cannot list persistentvolumes at the cluster scope
E0813 21:18:26.606225       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.Service: services is forbidden: User "system:kube-scheduler" cannot list services at the cluster scope
E0813 21:18:26.606295       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.ReplicationController: replicationcontrollers is forbidden: User "system:kube-scheduler" cannot list replicationcontrollers at the cluster scope
E0813 21:18:26.607860       1 reflector.go:205] k8s.io/kubernetes/cmd/kube-scheduler/app/server.go:176: Failed to list *v1.Pod: pods is forbidden: User "system:kube-scheduler" cannot list pods at the cluster scope
E0813 21:18:26.611457       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.StorageClass: storageclasses.storage.k8s.io is forbidden: User "system:kube-scheduler" cannot list storageclasses.storage.k8s.io at the cluster scope
E0813 21:18:26.612777       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.PersistentVolumeClaim: persistentvolumeclaims is forbidden: User "system:kube-scheduler" cannot list persistentvolumeclaims at the cluster scope
E0813 21:18:26.616076       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1beta1.StatefulSet: statefulsets.apps is forbidden: User "system:kube-scheduler" cannot list statefulsets.apps at the cluster scope
E0813 21:18:26.616779       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1beta1.PodDisruptionBudget: poddisruptionbudgets.policy is forbidden: User "system:kube-scheduler" cannot list poddisruptionbudgets.policy at the cluster scope
E0813 21:18:26.619308       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1beta1.ReplicaSet: replicasets.extensions is forbidden: User "system:kube-scheduler" cannot list replicasets.extensions at the cluster scope
E0813 21:18:26.620048       1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1.Node: nodes is forbidden: User "system:kube-scheduler" cannot list nodes at the cluster scope
I0813 21:18:28.429769       1 controller_utils.go:1025] Waiting for caches to sync for scheduler controller
I0813 21:18:28.533687       1 controller_utils.go:1032] Caches are synced for scheduler controller
I0813 21:18:28.533868       1 leaderelection.go:185] attempting to acquire leader lease  kube-system/kube-scheduler...
I0813 21:18:28.539621       1 leaderelection.go:194] successfully acquired lease kube-system/kube-scheduler

Ich habe das genaue Problem

Ich denke nicht, dass es das gleiche Problem ist.

KubeDNS läuft bei

CoreDNS ist der Standard-DNS-Server in 1.11.x. Hast du das absichtlich aktiviert?

cat /var/lib/kubelet/kubeadm-flags.env

/var/lib/kubelet/kubeadm-flags.env wird zur Laufzeit von kubeadm automatisch generiert und sollte nicht bearbeitet werden.
Sie können Flags in /etc/default/kubelet hinzufügen

siehe die Infos hier:
https://github.com/kubernetes/kubernetes/blob/master/build/debs/10-kubeadm.conf

Das Flag --resolv-conf fehlt.

Es wird nur hinzugefügt, wenn Ihre Distribution dies verwendet:
https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html

--cni-bin-dir = / opt / cni / bin --cni-conf-dir = / etc / cni / net.d.

Dies sind die Standardwerte, aber AFAIK sollte zur Laufzeit nicht automatisch hinzugefügt werden.

schwer zu sagen, was das Problem in Ihrem Fall ist.
Öffnen Sie besser ein neues Problem und folgen Sie der Vorlage für den Problembericht.

Ich habe doch mein Problem gefunden. Mir fehlte die loopback Binärdatei von CNI bei /opt/cni/bin .

cd /opt/cni/bin
curl -L -O https://github.com/containernetworking/cni/releases/download/v0.4.0/cni-amd64-v0.4.0.tgz
tar -xf cni-amd64-v0.4.0.tgz
systemctl restart kubelet

Ich traf das gleiche Problem und löste es durch die Installation von Flanell. Nach der Installation von Flanell können Coredns und andere Pods korrekt erstellt werden.

Warum kann die Installation von Flanell das Problem lösen?

Ich initiiere meinen K8s-Cluster auch mit kubeadm und füge das Argument --pod-network-cidr . Ich denke also, wenn Flanell oder andere Pod-Netzwerk-Add-Ons nicht installiert sind, kann Kubelet nicht wissen, wie man dem Pod eine IP zuweist und einen Fehler auslöst.

Sie sagten, dass Sie die folgende Meldung mit journal -xeu kubelet :

26710 kubelet.go:2112] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninit
Jul 09 21:54:49 beetlejuice kubelet[26710]: E0709 21:54:49.566069   26710 dns.go:131] Nameserver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: 213.133.99.99 213.133.98.98 213.133.100.100
Jul 09 21:54:53 beetlejuice kubelet[26710]: W0709 21:54:53.884846   26710 cni.go:172] Unable to update cni config: No networks found in /etc/cni/net.d

Ich habe auch ähnliche Protokolle auf meinem Computer gesehen und denke, dass dies die Ursache des Problems ist.

Warum kann die Installation von Flanell das Problem lösen?

Ein CNI-Plugin muss installiert sein:
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm
Installing a pod network add-on
You must install a pod network add-on so that your pods can communicate with each other.

Ein CNI-Plugin muss installiert sein:
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm

Meine Coredns können nicht gestartet werden, da nach dem Starten der Kubernetes kein Pod-Netzwerk-Add-On installiert ist und ich es jetzt weiß, danke.

Schade, dass es keine Protokolle vom Scheduler gibt.

Der Inhalt von /var/lib/kubelet/kubeadm-flags.env ist

Das Flag --resolv-conf scheint hinzugefügt worden zu sein, das ist also in Ordnung.

Inzwischen wird es sich um einen einzelnen Knotenwürfel handeln.

Rufen Sie kubeadm reset und dann erneut kubeadm init ... an.
Kopieren Sie dann die Konfiguration in Ihr Benutzerverzeichnis und versuchen Sie, ein Pod-Netzwerk-Plugin (Weave) zu installieren:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

und sehen, ob die DNS-Pods bereit sind. Dies ist möglicherweise nicht sinnvoll, aber versuchen Sie es bitte.

Für mich geht das! Vielen Dank

Schade, dass es keine Protokolle vom Scheduler gibt.

Der Inhalt von /var/lib/kubelet/kubeadm-flags.env ist

Das Flag --resolv-conf scheint hinzugefügt worden zu sein, das ist also in Ordnung.

Inzwischen wird es sich um einen einzelnen Knotenwürfel handeln.

Rufen Sie kubeadm reset und dann erneut kubeadm init ... an.
Kopieren Sie dann die Konfiguration in Ihr Benutzerverzeichnis und versuchen Sie, ein Pod-Netzwerk-Plugin (Weave) zu installieren:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

und sehen, ob die DNS-Pods bereit sind. Dies ist möglicherweise nicht sinnvoll, aber versuchen Sie es bitte.

Servicekonto / Webnetz konfiguriert
clusterrole.rbac.authorization.k8s.io/weave-net konfiguriert
clusterrolebinding.rbac.authorization.k8s.io/weave-net konfiguriert
role.rbac.authorization.k8s.io/weave-net konfiguriert
rolebinding.rbac.authorization.k8s.io/weave-net konfiguriert
In der Version "extensions / v1beta1" können keine Übereinstimmungen für die Art "DaemonSet" erkannt werden.

Konfiguration nicht möglich

In der Version "extensions / v1beta1" können keine Übereinstimmungen für die Art "DaemonSet" erkannt werden.

Das ist ein Fehler auf der Seite des CNI-Plugins.
Probieren Sie stattdessen das Callico CNI-Plugin aus.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen