<p>kubeadm init hÀngt bei "Erster Knoten hat sich registriert, ist aber noch nicht bereit"</p>

Erstellt am 29. MĂ€rz 2017  Â·  52Kommentare  Â·  Quelle: kubernetes/kubeadm

Nach welchen SchlĂŒsselwörtern haben Sie in Kubernetes-Ausgaben gesucht, bevor Sie diese eingereicht haben? (Wenn Sie Duplikate gefunden haben, sollten Sie stattdessen dort antworten.): kubeadm

Ist dies ein FEHLERBERICHT oder eine FEATURE-ANFRAGE? (wÀhlen Sie einen): Fehlerbericht

Kubernetes-Version (verwenden Sie kubectl version ): 1.6.0

Umgebung :

  • Cloud-Anbieter oder Hardwarekonfiguration : Raspberry Pi 3 Model B
  • OS (zB von /etc/os-release): Hypriot 1.4.0 (mit Docker manuell auf 1.12.6 herabgestuft, Hypriot 1.4.0 wird mit Docker 17.03.0-ce ausgeliefert)
  • Kernel (zB uname -a ): 4.4.50-hypriotos-v7+
  • Tools installieren : kubeadm
  • Andere :

Was ist passiert :

Befolgen Sie genau die Schritte :

# kubeadm init --apiserver-cert-extra-sans redacted --pod-network-cidr 10.244.0.0/16
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.6.0
[init] Using Authorization mode: RBAC
[preflight] Running pre-flight checks
[certificates] Generated CA certificate and key.
[certificates] Generated API server certificate and key.
[certificates] API Server serving cert is signed for DNS names [kube-01 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local redacted] and IPs [10.96.0.1 10.0.1.101]
[certificates] Generated API server kubelet client certificate and key.
[certificates] Generated service account token signing key and public key.
[certificates] Generated front-proxy CA certificate and key.
[certificates] Generated front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[apiclient] Created API client, waiting for the control plane to become ready
[apiclient] All control plane components are healthy after 206.956919 seconds
[apiclient] Waiting for at least one node to register and become ready
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet

Die letzte Nachricht "Erster Knoten hat sich registriert, ist aber noch nicht bereit" wiederholt sich endlos und kubeadm wird nie beendet. Ich habe mich in einer anderen Sitzung mit dem Masterserver verbunden, um zu sehen, ob alle Docker-Container wie erwartet ausgefĂŒhrt wurden und sie sind:

$ docker ps
CONTAINER ID        IMAGE                                                                                                                          COMMAND                  CREATED             STATUS              PORTS               NAMES
54733aa1aae3        gcr.io/google_containers/kube-controller-manager-arm<strong i="6">@sha256</strong>:22f30303212b276b6868b89c8e92c5fb2cb93641e59c312b254c6cb0fa111b2a   "kube-controller-mana"   10 minutes ago      Up 10 minutes                           k8s_kube-controller-manager_kube-controller-manager-kube-01_kube-system_d44abf63e3ab24853ab86643e0b96d81_0
55b6bf2cc09e        gcr.io/google_containers/etcd-arm<strong i="7">@sha256</strong>:0ce1dcd85968a3242995dfc168abba2c3bc03d0e3955f52a0b1e79f90039dcf2                      "etcd --listen-client"   11 minutes ago      Up 11 minutes                           k8s_etcd_etcd-kube-01_kube-system_90ab26991bf9ad676a430c7592d08bee_0
bd0dc34d5e77        gcr.io/google_containers/kube-apiserver-arm<strong i="8">@sha256</strong>:c54b8c609a6633b5397173c763aba0656c6cb2601926cce5a5b4870d58ba67bd            "kube-apiserver --ins"   12 minutes ago      Up 12 minutes                           k8s_kube-apiserver_kube-apiserver-kube-01_kube-system_4d99c225ec157dc715c26b59313aeac8_1
1c4c7b69a3eb        gcr.io/google_containers/kube-scheduler-arm<strong i="9">@sha256</strong>:827449ef1f3d8c0a54d842af9d6528217ccd2d36cc2b49815d746d41c7302050            "kube-scheduler --kub"   13 minutes ago      Up 13 minutes                           k8s_kube-scheduler_kube-scheduler-kube-01_kube-system_3ef1979df7569495bb727d12ac1a7a6f_0
4fd0635f9439        gcr.io/google_containers/pause-arm:3.0                                                                                         "/pause"                 14 minutes ago      Up 14 minutes                           k8s_POD_kube-controller-manager-kube-01_kube-system_d44abf63e3ab24853ab86643e0b96d81_0
cfb4a758ad96        gcr.io/google_containers/pause-arm:3.0                                                                                         "/pause"                 14 minutes ago      Up 14 minutes                           k8s_POD_etcd-kube-01_kube-system_90ab26991bf9ad676a430c7592d08bee_0
a631d8b6c11c        gcr.io/google_containers/pause-arm:3.0                                                                                         "/pause"                 14 minutes ago      Up 14 minutes                           k8s_POD_kube-scheduler-kube-01_kube-system_3ef1979df7569495bb727d12ac1a7a6f_0
309b62fff122        gcr.io/google_containers/pause-arm:3.0                                                                                         "/pause"                 14 minutes ago      Up 14 minutes                           k8s_POD_kube-apiserver-kube-01_kube-system_4d99c225ec157dc715c26b59313aeac8_0

Ich habe den Admin kubeconfig auf meinen lokalen Computer kopiert und mit kubectl (1.6.0) nachgesehen, was mit dem Knoten vor sich ging, den kubeadm als registriert angab:

$ kubectl describe node kube-01
Name:           kube-01
Role:
Labels:         beta.kubernetes.io/arch=arm
            beta.kubernetes.io/os=linux
            kubernetes.io/hostname=kube-01
Annotations:        node.alpha.kubernetes.io/ttl=0
            volumes.kubernetes.io/controller-managed-attach-detach=true
Taints:         <none>
CreationTimestamp:  Tue, 28 Mar 2017 22:06:40 -0700
Phase:
Conditions:
  Type          Status  LastHeartbeatTime           LastTransitionTime          Reason              Message
  ----          ------  -----------------           ------------------          ------              -------
  OutOfDisk         False   Tue, 28 Mar 2017 22:17:24 -0700     Tue, 28 Mar 2017 22:06:40 -0700     KubeletHasSufficientDisk    kubelet has sufficient disk space available
  MemoryPressure    False   Tue, 28 Mar 2017 22:17:24 -0700     Tue, 28 Mar 2017 22:06:40 -0700     KubeletHasSufficientMemory  kubelet has sufficient memory available
  DiskPressure      False   Tue, 28 Mar 2017 22:17:24 -0700     Tue, 28 Mar 2017 22:06:40 -0700     KubeletHasNoDiskPressure    kubelet has no disk pressure
  Ready         False   Tue, 28 Mar 2017 22:17:24 -0700     Tue, 28 Mar 2017 22:06:40 -0700     KubeletNotReady         runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Addresses:      10.0.1.101,10.0.1.101,kube-01
Capacity:
 cpu:       4
 memory:    882632Ki
 pods:      110
Allocatable:
 cpu:       4
 memory:    780232Ki
 pods:      110
System Info:
 Machine ID:            9989a26f06984d6dbadc01770f018e3b
 System UUID:           9989a26f06984d6dbadc01770f018e3b
 Boot ID:           7a77e2e8-dd62-4989-b9e7-0fb52747162a
 Kernel Version:        4.4.50-hypriotos-v7+
 OS Image:          Raspbian GNU/Linux 8 (jessie)
 Operating System:      linux
 Architecture:          arm
 Container Runtime Version: docker://1.12.6
 Kubelet Version:       v1.6.0
 Kube-Proxy Version:        v1.6.0
PodCIDR:            10.244.0.0/24
ExternalID:         kube-01
Non-terminated Pods:        (4 in total)
  Namespace         Name                        CPU Requests    CPU Limits  Memory Requests Memory Limits
  ---------         ----                        ------------    ----------  --------------- -------------
  kube-system           etcd-kube-01                0 (0%)      0 (0%)      0 (0%)      0 (0%)
  kube-system           kube-apiserver-kube-01          250m (6%)   0 (0%)      0 (0%)      0 (0%)
  kube-system           kube-controller-manager-kube-01     200m (5%)   0 (0%)      0 (0%)      0 (0%)
  kube-system           kube-scheduler-kube-01          100m (2%)   0 (0%)      0 (0%)      0 (0%)
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  CPU Requests  CPU Limits  Memory Requests Memory Limits
  ------------  ----------  --------------- -------------
  550m (13%)    0 (0%)      0 (0%)      0 (0%)
Events:
  FirstSeen LastSeen    Count   From            SubObjectPath   Type        Reason          Message
  --------- --------    -----   ----            -------------   --------    ------          -------
  14m       14m     1   kubelet, kube-01            Normal      Starting        Starting kubelet.
  14m       10m     55  kubelet, kube-01            Normal      NodeHasSufficientDisk   Node kube-01 status is now: NodeHasSufficientDisk
  14m       10m     55  kubelet, kube-01            Normal      NodeHasSufficientMemory Node kube-01 status is now: NodeHasSufficientMemory
  14m       10m     55  kubelet, kube-01            Normal      NodeHasNoDiskPressure   Node kube-01 status is now: NodeHasNoDiskPressure

Dies deckte den Grund auf, warum das Kubelet nicht bereit war:

"Laufzeitnetzwerk nicht bereit: NetworkReady=false Grund:NetworkPluginNotReady message:docker : Netzwerk-Plugin ist nicht bereit: cni config"

In meinen Experimenten mit kubeadm 1.5 wurde CNI nicht benötigt, um den Masterknoten aufzurufen, daher ist dies ĂŒberraschend. Sogar der Erste-Schritte-Leitfaden schlĂ€gt vor, dass kubeadm init erfolgreich abgeschlossen werden sollte, bevor Sie mit der Bereitstellung eines CNI-Plugins fortfahren.

Wie auch immer, ich habe Flanell mit kubectl von meinem lokalen Computer aus bereitgestellt:

$ kubectl apply -f kube-flannel.yml

Wo war der Inhalt der Datei:

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: flannel
  namespace: kube-system
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-flannel-cfg
  namespace: kube-system
  labels:
    tier: node
    app: flannel
data:
  cni-conf.json: |
    {
      "name": "cbr0",
      "type": "flannel",
      "delegate": {
        "isDefaultGateway": true
      }
    }
  net-conf.json: |
    {
      "Network": "10.244.0.0/16",
      "Backend": {
        "Type": "vxlan"
      }
    }
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: kube-flannel-ds
  namespace: kube-system
  labels:
    tier: node
    app: flannel
spec:
  template:
    metadata:
      labels:
        tier: node
        app: flannel
    spec:
      hostNetwork: true
      nodeSelector:
        beta.kubernetes.io/arch: amd64
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      serviceAccountName: flannel
      containers:
      - name: kube-flannel
        image: quay.io/coreos/flannel:v0.7.0-amd64
        command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ]
        securityContext:
          privileged: true
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        volumeMounts:
        - name: run
          mountPath: /run
        - name: flannel-cfg
          mountPath: /etc/kube-flannel/
      - name: install-cni
        image: quay.io/coreos/flannel:v0.7.0-amd64
        command: [ "/bin/sh", "-c", "set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done" ]
        volumeMounts:
        - name: cni
          mountPath: /etc/cni/net.d
        - name: flannel-cfg
          mountPath: /etc/kube-flannel/
      volumes:
        - name: run
          hostPath:
            path: /run
        - name: cni
          hostPath:
            path: /etc/cni/net.d
        - name: flannel-cfg
          configMap:
            name: kube-flannel-cfg

Aber es war nie geplant:

$ kubectl describe ds kube-flannel-ds -n kube-system
Name:       kube-flannel-ds
Selector:   app=flannel,tier=node
Node-Selector:  beta.kubernetes.io/arch=amd64
Labels:     app=flannel
        tier=node
Annotations:    kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"extensions/v1beta1","kind":"DaemonSet","metadata":{"annotations":{},"labels":{"app":"flannel","tier":"node"},"name":"kube-flannel-ds","n...
Desired Number of Nodes Scheduled: 0
Current Number of Nodes Scheduled: 0
Number of Nodes Scheduled with Up-to-date Pods: 0
Number of Nodes Scheduled with Available Pods: 0
Number of Nodes Misscheduled: 0
Pods Status:    0 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
  Labels:       app=flannel
            tier=node
  Service Account:  flannel
  Containers:
   kube-flannel:
    Image:  quay.io/coreos/flannel:v0.7.0-amd64
    Port:
    Command:
      /opt/bin/flanneld
      --ip-masq
      --kube-subnet-mgr
    Environment:
      POD_NAME:      (v1:metadata.name)
      POD_NAMESPACE:     (v1:metadata.namespace)
    Mounts:
      /etc/kube-flannel/ from flannel-cfg (rw)
      /run from run (rw)
   install-cni:
    Image:  quay.io/coreos/flannel:v0.7.0-amd64
    Port:
    Command:
      /bin/sh
      -c
      set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done
    Environment:    <none>
    Mounts:
      /etc/cni/net.d from cni (rw)
      /etc/kube-flannel/ from flannel-cfg (rw)
  Volumes:
   run:
    Type:   HostPath (bare host directory volume)
    Path:   /run
   cni:
    Type:   HostPath (bare host directory volume)
    Path:   /etc/cni/net.d
   flannel-cfg:
    Type:   ConfigMap (a volume populated by a ConfigMap)
    Name:   kube-flannel-cfg
    Optional:   false
Events:     <none>

Ich habe trotzdem versucht, mich einem der anderen Server anzuschließen, nur um zu sehen, was passieren wĂŒrde. Ich habe kubeadm token create um manuell ein Token zu erstellen, das ich von einem anderen Computer aus verwenden konnte. Auf der anderen Maschine:

kubeadm join --token $TOKEN 10.0.1.101:6443
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[discovery] Trying to connect to API Server "10.0.1.101:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://10.0.1.101:6443"
[discovery] Failed to request cluster info, will try again: [User "system:anonymous" cannot get configmaps in the namespace "kube-public". (get configmaps cluster-info)]
[discovery] Failed to request cluster info, will try again: [User "system:anonymous" cannot get configmaps in the namespace "kube-public". (get configmaps cluster-info)]
[discovery] Failed to request cluster info, will try again: [User "system:anonymous" cannot get configmaps in the namespace "kube-public". (get configmaps cluster-info)]

Und die letzte Nachricht wiederholte sich ewig.

Was Sie erwartet haben, zu passieren :

kubeadm init sollte ein Bootstrap-Token abschließen und produzieren.

Hilfreichster Kommentar

Sie mĂŒssen rbac-Rollen hinzufĂŒgen, um Flannel zum Lesen von der API zu autorisieren.

Falls sich noch jemand fragt, was das bedeutet, es sieht so aus, als ob Sie kube-flannel-rbac.yml erstellen mĂŒssen, bevor Sie Flanell erstellen:

kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Alle 52 Kommentare

Genau dasselbe passiert mir unter Ubuntu 16.04.02, sowohl GCE- als auch lokale VMWare-Installationen, Docker-Version 1.12.6, Kernel 4.8.0-44-generic 47~16.04.1-Ubuntu SMP.

Das Kubelet-Log zeigt eine Warnung ĂŒber das Fehlen von /etc/cni/net.d vor dem Fehler, den wir in jimmycuadras Bericht sehen:

Mar 29 04:43:25 instance-1 kubelet[6800]: W0329 04:43:25.763117    6800 cni.go:157] Unable to update cni config: No networks found in /etc/cni/net.d
Mar 29 04:43:25 instance-1 kubelet[6800]: E0329 04:43:25.763515    6800 kubelet.go:2067] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

Gleiches Problem bei Ubuntu AWS VM. Docker 1.12.5

root@ip-10-43-0-20 :~# kubeadm-Version
kubeadm version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.0", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"2017-03-28T16:24: 30Z", GoVersion:"go1.7.5"

root@ip-10-43-0-20 :~# uname -a
Linux ip-10-43-0-20 4.4.0-45-generic #66-Ubuntu SMP Mi 19. Okt 14:12:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

root@ip-10-43-0-20 :~# kubeadm init --config cfg.yaml
[kubeadm] WARNUNG: kubeadm befindet sich in der Beta-Phase, bitte verwenden Sie es nicht fĂŒr Produktionscluster.
[init] Kubernetes-Version verwenden: v1.6.0
[init] Verwenden des Autorisierungsmodus: RBAC
[init] WARNUNG: Damit Cloudprovider-Integrationen funktionieren, muss --cloud-provider fĂŒr alle Kubelets im Cluster festgelegt werden.
(/etc/systemd/system/kubelet.service.d/10-kubeadm.conf sollte zu diesem Zweck bearbeitet werden)
[Preflight] AusfĂŒhren von Pre-Flight-Checks
[Preflight] Starten des Kubelet-Dienstes
[Zertifikate] Generiertes CA-Zertifikat und -SchlĂŒssel.
[Zertifikate] Generiertes API-Serverzertifikat und -schlĂŒssel.
[Zertifikate] API-Server-Bereitstellungszertifikat ist fĂŒr DNS-Namen [ip-10-43-0-20 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] und IPs [10.96.0.1 10.43.0.20 . signiert ]
[Zertifikate] Generiertes API-Server-Kubelet-Client-Zertifikat und -SchlĂŒssel.
[Zertifikate] Generierter Dienstkonto-Token-SignaturschlĂŒssel und öffentlicher SchlĂŒssel.
[Zertifikate] Generiertes Front-Proxy-CA-Zertifikat und -SchlĂŒssel.
[Zertifikate] Generiertes Front-Proxy-Client-Zertifikat und -SchlĂŒssel.
[Zertifikate] GĂŒltige Zertifikate und SchlĂŒssel existieren jetzt in "/etc/kubernetes/pki"
[kubeconfig] KubeConfig-Datei auf DatentrÀger geschrieben: "/etc/kubernetes/admin.conf"
[kubeconfig] KubeConfig-Datei auf Festplatte geschrieben: "/etc/kubernetes/kubelet.conf"
[kubeconfig] KubeConfig-Datei auf DatentrÀger geschrieben: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] KubeConfig-Datei auf die Festplatte geschrieben: "/etc/kubernetes/scheduler.conf"
[apiclient] API-Client erstellt, der darauf wartet, dass die Steuerungsebene bereit ist
[apiclient] Alle Komponenten der Steuerungsebene sind nach 16.531681 Sekunden fehlerfrei
[apiclient] Warten, bis sich mindestens ein Knoten registriert und bereit ist
[apiclient] Erster Knoten hat sich registriert, ist aber noch nicht bereit
[apiclient] Erster Knoten hat sich registriert, ist aber noch nicht bereit
[apiclient] Erster Knoten hat sich registriert, ist aber noch nicht bereit

++ das gleiche Problem (Ubuntu 16.04.1)

Das gleiche hier auf Ubuntu 16.04

Unter CentOS 7 habe ich das Kubelet auf 1.5.4 herabgestuft. Das hat es fĂŒr mich gelöst. Es scheint, als ob die FertigprĂŒfung im 1.6.0 Kubelet anders funktioniert.

Gleiches Problem bei CentOS 7 auf einem Bare-Metal-x64-Rechner, seit dem Upgrade auf k8s 1.6.0

Gleiches Problem unter Ubuntu 16.04

Das gleiche Problem unter Ubuntu 16.04, manuelles Downgrade des kubelet Pakets löste das Problem.

# apt install kubelet=1.5.6-00

@ctrlaltdel bei mir hat es nicht funktioniert.

Ich vermute, dass dies ein Kubelet-Problem ist. Es sollte den Knoten nicht als nicht bereit markieren, wenn CNI nicht konfiguriert ist. Nur Pods, die CNI erfordern, sollten als nicht bereit markiert werden.

@jbeda Weißt du, wann dieses Problem behoben wird?

@kristiandrucker – nein – ich

@jbeda Ok, aber nachdem das Problem behoben ist, was dann? Kubelet aus der Quelle neu erstellen?

@kristiandrucker Dies muss in einem Point-Release von k8s veröffentlicht werden, wenn es sich um ein Kubelet-Problem handelt.

Ich vermute, dass https://github.com/kubernetes/kubernetes/pull/43474 die Ursache ist. Ich werde einen Fehler melden und mich an die Netzwerkleute wenden.

@dcbw Bist du da?

Anscheinend besteht das Problem darin, dass ein DaemonSet nicht fĂŒr Knoten geplant ist, die die Bedingung Net workReady:false aufweisen , da die ÜberprĂŒfungen fĂŒr die Planung von Pods nicht stNetwork:true sollte auf einem Knoten geplant werden, der Net workReady:false ist, ein Pod ho

Funktioniert als Workaround das HinzufĂŒgen der Anmerkung scheduler.alpha.kubernetes.io/critical-pod zu Ihrem DaemonSet wieder?

@janetkuo @lukaszo können Sie das DS-Verhalten untersuchen?

Im #sig-Netzwerk gibt es ĂŒbrigens auch eine fortlaufende Diskussion ĂŒber Slack.

Gleiches Problem CentOS 7 x64

@prapdm Dies scheint nicht ausfĂŒhren .

CentOS Linux-Version 7.3.1611 (Kern)

Ich habe es auf einem Knoten mit Ubuntu 16.04 versucht. Es hÀngt mit der Meldung "Noch nicht bereit". Ich habe auch Flanell DaemonSet manuell erstellt, aber in meinem Fall hat es ohne Probleme einen Pod geplant. Der Daemon-Pod selbst ging mit dem Fehler in den CrashLoopBackOff: E0329 22:57:03.065651 1 main.go:127] Failed to create SubnetManager: error retrieving pod spec for 'kube-system/kube-flannel-ds-z3xgn': the server does not allow access to the requested resource (get pods kube-flannel-ds-z3xgn)

Ich werde auch Centos anprobieren, aber ich denke nicht, dass DaemonSet hier schuld ist, kubeadm hÀngt hier.

das ist ein rbac-Berechtigungsfehler.

@jimmycuadra Mir ist gerade aufgefallen, dass Sie es auf einem Raspberry Pi Armprozessor verfĂŒgt.

FĂŒr das Flanell-Daemon-Set haben Sie:

``` nodeSelector:
beta.kubernetes.io/arch: amd64

but your node is labeled with: 

beta.kubernetes.io/arch=arm
```

DaemonSet kann also keinen Pod auf diesem Knoten essen, Àndern Sie einfach die Knotenauswahl und es wird funktionieren.
Sie erhalten den Fehler immer noch mit rbac-Berechtigung, aber vielleicht sagt Ihnen @mikedanese , wie Sie ihn beheben können, da ich ihn nicht kenne.

Ah, danke @lukaszo! Ich habe dieses Mal nicht die RPi-spezifische Anleitung befolgt (die ich fĂŒr k8s 1.5 verwendet habe) und habe diesen Schritt vergessen. Ich hĂ€tte es entdeckt, als das Daemon-Set fehlerhaft war, aber wie sich herausstellte, bin ich nicht so weit gekommen. :}

Ich sehe dieses Problem auch, wenn ich die Anweisungen wie hier beschrieben befolge:
https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/

hat es nach der Installation des richtigen Flanell-Netzwerk-Pods zum Laufen gebracht.

Ich denke, @jimmycuadra könnte es mit @lukaszo- Kommentar zum

Wenn die Nachricht [apiclient] First node has registered, but is not ready yet mit dem Fluten beginnt, wird der Kubernetes-API-Server ausgefĂŒhrt, sodass Sie Folgendes tun können:

curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | kubectl create -f -

FĂŒr die Himbeer-Pi-Installation:

curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -

Dann wird es fertig:

[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node has registered, but is not ready yet
[apiclient] First node is ready after 245.050597 seconds
[apiclient] Test deployment succeeded
[token] Using token: 4dc99e............
[apiconfig] Created RBAC rules
[addons] Created essential addon: kube-proxy
[addons] Created essential addon: kube-dns

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run (as a regular user):

  sudo cp /etc/kubernetes/admin.conf $HOME/
  sudo chown $(id -u):$(id -g) $HOME/admin.conf
  export KUBECONFIG=$HOME/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  http://kubernetes.io/docs/admin/addons/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join --token 4dc99e........... 192.168.1.200:6443

Ich hatte das gleiche Problem und habe es folgendermaßen behoben:
du solltest root sein

in der 1.6.0 von kubeadm sollten Sie die Umgebungsvariable $KUBELET_NETWORK_ARGS in der Systemdatei entfernen: /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

dann DĂ€monen neu starten

systemctl daemon-reload

kubeadm init

das dauert ein bisschen...nach dem erfolg

Laden Sie das Netzwerk-Add-On herunter, das Sie verwenden möchten: http://kubernetes.io/docs/admin/addons/

Calico scheint der beste zu sein, bin mir nicht sicher, aber noch im Test fĂŒr mich.

@thelastworm
Ich habe es gerade versucht, und es hat nicht funktioniert.
Ubuntu 16.04.2 LTS, kubeadm 1.6.0
Ich habe folgende Schritte gemacht:

  1. Bearbeiten Sie /etc/systemd/system/kubelet.service.d/10-kubeadm.conf und entfernen Sie $KUBELET_NETWORK_ARGS
  2. kubeadm reset um den vorherigen Startversuch zu bereinigen
  3. kubeadm init --token=<VALUE> --apiserver-advertise-address=<IP>

[BEARBEITET]
Es funktionierte, nachdem @srinat999 auf die Notwendigkeit hingewiesen hatte, systemctl daemon-reload vor kubeadm init auszufĂŒhren

Die Lösung von @jcorral hat bei mir mit einer Änderung an der Flanell-Bereitstellung funktioniert, da der unsichere API-Port nicht mehr von kubeadm .

curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | \
kubectl --kubeconfig /etc/kubernetes/admin.conf create -f -

@MaximF Sie mĂŒssen systemctl daemon-reload tun, nachdem Sie die conf-Datei geĂ€ndert haben. Hat bei mir funktioniert.

@jcorral Deine Lösung funktioniert fĂŒr mich. Vielen Dank.

@MaximF Ich fĂŒge einfach die Befehlszeile fĂŒr den Neustart des DĂ€mons hinzu

kubeadm init wird erfolgreich abgeschlossen, aber wenn ich die Version ĂŒberprĂŒfe, erhalte ich die folgende Fehlermeldung:

Client-Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.0", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"2017-03-28T16:36: 33Z", GoVersion:"go1.7.5", Compiler:"gc", Plattform:"linux/amd64"}
Die Verbindung zum Server localhost:8080 wurde abgelehnt - haben Sie den richtigen Host oder Port angegeben?

@haribole
Sie sollten die KUBECONFIG-Umgebungsvariable setzen

Hat jemand Flannel nach den Problemumgehungen im Zusammenhang mit CNI zum Laufen gebracht? Ich kann das Problem "Nicht bereit" lösen, aber wenn ich Flannel ausfĂŒhre, erhalte ich eine Fehlermeldung, die wie folgt aussieht:

Failed to create SubnetManager: error retrieving pod spec for 'kube-system/kube-flannel-ds-g5cbj': the server does not allow access to the requested resource (get pods kube-flannel-ds-g5cbj)

Pods-Status zeigt "CrashLoopBackOff" an

Sie mĂŒssen rbac-Rollen hinzufĂŒgen, um Flannel zum Lesen von der API zu autorisieren.

Sie mĂŒssen rbac-Rollen hinzufĂŒgen, um Flannel zum Lesen von der API zu autorisieren.

Falls sich noch jemand fragt, was das bedeutet, es sieht so aus, als ob Sie kube-flannel-rbac.yml erstellen mĂŒssen, bevor Sie Flanell erstellen:

kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Ich denke, da ein Root-Problem gelöst und das zugehörige Ticket geschlossen ist , sollten wir auch dieses schließen :)

Nur zur Information: Bei mir funktioniert es jetzt mit den aktualisierten Paketen unter Ubuntu 16.04.

1.6.1 funktioniert bei mir! Vielen Dank an alle, die geholfen haben, diese Lösung zu finden!

Ich habe meinen Kubernetes-Cluster erfolgreich auf centos-release-7-3.1611.el7.centos.x86_64 eingerichtet, indem ich die folgenden Schritte ausfĂŒhre (ich gehe davon aus, dass Docker bereits installiert ist):

1) (aus /etc/yum.repo.d/kubernetes.repo) baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64-unstable
=> Um das unstable Repository fĂŒr das neueste Kubernetes 1.6.1 zu verwenden
2) yum install -y kubelet kubeadm kubectl kubernetes-cni
3) (/etc/systemd/system/kubelet.service.d/10-kubeadm.conf) fĂŒge "--cgroup-driver=systemd" am Ende der letzten Zeile hinzu.
=> Dies liegt daran, dass Docker systemd fĂŒr cgroup-driver verwendet, wĂ€hrend kubelet cgroupfs fĂŒr cgroup-driver verwendet.
4) systemctl kubelet aktivieren && systemctl kubelet starten
5) kubeadm init --pod-network-cidr 10.244.0.0/16
=> Wenn Sie bisher --api-advertise-addresses hinzugefĂŒgt haben, mĂŒssen Sie stattdessen --apiserver-advertise-address verwenden.
6) cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf
=> Ohne diesen Schritt erhalten Sie möglicherweise einen Fehler mit kubectl get
=> Ich habe es nicht mit 1.5.2 gemacht
7) kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
=> 1.6.0 fĂŒhrt eine rollenbasierte Zugriffskontrolle ein, daher sollten Sie eine ClusterRole und eine ClusterRoleBinding hinzufĂŒgen, bevor Sie ein Flannel-Daemonset erstellen
8) kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
=> Erstelle ein Flanell-Daemonset
9) (auf jedem Slave-Knoten) kubeadm join --token (Ihr Token) (ip):(port)
=> wie im Ergebnis von kubeadm init gezeigt

Alle oben genannten Schritte sind das Ergebnis der Kombination von VorschlÀgen aus verschiedenen Themen rund um Kubernetes-1.6.0, insbesondere kubeadm.

Ich hoffe, das spart Ihnen Zeit.

@eastcirclek @Sliim Du bist großartig

@eastcirclek Dies waren die genauen Schritte, die ich gerade ausgefĂŒhrt habe, indem ich auch mehrere Foren

Ich habe einen Ubuntu 16.04-Server auf AWS und habe die Schritte befolgt

  1. Bearbeiten Sie /etc/systemd/system/kubelet.service.d/10-kubeadm.conf und entfernen Sie $KUBELET_NETWORK_ARGS
  2. kubeadm reset, um den vorherigen Startversuch zu bereinigen
  3. kubeadm init --token=--apiserver-advertise-address=

was anscheinend richtig funktioniert hat, aber wenn ich dann versuche Calico als Netzwerk-Plugin zu installieren, erhalte ich folgende Fehlermeldung
Die Verbindung zum Server localhost:8080 wurde abgelehnt - haben Sie den richtigen Host oder Port angegeben?

Arbeitet das k8s-Team an einem Patch?

Vielen Dank

@overip Ich glaube, dafĂŒr ist kein Patch erforderlich ... Sie mĂŒssen nur die richtige kubeconfig-Datei angeben, wenn Sie kubectl verwenden. kubeadm hĂ€tte es in /etc/kubernetes/admin.conf schreiben sollen.

@jimmycuadra könntest du bitte die Schritte dazu erklÀren?

@overip Die Ausgabe von kubeadm init hat die Anweisungen:

To start using your cluster, you need to run (as a regular user):

  sudo cp /etc/kubernetes/admin.conf $HOME/
  sudo chown $(id -u):$(id -g) $HOME/admin.conf
  export KUBECONFIG=$HOME/admin.conf

Ich persönlich bevorzuge es, die Datei nach $HOME/.kube/config zu kopieren, wo kubectl standardmĂ€ĂŸig danach sucht. Dann mĂŒssen Sie die Umgebungsvariable KUBECONFIG nicht setzen.

Wenn Sie kubectl von Ihrem lokalen Computer aus verwenden möchten, können Sie scp (oder einfach den Inhalt kopieren und einfĂŒgen), um es auf Ihrem eigenen Computer in ~/.kube/config zu schreiben.

Suchen Sie in dieser GitHub-Ausgabe nach "admin.conf", um weitere Informationen zu erhalten. Es wurde ein paar Mal erwÀhnt.

@eastcirclek - habe die Schritte befolgt, aber aus irgendeinem Grund können die Knoten Flanell nicht richtig installieren.
(Hinweis: Auf dem Master ist alles glatt.)

Apr 13 22:31:11 node2 kubelet[22893]: I0413 22:31:11.666206   22893 kuberuntime_manager.go:458] Container {Name:install-cni Image:quay.io/coreos/flannel:v0.7.0-amd64 Command:[/bin/sh -c set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done] Args:[] WorkingDir: Ports:[] EnvFrom:[] Env:[] Resources:{Limits:map[] Requests:map[]} VolumeMounts:[{Name:cni ReadOnly:false MountPath:/etc/cni/net.d SubPath:} {Name:flannel-cfg ReadOnly:false MountPath:/etc/kube-flannel/ SubPath:} {Name:flannel-token-g65nf ReadOnly:true MountPath:/var/run/secrets/kubernetes.io/serviceaccount SubPath:}] LivenessProbe:nil ReadinessProbe:nil Lifecycle:nil TerminationMessagePath:/dev/termination-log TerminationMessagePolicy:File ImagePullPolicy:IfNotPresent SecurityContext:nil Stdin:false StdinOnce:false TTY:false} is dead, but RestartPolicy says that we should restart it.
Apr 13 22:31:11 node2 kubelet[22893]: I0413 22:31:11.666280   22893 kuberuntime_manager.go:742] checking backoff for container "install-cni" in pod "kube-flannel-ds-3smf7_kube-system(2e6ad0f9-207f-11e7-8f34-0050569120ff)"
Apr 13 22:31:12 node2 kubelet[22893]: I0413 22:31:12.846325   22893 operation_generator.go:597] MountVolume.SetUp succeeded for volume "kubernetes.io/configmap/2e6ad0f9-207f-11e7-8f34-0050569120ff-flannel-cfg" (spec.Name: "flannel-cfg") pod "2e6ad0f9-207f-11e7-8f34-0050569120ff" (UID: "2e6ad0f9-207f-11e7-8f34-0050569120ff").
Apr 13 22:31:12 node2 kubelet[22893]: I0413 22:31:12.846373   22893 operation_generator.go:597] MountVolume.SetUp succeeded for volume "kubernetes.io/secret/2e6ad0f9-207f-11e7-8f34-0050569120ff-flannel-token-g65nf" (spec.Name: "flannel-token-g65nf") pod "2e6ad0f9-207f-11e7-8f34-0050569120ff" (UID: "2e6ad0f9-207f-11e7-8f34-0050569120ff").

Teilen Sie einfach meine Workaround-Methode. Zuerst wird $KUBELET_NETWORK_ARGS benötigt, ansonsten ist CNI nicht aktiviert/konfiguriert. Das Entfernen und anschließende Wiederherstellen von $KUBELET_NETWORK_ARGS scheint zu kompliziert.
Wenn kubeadm init "[apiclient] First node has registered, but is not ready" anzeigt, ist der k8s-Cluster tatsÀchlich bereit, Anfragen zu bedienen. Zu diesem Zeitpunkt könnte der Benutzer einfach wie folgt zu Schritt 3/4 von https://kubernetes.io/docs/getting-started-guides/kubeadm/ wechseln.

To start using your cluster, you need to run (as a regular user):

  sudo cp /etc/kubernetes/admin.conf $HOME/
  sudo chown $(id -u):$(id -g) $HOME/admin.conf
  export KUBECONFIG=$HOME/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:  http://kubernetes.io/docs/admin/addons/

Wenn ein Benutzer das Podnetwork installiert, stellen Sie bitte sicher, dass dem Dienstkonto der Podnetwork-Richtlinie ausreichende Berechtigungen erteilt werden. Nehmen wir Flanell als Beispiel. Ich binde einfach die Cluster-Admin-Rolle wie folgt an das Dienstkonto von Flanell. Dies ist möglicherweise nicht ideal, und Sie könnten eine bestimmte Rolle fĂŒr das Flanell-Servicekonto definieren. Übrigens, wenn ein Benutzer einen anderen Add-On-Dienst wie das Dashboard bereitstellt, muss er dem zugehörigen Dienstkonto auch genĂŒgend Berechtigungen erteilen.

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: flannel:daemonset
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: flannel
  namespace:  kube-system

Nachdem der Podnetwork-Server bereit ist, zeigt kubeadm init an, dass der Knoten bereit ist, und der Benutzer kann mit der Anweisung fortfahren.

Nehmen wir Flanell als Beispiel. Ich binde einfach die Cluster-Admin-Rolle wie folgt an das Dienstkonto von Flanell. Dies ist möglicherweise nicht ideal, und Sie könnten eine bestimmte Rolle fĂŒr das Flanell-Servicekonto definieren.

Es gibt bereits https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml

Danke an alle fĂŒr die Hilfe.
Endlich voll funktionsfÀhige k8s 1.6.1 mit Flanell. Alles ist jetzt in ansible Playbooks.
Getestet auf Centos/RHEL. Die Vorbereitungen begannen auch fĂŒr Debian-basiert (zB Ubuntu), aber es könnte einige Verfeinerungen erforderlich sein.

https://github.com/ReSearchITEng/kubeadm-playbook/blob/master/README.md

PS: Arbeit basierend auf sjenning/kubeadm-playbook - Vielen Dank @sjenning

Erhalten Sie dies fĂŒr den Beitritt zu einem Cluster:
[Discovery] Cluster-Info-Discovery-Client erstellt, der Informationen von " https://10.100.2.158 :6443" anfordert
[Discovery] Cluster-Info konnte nicht angefordert werden, wird es erneut versuchen: [configmaps "cluster-info" ist verboten: Benutzer " system:anonymous " kann keine configmaps im Namespace "kube-public" abrufen]
[Discovery] Cluster-Info konnte nicht angefordert werden, wird es erneut versuchen: [configmaps "cluster-info" ist verboten: Benutzer " system:anonymous " kann keine configmaps im Namespace "kube-public" abrufen]

Ich habe den Knoten als SelfHosting gestartet.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen