<p>kubeadm initが「最初のノードは登録されましたが、まだ準備ができていません」でスタックしました</p>

作成日 2017年03月29日  ·  52コメント  ·  ソース: kubernetes/kubeadm

これを提出する前に、Kubernetesの問題でどのキーワードを検索しましたか? (重複を見つけた場合は、代わりにそこに返信する必要があります。):kubeadm

これはバグレポートですか、それとも機能リクエストですか? (1つ選択してください):バグレポート

Kubernetesバージョンkubectl version ):1.6.0

環境

  • クラウドプロバイダーまたはハードウェア構成:Raspberry Pi3モデルB
  • OS (例:/ etc / os-releaseから):Hypriot 1.4.0(Dockerを手動で1.12.6にダウングレード、Hypriot1.4.0はDocker17.03.0-ceに同梱)
  • カーネル(例: uname -a ):4.4.50-hypriotos-v7 +
  • ツールのインストール:kubeadm
  • その他

何が起こったのか

kubeadm入門ガイドに正確に従ってください

# 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

「最初のノードは登録されましたが、まだ準備ができていません」という最後のメッセージが無限に繰り返され、kubeadmが終了することはありません。 別のセッションでマスターサーバーに接続して、すべてのDockerコンテナーが期待どおりに実行されているかどうかを確認しました。

$ 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

admin kubeconfigをローカルマシンにコピーし、kubectl(1.6.0)を使用して、kubeadmが登録されていると主張しているノードで何が起こっているかを確認しました。

$ 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

これにより、kubeletの準備ができていなかった理由が明らかになりました。

「ランタイムネットワークの準備ができていません:NetworkReady = false理由:NetworkPluginNotReadyメッセージ:docker:ネットワークプラグインの準備ができていません:cniconfig」

kubeadm 1.5を使った私の実験では、マスターノードを起動するためにCNIは必要なかったので、これは驚くべきことです。 スタートガイドでさえ、CNIプラグインのデプロイに進む前に、 kubeadm initが正常に終了する必要があることを示唆しています。

とにかく、ローカルマシンからkubectlを使用してフランネルをデプロイしました。

$ kubectl apply -f kube-flannel.yml

ファイルの内容は次のとおりです。

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

しかし、それは決してスケジュールされませんでした:

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

とにかく、他のサーバーの1つに参加して、何が起こるかを確認しようとしました。 kubeadm token createを使用して、別のマシンから使用できるトークンを手動で作成しました。 他のマシンの場合:

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

そして最後のメッセージは永遠に繰り返されました。

あなたが起こると期待したこと

kubeadm initは、ブートストラップトークンを完了して生成する必要があります。

最も参考になるコメント

フランネルがAPIから読み取ることを許可するには、rbacロールを追加する必要があります。

他の誰かがこれが何を意味するのか疑問に思っている場合は、フランネルを作成する前にkube-flannel-rbac.ymlを作成する必要があるようです。

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

全てのコメント52件

Ubuntu 16.04.02、GCEとローカルVMWareインストールの両方、Dockerバージョン1.12.6、カーネル4.8.0-44-generic 47〜16.04.1-UbuntuSMPでまったく同じことが起こります。

kubeletログには、jimmycuadraのレポートに表示されるエラーの前に/etc/cni/net.dが欠落しているという警告が表示されます。

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

Ubuntu AWSVMでも同じ問題が発生します。 Docker 1.12.5

root @ ip-10-43-0-20 :〜#kubeadmバージョン
kubeadmバージョン:version.Info {メジャー: "1"、マイナー: "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 Wed Oct 19 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]警告:kubeadmはベータ版です。本番クラスターには使用しないでください。
[init] Kubernetesバージョンの使用:v1.6.0
[init]認証モードの使用:RBAC
[init]警告:cloudprovider統合が機能するには、クラスター内のすべてのkubeletに対して--cloud-providerを設定する必要があります。
(/etc/systemd/system/kubelet.service.d/10-kubeadm.confはこの目的のために編集する必要があります)
[プリフライト]プリフライトチェックの実行
【プリフライト】クベレットサービス開始
[証明書]生成されたCA証明書とキー。
[証明書]生成されたAPIサーバーの証明書とキー。
[証明書]証明書を提供するAPIサーバーは、DNS名[ip-10-43-0-20 kubernetes kubernetes.default kubernetes.default.svckubernetes.default.svc.cluster.local]とIP [10.96.0.1 10.43.0.20 ]
[証明書]生成されたAPIサーバーkubeletクライアントの証明書とキー。
[証明書]生成されたサービスアカウントトークン署名鍵と公開鍵。
[証明書]生成されたフロントプロキシCA証明書とキー。
[証明書]生成されたフロントプロキシクライアントの証明書とキー。
[証明書]有効な証明書とキーが「/ etc / kubernetes / pki」に存在するようになりました
[kubeconfig] KubeConfigファイルをディスクに書き込みました: "/ etc / kubernetes / admin.conf"
[kubeconfig] KubeConfigファイルをディスクに書き込みました: "/ etc / kubernetes / kubelet.conf"
[kubeconfig] KubeConfigファイルをディスクに書き込みました:「/ etc / kubernetes /controller-manager.conf」
[kubeconfig] KubeConfigファイルをディスクに書き込みました:「/ etc / kubernetes /scheduler.conf」
[apiclient]コントロールプレーンの準備が整うのを待っているAPIクライアントを作成しました
[apiclient]すべてのコントロールプレーンコンポーネントは16.531681秒後に正常になります
[apiclient]少なくとも1つのノードが登録されて準備が整うのを待っています
[apiclient]最初のノードは登録されましたが、まだ準備ができていません
[apiclient]最初のノードは登録されましたが、まだ準備ができていません
[apiclient]最初のノードは登録されましたが、まだ準備ができていません

++同じ問題(Ubuntu 16.04.1)

ここUbuntu16.04でも同じこと

CentOS 7で、kubeletを1.5.4にダウングレードしました。 それは私にとってそれを解決しました。 1.6.0 kubeletではレディチェックの動作が異なるようです。

k8s 1.6.0にアップグレードしてから、ベアメタルx64マシンのCentOS7でも同じ問題が発生します

Ubuntu16.04でも同じ問題

Ubuntu 16.04で同じ問題が発生し、 kubeletパッケージを手動でダウングレードすると問題が解決しました。

# apt install kubelet=1.5.6-00

@ctrlaltdelそれは私にとってはうまく

これはKubeletの問題だと思います。 CNIが構成されていない場合、ノードを準備完了としてマークしないでください。 CNIを必要とするポッドのみを、準備ができていないものとしてマークする必要があります。

@jbedaこの問題がいつ解決されるか知っていますか?

@ kristiandrucker-いいえ-まだ何が起こっているのか理解しています。 最初にそれを根絶する必要があります。

@jbedaわかりました、しかし問題が解決された後、それでは何ですか? ソースからkubeletを再構築しますか?

@kristiandruckerこれは、kubeletの問題である場合、k8sのポイントリリースでリリースする必要があります。

https://github.com/kubernetes/kubernetes/pull/43474が根本的な原因だと思い

@dcbwあなたの周り?

問題のように見えるのは、スケジュールポッドのチェックが十分にきめ細かく行われていないため、 DaemonSetがNet stNetwork:trueであるポッドは、Net workReady:falseであるノードでスケジュールする必要がありますが、ho stNetwork:falseポッドは

回避策として、DaemonSetにscheduler.alpha.kubernetes.io/critical-podアノテーションを追加すると、問題が再び発生しますか?

@janetkuo @lukaszo DSの動作をトリアージできますか?

ところで、#sig-networkでslackに関する議論も進行中です。

同じ問題CentOS7 x64

@prapdmこれは、実行しているディストリビューションを

CentOS Linuxリリース7.3.1611(コア)

Ubuntu16.04の1つのノードで試してみました。 「まだ準備ができていません」というメッセージが表示されてハングします。 フランネルDaemonSetも手動で作成しましたが、私の場合は問題なく1つのポッドをスケジュールしました。 デーモンポッド自体が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)

Centosも試してみますが、DaemonSetがここで責任を負うとは思わないので、kubeadmはここにぶら下がっています。

これはRBAC許可エラーです。

@jimmycuadraアームプロセッサを搭載したラズベリーパイで実行していることに気づきました。

フランネルデーモンセットの場合、次のものがあります。

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

but your node is labeled with: 

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

したがって、DaemonSetはこのノードでポッドをランチできません。ノードセレクターを変更するだけで機能します。
rbac権限でエラーが発生することはありますが、わからないため、 @ mikedaneseが修正方法を教えてくれるかもしれません。

ああ、@ lukaszoに感謝します! 今回はRPi固有のガイド(k8s 1.5で使用)に従わなかったため、その手順を忘れました。 デーモンセットにエラーが発生したときに発見したはずですが、結局のところ、それほど遠くはありませんでした。 :}

ここで説明されている手順に従うと、この問題も発生します。
https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/

適切なフランネルネットワークポッドをインストールした後、なんとか機能させることができました。

@jimmycuadra@lukaszoコメントで動作するかもしれないと思います。

メッセージ[apiclient] First node has registered, but is not ready yetがフラッディングを開始すると、kubernetes APIサーバーが実行されるため、次のことができます。

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

ラズベリーパイのインストールの場合:

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

その後、終了します:

[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

私は同じ問題を抱えていました、そして私はこの方法で修正しました:
あなたは根である必要があります

kubeadmの1.6.0では、システムファイルの環境変数$ KUBELET_NETWORK_ARGSを削除する必要があります:/etc/systemd/system/kubelet.service.d/10-kubeadm.conf

その後、悪魔を再起動します

systemctl daemon-reload

kubeadm init

これには少し時間がかかります...成功後

使用するネットワークアドオンをダウンロードします: http

calicoは最高のもののようですが、確かではありませんが、まだテスト中です。

@thelastworm
私はそれをやろうとしただけで、うまくいきませんでした。
Ubuntu 16.04.2 LTS、kubeadm 1.6.0
私は次の手順を実行しました。

  1. /etc/systemd/system/kubelet.service.d/10-kubeadm.confを編集し、$ KUBELET_NETWORK_ARGSを削除します
  2. kubeadm reset 、それを開始する前の試みをクリーンアップします
  3. kubeadm init --token=<VALUE> --apiserver-advertise-address=<IP>

[編集]
@ srinat999がkubeadm init前にsystemctl daemon-reloadを実行する必要性を指摘した後、これは機能しました

@jcorralのソリューションは、安全でないAPIポートがkubeadmによって作成されなくなったため、フランネルの展開に1つの変更を加えるだけで機能しました。

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

@MaximF confファイルを変更した後、 systemctl daemon-reloadを実行する必要があります。 私のために働いた。

@jcorralあなたの解決策は私のために働きます。 ありがとう。

@MaximF私は

kubeadm initは正常に完了しますが、バージョンを確認すると、次のエラーが発生します。

クライアントバージョン:version.Info {Major: "1"、Minor: "6"、GitVersion: "v1.6.0"、GitCommit: "fff5156092b56e6bd60fff75aad4dc9de6b6ef37"、GitTreeState: "clean"、BuildDate: "2017-03-28T16:36: 33Z "、GoVersion:" go1.7.5 "、コンパイラ:" gc "、プラットフォーム:" linux / amd64 "}
サーバーlocalhost:8080への接続が拒否されました-正しいホストまたはポートを指定しましたか?

@haribole
KUBECONFIG envvarを設定する必要があります

CNIに関連する回避策の後にフランネルを実行させた人はいますか? 準備ができていない問題に合格することはできますが、Flannelを実行すると、次のようなエラーが発生します。

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)

ポッドのステータスに「CrashLoopBackOff」と表示されます

フランネルがAPIから読み取ることを許可するには、rbacロールを追加する必要があります。

フランネルがAPIから読み取ることを許可するには、rbacロールを追加する必要があります。

他の誰かがこれが何を意味するのか疑問に思っている場合は、フランネルを作成する前にkube-flannel-rbac.ymlを作成する必要があるようです。

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

ルートの問題が解決され、関連するチケットが閉じられたので、これも閉じる必要

参考までに:Ubuntu16.04で更新されたパッケージで動作しています。

1.6.1は私のために働きます! この修正を手伝ってくれたすべての人に感謝します!

次の手順を実行して、centos-release-7-3.1611.el7.centos.x86_64でKubernetesクラスターを正常にセットアップしました(Dockerが既にインストールされていると想定しています)。

1)(/ etc / yum.repo.d / kubernetes.repoから)baseurl = http://yum.kubernetes.io/repos/kubernetes-el7-x86_64-unstable
=>最新のKubernetes1.6.1の不安定なリポジトリを使用するには
2)yum install -y kubelet kubeadm kubectl kubernetes-cni
3)(/ etc / systemd / system / kubelet.service.d / 10-kubeadm.conf)最後の行の最後に「--cgroup-driver = systemd」を追加します。
=>これは、Dockerがcgroup-driverにsystemdを使用し、kubeletがcgroup-driverにcgroupfsを使用するためです。
4)systemctl enable kubelet && systemctl start kubelet
5)kubeadm init --pod-network-cidr 10.244.0.0/16
=>以前に--api-advertise-addressesを追加した場合は、代わりに--apiserver-advertise-addressを使用する必要があります。
6)cp /etc/kubernetes/admin.conf $ HOME /
sudo chown $(id -u):$(id -g)$ HOME / admin.conf
KUBECONFIG = $ HOME /admin.confをエクスポートします
=>この手順を実行しないと、kubectlgetでエラーが発生する可能性があります
=>私は1.5.2でやっていない
7)kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
=> 1.6.0ではロールベースのアクセス制御が導入されているため、Flannelデーモンセットを作成する前にClusterRoleとClusterRoleBindingを追加する必要があります
8)kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
=>フランネルデーモンセットを作成する
9)(すべてのスレーブノードで)kubeadm join --token(トークン)(ip):( port)
=> kubeadminitの結果に示されているように

上記のすべての手順は、Kubernetes-1.6.0、特にkubeadmに関するさまざまな問題からの提案を組み合わせた結果です。

これがあなたの時間を節約することを願っています。

@ eastcirclek @ Sliimあなたは素晴らしいです

@eastcirclekこれは、いくつかのフォーラムにもクエリを実行して実行した正確な手順です。 タイムゾーンの違い、多分? みんなありがとう、このトピックは本当に役に立ちました。

AWSにUbuntu16.04サーバーがあり、手順に従いました

  1. /etc/systemd/system/kubelet.service.d/10-kubeadm.confを編集し、$ KUBELET_NETWORK_ARGSを削除します
  2. kubeadmをリセットして、以前の起動試行をクリーンアップします
  3. kubeadm init --token =--apiserver-advertise-address =

これは明らかに正しく機能しましたが、Calicoをネットワークプラグインとしてインストールしようとすると、次のエラーが発生します
サーバーlocalhost:8080への接続が拒否されました-正しいホストまたはポートを指定しましたか?

k8sチームはパッチに取り組んでいますか?

ありがとう

@overipそのためのパッチは必要ないと思います... kubectlを使用する場合は、適切なkubeconfigファイルを指定する必要があります。 kubeadmはそれを/etc/kubernetes/admin.conf書き込む必要があります。

@jimmycuadraそれを行うための手順を説明して

@overip kubeadm initの出力には、次の命令があります。

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

個人的には、ファイルを$HOME/.kube/configにコピーすることを好みます。これは、kubectlがデフォルトでファイルを検索する場所です。 その場合、KUBECONFIG環境変数を設定する必要はありません。

ローカルマシンからkubectlを使用することを計画している場合は、 scp (またはコンテンツをコピーして貼り付けることもできます)、自分のコンピューターの~/.kube/configに書き込むことができます。

詳細については、このGitHubの問題で「admin.conf」を検索してください。 それは数回言及されています。

@ eastcirclek-手順に従いましたが、何らかの理由でノードがフランネルを正しくインストールできません。
(注:マスターではすべてがスムーズです。)

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

私の回避策を共有してください。 まず、$ KUBELET_NETWORK_ARGSが必要です。それ以外の場合、CNIは有効化/構成されていません。 $ KUBELET_NETWORK_ARGSの削除と復元は複雑すぎるようです。
kubeadm initが「[apiclient]最初のノードは登録されていますが、まだ準備ができていません」と表示される場合、k8sクラスターは実際にリクエストを処理する準備ができています。 その時点で、ユーザーは次のようにhttps://kubernetes.io/docs/getting-started-guides/kubeadm/のステップ3/4に移動するだけで済みます。

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/

ユーザーがpodnetworkをインストールするときは、podnetworkポリシーのserviceaccountに十分な権限が付与されていることを確認してください。 例としてフランネルを取り上げます。 次のように、cluster-adminロールをフランネルのサービスアカウントにバインドします。 これは理想的ではない可能性があり、フランネルサービスカウントの特定の役割を定義できます。 ところで、ユーザーがダッシュボードなどの他のアドオンサービスを展開する場合は、関連するサービスアカウントに十分な権限を付与する必要もあります。

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

podnetworkサーバーの準備ができたら、kubeadm initはノードの準備ができていることを示し、ユーザーは指示を続行できます。

例としてフランネルを取り上げます。 次のように、cluster-adminロールをフランネルのサービスアカウントにバインドします。 これは理想的ではない可能性があり、フランネルサービスカウントの特定の役割を定義できます。

すでにhttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.ymlがあり

助けてくれてありがとう。
最後に、フランネルを使用してk8s1.6.1を完全に機能させます。 すべてがAnsiblePlaybookに含まれるようになりました。
Centos / RHELでテスト済み。 Debianベース(Ubuntuなど)の準備も開始されましたが、多少の改良が必要になる場合があります。

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

PS:sjenning / kubeadm-playbookに基づいた作業- @ sjenningに感謝し

クラスターに参加するためにこれを取得します。
[検出]「 https://10.100.2.158:6443 」から情報を要求するクラスター情報検出クライアントを作成しました
[検出]クラスター情報のリクエストに失敗しました。再試行します:[configmaps "cluster-info"は禁止されています:ユーザー " system:anonymous "は名前空間 "kube-public"でconfigmapsを取得できません]
[検出]クラスター情報のリクエストに失敗しました。再試行します:[configmaps "cluster-info"は禁止されています:ユーザー " system:anonymous "は名前空間 "kube-public"でconfigmapsを取得できません]

ノードをSelfHostingとして開始しました。

このページは役に立ちましたか?
0 / 5 - 0 評価