<p>kubeadm init macet di "Node pertama telah terdaftar, tetapi belum siap"</p>

Dibuat pada 29 Mar 2017  ·  52Komentar  ·  Sumber: kubernetes/kubeadm

Kata kunci apa yang Anda cari di edisi Kubernetes sebelum mengajukan yang ini? (Jika Anda menemukan duplikat, Anda harus membalas di sana.): kubeadm

Apakah ini LAPORAN BUG atau PERMINTAAN FITUR? (pilih salah satu): laporan bug

Versi Kubernetes (gunakan kubectl version ): 1.6.0

Lingkungan :

  • Penyedia cloud atau konfigurasi perangkat keras : Raspberry Pi 3 Model B
  • OS (misalnya dari /etc/os-release): Hypriot 1.4.0 (dengan Docker diturunkan secara manual ke 1.12.6, Hypriot 1.4.0 dikirimkan dengan Docker 17.03.0-ce)
  • Kernel (misalnya uname -a ): 4.4.50-hypriotos-v7+
  • Instal alat : kubeadm
  • Lainnya :

Apa yang terjadi :

Mengikuti panduan memulai kubeadm dengan tepat :

# 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

Pesan terakhir, "Node pertama telah terdaftar, tetapi belum siap" berulang tanpa batas, dan kubeadm tidak pernah selesai. Saya terhubung ke server master di sesi lain untuk melihat apakah semua wadah Docker berjalan seperti yang diharapkan dan mereka adalah:

$ 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

Saya menyalin admin kubeconfig ke mesin lokal saya dan menggunakan kubectl (1.6.0) untuk melihat apa yang terjadi dengan node yang diklaim kubeadm telah terdaftar:

$ 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

Ini mengungkap alasan kubelet belum siap:

"jaringan runtime tidak siap: NetworkReady= alasan salah Pesan NetworkPluginNotReady :docker : plugin jaringan belum siap: cni config"

Dalam percobaan saya dengan kubeadm 1.5, CNI tidak diperlukan untuk membuka master node, jadi ini mengejutkan. Bahkan panduan memulai menyarankan bahwa kubeadm init harus berhasil diselesaikan sebelum Anda melanjutkan ke penerapan plugin CNI.

Bagaimanapun, saya menggunakan flanel menggunakan kubectl dari mesin lokal saya:

$ kubectl apply -f kube-flannel.yml

Di mana isi file itu:

---
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

Tapi itu tidak pernah dijadwalkan:

$ 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>

Saya mencoba untuk bergabung dengan salah satu server lain, hanya untuk melihat apa yang akan terjadi. Saya menggunakan kubeadm token create untuk membuat token secara manual yang dapat saya gunakan dari komputer lain. Di mesin lain:

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)]

Dan pesan terakhir diulang selamanya.

Apa yang Anda harapkan terjadi :

kubeadm init harus menyelesaikan dan menghasilkan token bootstrap.

Komentar yang paling membantu

Anda perlu menambahkan peran rbac untuk mengotorisasi flanel untuk membaca dari API.

Jika ada yang bertanya-tanya apa artinya ini, sepertinya Anda perlu membuat kube-flannel-rbac.yml sebelum Anda membuat kain flanel:

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

Semua 52 komentar

Hal yang sama persis terjadi pada saya di Ubuntu 16.04.02, baik instalasi GCE dan VMWare lokal, Docker versi 1.12.6, kernel 4.8.0-44-generic 47~16.04.1-Ubuntu SMP.

Log kubelet menunjukkan peringatan tentang /etc/cni/net.d yang hilang sebelum kesalahan yang kita lihat di laporan jimmycuadra:

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

Masalah yang sama pada Ubuntu AWS VM. buruh pelabuhan 1.12.5

root@ip-10-43-0-20 :~# versi kubeadm
kubeadm versi: version.Info{Mayor:"1", Minor:"6", GitVersion:"v1.6.0,", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"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 Rabu 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] PERINGATAN: kubeadm masih dalam versi beta, tolong jangan gunakan untuk cluster produksi.
[init] Menggunakan versi Kubernetes: v1.6.0
[init] Menggunakan mode Otorisasi: RBAC
[init] PERINGATAN: Agar integrasi cloudprovider berfungsi --cloud-provider harus disetel untuk semua kubelet di cluster.
(/etc/systemd/system/kubelet.service.d/10-kubeadm.conf harus diedit untuk tujuan ini)
[preflight] Menjalankan pemeriksaan pra-penerbangan
[preflight] Memulai layanan kubelet
[sertifikat] Sertifikat dan kunci CA yang dihasilkan.
[sertifikat] Sertifikat dan kunci server API yang dihasilkan.
[sertifikat] Sertifikat server API ditandatangani untuk nama DNS [ip-10-43-0-20 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] dan IP [10.96.0.1 10.43.0.20 ]
[sertifikat] Sertifikat dan kunci klien kubelet server API yang dihasilkan.
[sertifikat] Kunci penandatanganan token akun layanan dan kunci publik yang dihasilkan.
[sertifikat] Sertifikat dan kunci CA front-proxy yang dihasilkan.
[sertifikat] Sertifikat dan kunci klien proksi depan yang dihasilkan.
[sertifikat] Sertifikat dan kunci yang valid sekarang ada di "/etc/kubernetes/pki"
[kubeconfig] Tulis file KubeConfig ke disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Tulis file KubeConfig ke disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Tulis file KubeConfig ke disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Tulis file KubeConfig ke disk: "/etc/kubernetes/scheduler.conf"
[apiclient] Membuat klien API, menunggu control plane siap
[apiclient] Semua komponen bidang kontrol sehat setelah 16,531681 detik
[apiclient] Menunggu setidaknya satu node untuk mendaftar dan menjadi siap
[apiclient] Node pertama telah terdaftar, tetapi belum siap
[apiclient] Node pertama telah terdaftar, tetapi belum siap
[apiclient] Node pertama telah terdaftar, tetapi belum siap

++ masalah yang sama (Ubuntu 16.04.1)

Hal yang sama di sini di Ubuntu 16.04

Pada CentOS 7, saya menurunkan versi kubelet menjadi 1.5.4 . Itu menyelesaikannya untuk saya. Sepertinya cek siap bekerja berbeda di 1.6.0 kubelet.

Masalah yang sama pada CentOS 7 pada mesin bare metal x64, sejak memutakhirkan ke k8s 1.6.0

Masalah yang sama di Ubuntu 16.04

Masalah yang sama pada Ubuntu 16.04, menurunkan versi paket kubelet manual menyelesaikan masalah.

# apt install kubelet=1.5.6-00

@ctrlaltdel itu tidak berhasil untuk saya.

Saya menduga ini adalah masalah Kubelet. Seharusnya tidak menandai node sebagai tidak siap ketika CNI tidak dikonfigurasi. Hanya pod yang membutuhkan CNI yang harus ditandai sebagai belum siap.

@jbeda Apakah Anda tahu kapan masalah ini akan diselesaikan?

@kristiandrucker -- tidak -- masih mencari tahu apa yang sedang terjadi. Harus di root dulu.

@jbeda Ok, tapi setelah masalah teratasi, lalu apa? Bangun kembali kubelet dari sumber?

@kristiandrucker Ini harus keluar dalam rilis poin k8s jika ini adalah masalah kubelet.

Saya menduga https://github.com/kubernetes/kubernetes/pull/43474 adalah akar masalahnya. Akan mengajukan bug dan menindaklanjuti dengan orang-orang jaringan.

@dcbw Anda di sekitar?

Sepertinya masalahnya adalah DaemonSet tidak dijadwalkan ke node yang memiliki kondisi Net workReady:false , karena pemeriksaan untuk penjadwalan pod tidak cukup detail. Kita perlu memperbaikinya; pod yang ho stNetwork:true harus dijadwalkan pada node yang Net workReady:false , tetapi pod ho stNetwork:false tidak seharusnya.

Sebagai solusinya, apakah menambahkan anotasi scheduler.alpha.kubernetes.io/critical-pod pada DaemonSet Anda membuat semuanya berfungsi kembali?

@janetkuo @lukaszo dapatkah Anda melakukan triase perilaku DS?

Ada juga diskusi yang sedang berlangsung di #sig-network di slack, btw.

Masalah yang sama CentOS 7 x64

@prapdm ini tampaknya tidak

CentOS Linux merilis 7.3.1611 (Inti)

Saya sudah mencobanya pada satu node dengan Ubuntu 16.04. Itu hang dengan pesan "belum siap". Saya juga membuat DaemonSet flanel secara manual tetapi dalam kasus saya ini menjadwalkan satu pod tanpa masalah. Pod daemon itu sendiri masuk ke CrashLoopBackOff dengan kesalahan: 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)

Saya akan mencoba Centos juga tetapi saya tidak berpikir bahwa DaemonSet yang harus disalahkan di sini, kubeadm hang di sini.

itu adalah kesalahan izin rbac.

@jimmycuadra Saya baru saja memperhatikan bahwa Anda menjalankannya di raspberry pi yang memiliki prosesor lengan.

Untuk set daemon flanel Anda memiliki:

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

but your node is labeled with: 

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

Jadi DaemonSet tidak dapat membuat pod makan siang di node ini, cukup ubah pemilih node dan itu akan berfungsi.
Anda masih akan mendapatkan kesalahan dengan izin rbac tetapi mungkin @mikedanese akan memberi tahu Anda cara memperbaikinya karena saya tidak mengetahuinya.

Ah, terima kasih @lukaszo! Saya tidak mengikuti panduan khusus RPi kali ini (yang saya gunakan untuk k8s 1.5) dan lupa langkah itu. Saya akan menemukannya ketika daemon set salah, tetapi ternyata saya tidak sampai sejauh itu. :}

Saya juga melihat masalah ini ketika saya mengikuti instruksi seperti yang dijelaskan di sini:
https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/

berhasil membuatnya bekerja setelah menginstal pod jaringan flanel yang tepat.

Saya pikir @jimmycuadra mungkin membuatnya bekerja dengan komentar @lukaszo .

Ketika pesan [apiclient] First node has registered, but is not ready yet mulai membanjiri, server API kubernetes akan berjalan sehingga Anda dapat:

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

Untuk menginstal raspberry pi:

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

Maka akan selesai:

[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

Saya memiliki masalah yang sama dan saya memperbaikinya dengan cara ini:
kamu harus menjadi root

di 1.6.0 dari kubeadm anda harus menghapus variabel lingkungan $KUBELET_NETWORK_ARGS di file sistem : /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

kemudian restart setan

systemctl daemon-reload

kubeadm init

ini butuh beberapa saat ... setelah sukses

unduh pengaya jaringan yang ingin Anda gunakan: http://kubernetes.io/docs/admin/addons/

belacu tampaknya menjadi yang terbaik, tidak yakin tetapi masih dalam ujian untuk saya.

@cacing terakhir
Saya hanya mencoba melakukannya, dan itu tidak berhasil.
Ubuntu 16.04.2 LTS, kubeadm 1.6.0
Saya melakukan langkah-langkah berikut:

  1. edit /etc/systemd/system/kubelet.service.d/10-kubeadm.conf dan hapus $KUBELET_NETWORK_ARGS
  2. kubeadm reset untuk membersihkan upaya sebelumnya untuk memulainya
  3. kubeadm init --token=<VALUE> --apiserver-advertise-address=<IP>

[DIEDIT]
Ini berhasil setelah @srinat999 menunjukkan perlunya menjalankan systemctl daemon-reload sebelum kubeadm init

Solusi @jcorral bekerja untuk saya dengan satu perubahan pada penyebaran flanel karena port API yang tidak aman tidak lagi dibuat oleh kubeadm .

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

@MaximF Anda harus melakukan systemctl daemon-reload setelah mengubah file conf. Bekerja untuk saya.

@jcorral Solusi Anda bekerja untuk saya. Terima kasih.

@MaximF saya baru saja menambahkan baris perintah iblis restart

kubeadm init berhasil diselesaikan, tetapi ketika saya memeriksa versinya, mendapatkan kesalahan berikut:

Versi Klien: version.Info{Mayor:"1", Minor:"6", GitVersion:"v1.6.0,", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"28-03-2017T16:36: 33Z", GoVersion:"go1.7.5", Kompilator:"gc", Platform:"linux/amd64"}
Sambungan ke server localhost:8080 ditolak - apakah Anda menentukan host atau port yang benar?

@haribole
Anda harus mengatur KUBECONFIG env var

Adakah yang punya Flannel untuk dijalankan setelah solusi terkait dengan CNI? Saya bisa melewati masalah yang belum siap, tetapi ketika saya menjalankan Flanel, saya mendapatkan kesalahan yang terlihat seperti ini:

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)

Status Pod menunjukkan "CrashLoopBackOff"

Anda perlu menambahkan peran rbac untuk mengotorisasi flanel untuk membaca dari API.

Anda perlu menambahkan peran rbac untuk mengotorisasi flanel untuk membaca dari API.

Jika ada yang bertanya-tanya apa artinya ini, sepertinya Anda perlu membuat kube-flannel-rbac.yml sebelum Anda membuat kain flanel:

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

Saya pikir karena masalah akar terpecahkan dan tiket terkait ditutup , kita harus menutup yang ini juga :)

Sekadar informasi: Ini berfungsi untuk saya sekarang dengan paket yang diperbarui di bawah Ubuntu 16.04.

1.6.1 bekerja untuk saya! Terima kasih kepada semua orang yang membantu menyelesaikan masalah ini!

Saya berhasil mengatur cluster Kubernetes saya di centos-release-7-3.1611.el7.centos.x86_64 dengan mengambil langkah-langkah berikut (saya berasumsi Docker sudah diinstal):

1) (dari /etc/yum.repo.d/kubernetes.repo) baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64-unstable
=> Untuk menggunakan repositori yang tidak stabil untuk Kubernetes 1.6.1 terbaru
2) yum install -y kubelet kubeadm kubectl kubernetes-cni
3) (/etc/systemd/system/kubelet.service.d/10-kubeadm.conf) tambahkan "--cgroup-driver=systemd" di akhir baris terakhir.
=> Ini karena Docker menggunakan systemd untuk cgroup-driver sedangkan kubelet menggunakan cgroupfs untuk cgroup-driver.
4) systemctl aktifkan kubelet && systemctl start kubelet
5) kubeadm init --pod-network-cidr 10.244.0.0/16
=> Jika Anda biasa menambahkan --api-advertise-addresses, Anda harus menggunakan --apiserver-advertise-address sebagai gantinya.
6) cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
ekspor KUBECONFIG=$HOME/admin.conf
=> Tanpa langkah ini, Anda mungkin mendapatkan kesalahan dengan kubectl get
=> Saya tidak melakukannya dengan 1.5.2
7) kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
=> 1.6.0 memperkenalkan kontrol akses berbasis peran sehingga Anda harus menambahkan ClusterRole dan ClusterRoleBinding sebelum membuat daemonset Flannel
8) kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
=> Buat daemonset Flanel
9) (pada setiap node slave) kubeadm join --token (token Anda) (ip):(port)
=> seperti yang ditunjukkan pada hasil kubeadm init

Semua langkah di atas adalah hasil dari penggabungan saran dari berbagai isu seputar Kubernetes-1.6.0, khususnya kubeadm.

Semoga ini akan menghemat waktu Anda.

@eastcirclek @Sliim Kamu hebat

@eastcirclek ini adalah langkah tepat yang baru saja saya lakukan dengan menanyakan beberapa forum juga. Perbedaan zona waktu, mungkin? Terima kasih semuanya, topik ini sangat membantu.

Saya memiliki server Ubuntu 16.04 di AWS dan mengikuti langkah-langkahnya

  1. edit /etc/systemd/system/kubelet.service.d/10-kubeadm.conf dan hapus $KUBELET_NETWORK_ARGS
  2. kubeadm reset untuk membersihkan upaya sebelumnya untuk memulainya
  3. kubeadm init --token=--apiserver-advertise-address=

yang tampaknya berfungsi dengan benar, tetapi kemudian ketika saya mencoba menginstal Calico sebagai plugin jaringan, saya mendapatkan kesalahan berikut:
Sambungan ke server localhost:8080 ditolak - apakah Anda menentukan host atau port yang benar?

Apakah tim k8s sedang mengerjakan tambalan?

Terima kasih

@overip Saya tidak berpikir patch apa pun diperlukan untuk itu... Anda hanya perlu menentukan file kubeconfig yang tepat saat menggunakan kubectl. kubeadm seharusnya menulisnya ke /etc/kubernetes/admin.conf .

@jimmycuadra bisa tolong jelaskan langkah-langkah untuk melakukan itu?

@overip Output dari kubeadm init memiliki instruksi:

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

Secara pribadi, saya lebih suka menyalin file ke $HOME/.kube/config , yang mana kubectl akan mencarinya secara default. Maka Anda tidak perlu mengatur variabel lingkungan KUBECONFIG.

Jika Anda berencana untuk menggunakan kubectl dari mesin lokal Anda, Anda dapat menggunakan scp (atau bahkan hanya menyalin isinya) untuk menulisnya ke ~/.kube/config di komputer Anda sendiri.

Cari "admin.conf" di edisi GitHub ini untuk lebih jelasnya. Sudah beberapa kali disebutkan.

@eastcirclek - ikuti langkah-langkahnya, tetapi untuk beberapa alasan node tidak dapat menginstal flanel dengan benar.
(Catatan: pada master semuanya lancar.)

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").

Cukup bagikan metode solusi saya. Pertama $KUBELET_NETWORK_ARGS diperlukan, jika tidak, CNI tidak diaktifkan/dikonfigurasi. Menghapus lalu memulihkan $KUBELET_NETWORK_ARGS tampaknya terlalu rumit.
Ketika kubeadm init menunjukkan "[apiclient] Node pertama telah terdaftar, tetapi belum siap", cluster k8s sebenarnya siap untuk melayani permintaan. Pada saat itu, pengguna cukup pindah ke langkah 3/4 dari https://kubernetes.io/docs/getting-started-guides/kubeadm/ sebagai berikut.

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/

Ketika pengguna menginstal podnetwork, pastikan akun layanan kebijakan podnetwork diberikan izin yang cukup. Mengambil kain flanel sebagai contoh. Saya hanya mengikat peran cluster-admin ke akun layanan flanel sebagai berikut. Ini mungkin tidak ideal, dan Anda dapat menentukan peran khusus untuk akun layanan flanel. BTW, ketika pengguna menggunakan layanan addon lain seperti dasbor, itu juga perlu memberikan izin yang cukup ke akun layanan terkait.

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

Setelah server podnetwork siap, kubeadm init akan menunjukkan bahwa node telah siap, dan pengguna dapat melanjutkan dengan instruksi.

Mengambil kain flanel sebagai contoh. Saya hanya mengikat peran cluster-admin ke akun layanan flanel sebagai berikut. Ini mungkin tidak ideal, dan Anda dapat menentukan peran khusus untuk akun layanan flanel.

Sudah ada https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml

Terima kasih semua atas bantuannya.
Akhirnya k8s 1.6.1 bekerja penuh dengan kain flanel. Semuanya sekarang ada dalam buku pedoman yang memungkinkan.
Diuji pada Centos/RHEL. Persiapan dimulai untuk berbasis Debian juga (misalnya Ubuntu), tetapi mungkin perlu beberapa penyempurnaan.

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

PS: bekerja berdasarkan sjenning/kubeadm-playbook - Terima kasih banyak @sjenning

Dapatkan ini untuk bergabung ke dalam sebuah cluster:
[discovery] Membuat klien penemuan cluster-info, meminta info dari " https://10.100.2.158 :6443"
[discovery] Gagal meminta info cluster, akan mencoba lagi: [configmaps "cluster-info" dilarang: Pengguna " system:anonymous " tidak bisa mendapatkan configmaps di namespace "kube-public"]
[discovery] Gagal meminta info cluster, akan mencoba lagi: [configmaps "cluster-info" dilarang: Pengguna " system:anonymous " tidak bisa mendapatkan configmaps di namespace "kube-public"]

Saya memulai simpul sebagai SelfHosting.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat