<p>تم تعليق kubeadm init عند "تم تسجيل العقدة الأولى ، ولكنها ليست جاهزة بعد"</p>

تم إنشاؤها على ٢٩ مارس ٢٠١٧  ·  52تعليقات  ·  مصدر: kubernetes/kubeadm

ما الكلمات الرئيسية التي بحثت عنها في مشكلات Kubernetes قبل حفظ هذه المشكلة؟ (إذا وجدت أي تكرارات ، يجب عليك بدلاً من ذلك الرد هناك.): kubeadm

هل هذا تقرير خطأ أم طلب ميزة؟ (اختر واحدًا): تقرير الشوائب

إصدار Kubernetes (استخدم kubectl version ): 1.6.0

البيئة :

  • مزود السحابة أو تكوين الأجهزة : Raspberry Pi 3 Model B
  • نظام التشغيل (على سبيل المثال من / etc / os-release): Hypriot 1.4.0 (مع Docker تم تخفيضه يدويًا إلى 1.12.6 ، Hypriot 1.4.0 يأتي مع Docker 17.03.0-ce)
  • Kernel (على سبيل المثال 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

كشف هذا سبب عدم استعداد الكوبيليت:

"شبكة وقت التشغيل غير جاهزة: NetworkReady = سبب خاطئ رسالة NetworkPluginNotReady : عامل الإرساء: المكون الإضافي للشبكة غير جاهز: تكوين cni"

في تجاربي مع kubeadm 1.5 ، لم تكن هناك حاجة لـ CNI لإحضار العقدة الرئيسية ، لذلك هذا مفاجئ. حتى دليل البدء يشير إلى أن kubeadm init يجب أن ينتهي بنجاح قبل أن تنتقل إلى نشر المكون الإضافي CNI.

على أي حال ، قمت بنشر الفانيلا باستخدام 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>

حاولت الانضمام إلى أحد الخوادم الأخرى على أي حال ، فقط لأرى ما سيحدث. لقد استخدمت 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 وينتج رمز تمهيد التشغيل.

التعليق الأكثر فائدة

تحتاج إلى إضافة أدوار rbac للسماح للفلانيل بالقراءة من API.

في حالة تساءل أي شخص آخر عما يعنيه هذا ، يبدو أنك بحاجة إلى إنشاء 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 ، kernel 4.8.0-44-generic 47 ~ 16.04.1-Ubuntu SMP.

يُظهر سجل kubelet تحذيرًا بشأن فقدان /etc/cni/net.d قبل الخطأ الذي نراه في تقرير 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

نفس المشكلة على Ubuntu AWS VM. Docker 1.12.5.0 تحديث

الجذر @ IP-10-43-0-20 : ~ # نسخة kubeadm
إصدار kubeadm: version.Info {Major: "1"، Minor: "6"، GitVersion: "v1.6.0"، GitCommit: "fff5156092b56e6bd60fff75aad4dc9de6b6ef37"، GitTreeState: "clean"، BuildDate: "2017-03-28T16: 24: 30Z "، الإصدار:" go1.7.5 "

الجذر @ ip-10-43-0-20 : ~ # uname -a
Linux ip-10-43-0-20 4.4.0-45-generic # 66-Ubuntu SMP الأربعاء 19 أكتوبر 14:12:37 بالتوقيت العالمي المنسق 2016 x86_64 x86_64 x86_64 GNU / Linux

الجذر @ ip-10-43-0-20 : ~ # kubeadm init --config cfg.yaml
[kubeadm] تحذير: kubeadm في مرحلة تجريبية ، من فضلك لا تستخدمه لمجموعات الإنتاج.
[init] استخدام إصدار Kubernetes: v1.6.0
[البداية] استخدام وضع الترخيص: RBAC
[init] تحذير: لكي تعمل عمليات تكامل موفري السحابة - يجب تعيين مزود السحابة لجميع الكوبيليتات في المجموعة.
(يجب تحرير /etc/systemd/system/kubelet.service.d/10-kubeadm.conf لهذا الغرض)
[الاختبار المبدئي] إجراء فحوصات ما قبل الرحلة
[الاختبار المبدئي] بدء خدمة kubelet
[الشهادات] تم إنشاء شهادة CA ومفتاح.
[الشهادات] مُنشأ شهادة خادم API ومفتاح.
[الشهادات] تم توقيع شهادة تقديم خادم API لأسماء DNS [ip-10-43-0-20 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] وعناوين IP [10.96.0.1 10.43.0.20 ]
[الشهادات] مُنشأ شهادة عميل kubelet لخادم API ومفتاح.
[الشهادات] تم إنشاء مفتاح التوقيع المميز لحساب الخدمة والمفتاح العام.
[الشهادات] تم إنشاء مفتاح وشهادة 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] تم إنشاء عميل واجهة برمجة التطبيقات ، في انتظار أن تصبح طائرة التحكم جاهزة
[Apiclient] تصبح جميع مكونات مستوى التحكم سليمة بعد 16.531681 ثانية
[apiclient] في انتظار تسجيل عقدة واحدة على الأقل وتصبح جاهزة
[apiclient] تم تسجيل العقدة الأولى ، لكنها ليست جاهزة بعد
[apiclient] تم تسجيل العقدة الأولى ، لكنها ليست جاهزة بعد
[apiclient] تم تسجيل العقدة الأولى ، لكنها ليست جاهزة بعد

++ نفس المشكلة (Ubuntu 16.04.1)

نفس الشيء هنا على Ubuntu 16.04

في CentOS 7 ، قمت بخفض تصنيف kubelet إلى 1.5.4 . هذا حلها بالنسبة لي. يبدو أن الاختيار الجاهز يعمل بشكل مختلف في kubelet 1.6.0 .

نفس المشكلة على CentOS 7 على الجهاز المعدني x64 ، منذ الترقية إلى k8s 1.6.0

نفس المشكلة على Ubuntu 16.04

نفس المشكلة على Ubuntu 16.04 ، أدى تخفيض حزمة kubelet يدويًا إلى حل المشكلة.

# apt install kubelet=1.5.6-00

ctrlaltdel لم ينجح معي.

أظن أن هذه مشكلة Kubelet. لا ينبغي وضع علامة على العقدة على أنها غير جاهزة عند عدم تكوين CNI. يجب وضع علامة على الكبسولات التي تتطلب CNI فقط على أنها غير جاهزة.

jbeda هل تعلم متى سيتم حل هذه المشكلة؟

@ kristiandrucker - لا - لا يزالون

jbeda طيب ، ولكن بعد أن تحل المشكلة ، ثم ماذا؟ إعادة بناء kubelet من المصدر؟

kristiandrucker هذا يجب أن يخرج في إصدار نقطي لـ k8s إذا كانت مشكلة kubelet.

أظن أن https://github.com/kubernetes/kubernetes/pull/43474 هو السبب الأساسي. الذهاب إلى ملف خطأ والمتابعة مع أفراد الشبكة.

dcbw أنت حولها؟

يبدو أن المشكلة تكمن في أن DaemonSet غير مجدول للعقد التي تحتوي على Net workReady: false condition ، لأن عمليات التحقق من جدولة stNetwork: true على عقدة تعمل على Net workReady: false ، لكن شبكة ho stetwork: يجب عدم استخدام

كحل بديل ، هل تؤدي إضافة التعليق التوضيحي scheduler.alpha.kubernetes.io/critical-pod على DaemonSet إلى عمل الأشياء مرة أخرى؟

janetkuolukaszo هل يمكنك فرز سلوك DS؟

هناك أيضًا مناقشة جارية في # sig-network على Slack ، راجع للشغل.

نفس الإصدار CentOS 7 x64

prapdm يبدو أن هذا غير محمي من أي توزيعة تقوم بتشغيلها.

إصدار CentOS Linux 7.3.1611 (Core)

لقد جربته على عقدة واحدة مع Ubuntu 16.04. إنه معلق مع رسالة "ليس جاهزًا بعد". لقد قمت أيضًا بإنشاء مجموعة flannel DaemonSet يدويًا ولكن في حالتي حددت جرابًا واحدًا دون أي مشكلة. دخلت الكبسولة الخفيّة نفسها إلى 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 لقد لاحظت للتو أنك تقوم بتشغيله على raspberry pi الذي يحتوي على معالج ذراع.

بالنسبة لمجموعة الشيطان الفانيلا لديك:

محدد العقدة:
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 ، فسيكون بإمكانك:

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

لتثبيت Raspberry Pi:

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

واجهت نفس المشكلة وقمت بإصلاحها بهذه الطريقة:
يجب أن تكون جذرًا

في 1.6.0 من kubeadm ، يجب إزالة متغير البيئة $ KUBELET_NETWORK_ARGS في ملف النظام: /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

ثم إعادة تشغيل الشياطين

systemctl daemon-reload

kubeadm init

هذا يأخذ بعض الوقت ... بعد النجاح

قم بتنزيل الوظيفة الإضافية للشبكة التي تريد استخدامها: http://kubernetes.io/docs/admin/addons/

يبدو أن كاليكو هو الأفضل ، لست متأكدًا ولكنه لا يزال قيد الاختبار بالنسبة لي.

تضمين التغريدة
لقد حاولت فقط القيام بذلك ، ولم ينجح الأمر.
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>

[محرر]
نجحت بعد أن أشار systemctl daemon-reload قبل kubeadm init

نجح حل kubeadm .

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

MaximF عليك أن تفعل systemctl daemon-reload بعد تغيير ملف conf. عملت من أجلي.

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 "}
الاتصال بالمضيف المحلي للخادم 8080 - هل حددت المضيف أو المنفذ الصحيح؟

تضمين التغريدة
يجب عليك ضبط KUBECONFIG env var

هل قام أي شخص بتشغيل Flannel بعد الحلول المتعلقة بـ 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"

تحتاج إلى إضافة أدوار rbac للسماح للفلانيل بالقراءة من API.

تحتاج إلى إضافة أدوار rbac للسماح للفلانيل بالقراءة من API.

في حالة تساءل أي شخص آخر عما يعنيه هذا ، يبدو أنك بحاجة إلى إنشاء 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

أعتقد أنه نظرًا لحل مشكلة الجذر وإغلاق التذكرة ذات الصلة ، يجب علينا إغلاق هذه المشكلة أيضًا :)

للعلم فقط: إنه يعمل بالنسبة لي الآن مع الحزم المحدثة ضمن Ubuntu 16.04.

1.6.1 يعمل بالنسبة لي! شكرا لكل من ساعد في الحصول على هذا الإصلاح!

لقد نجحت في إعداد مجموعة Kubernetes الخاصة بي على centos-release-7-3.1611.el7.centos.x86_64 باتباع الخطوات التالية (أفترض أن Docker مثبت بالفعل):

1) (من /etc/yum.repo.d/kubernetes.repo) baseurl = http: //yum.kubernetes.io/repos/kubernetes-el7-x86_64-unstable
=> لاستخدام المستودع غير المستقر لأحدث إصدار من Kubernetes 1.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 يستخدم systemd لمحرك cgroup بينما يستخدم kubelet cgroupfs لمحرك cgroup.
4) يمكّن systemctl kubelet && systemctl start kubelet
5) kubeadm init --pod-network-cidr 10.244.0.0/16
=> إذا كنت تستخدم لإضافة عناوين --api-advertise-، فستحتاج إلى استخدام عنوان --apiserver-advertise-address بدلاً من ذلك.
6) cp /etc/kubernetes/admin.conf $ HOME /
sudo chown $ (id -u): $ (id -g) $ HOME / admin.conf
تصدير KUBECONFIG = $ HOME / admin.conf
=> بدون هذه الخطوة ، قد تحصل على خطأ في kubectl get
=> لم أفعل ذلك مع 1.5.2
7) إنشاء kubectl -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
=> 1.6.0 يقدم عنصر تحكم في الوصول يستند إلى الدور ، لذا يجب عليك إضافة ClusterRole و ClusterRoleBinding قبل إنشاء مجموعة Flannel daemonset
8) إنشاء kubectl -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
=> أنشئ مجموعة شيطان من الفانيلا
9) (على كل عقدة تابعة) kubeadm Join --token (your token) (ip) :( المنفذ)
=> كما هو موضح في نتيجة kubeadm init

كل الخطوات المذكورة أعلاه هي نتيجة الجمع بين الاقتراحات من مختلف القضايا حول Kubernetes-1.6.0 ، وخاصة kubeadm.

أتمنى أن هذا سيوفر وقتك.

تضمين التغريدة

eastcirclek كانت هذه هي الخطوات الدقيقة التي قمت بتنفيذها للتو من خلال الاستعلام عن العديد من المنتديات أيضًا. فرق التوقيت ، ربما؟ شكرا للجميع ، كان هذا الموضوع مفيدًا حقًا.

لدي خادم Ubuntu 16.04 على AWS واتبعت الخطوات

  1. تحرير /etc/systemd/system/kubelet.service.d/10-kubeadm.conf وإزالة $ KUBELET_NETWORK_ARGS
  2. إعادة تعيين kubeadm لتنظيف المحاولة السابقة لبدء تشغيله
  3. kubeadm init --token =- عنوان خادم الإعلان =

الذي يبدو أنه عمل بشكل صحيح ، ولكن بعد ذلك عندما أحاول تثبيت Calico كمكوِّن إضافي للشبكة ، أحصل على الخطأ التالي
الاتصال بالمضيف المحلي للخادم 8080 - هل حددت المضيف أو المنفذ الصحيح؟

هل فريق k8s يعمل على التصحيح؟

شكرا

overip لا أعتقد أن أي تصحيح مطلوب لذلك ... تحتاج فقط إلى تحديد ملف kubeconfig الصحيح عند استخدام kubectl. كان يجب أن يكتبه 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 على جهاز الكمبيوتر الخاص بك.

ابحث عن "admin.conf" في مشكلة GitHub هذه لمزيد من التفاصيل. تم ذكره عدة مرات.

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 جاهزة بالفعل لخدمة الطلب. في ذلك الوقت ، يمكن للمستخدم ببساطة الانتقال إلى الخطوة 3/4 من https://kubernetes.io/docs/getting-started-guides/kubeadm/ على النحو التالي.

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 إذنًا كافيًا. أخذ الفانيلا كمثال. أقوم فقط بربط دور مسؤول المجموعة بحساب خدمة الفانيلا على النحو التالي. قد لا يكون مثاليًا ، ويمكنك تحديد دور محدد لخدمة الفانيلا. راجع للشغل ، عندما ينشر المستخدم خدمة إضافية أخرى مثل لوحة القيادة ، فإنه يتطلب أيضًا منح إذن كافٍ لحساب الخدمة ذي الصلة.

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 أن العقدة جاهزة ، ويمكن للمستخدم متابعة عملية التثبيت.

أخذ الفانيلا كمثال. أقوم فقط بربط دور مسؤول المجموعة بحساب خدمة الفانيلا على النحو التالي. قد لا يكون مثاليًا ، ويمكنك تحديد دور محدد لخدمة الفانيلا.

يوجد https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml بالفعل

شكرا لكم جميعا على المساعدة.
أخيرًا k8s 1.6.1 تعمل بالكامل مع الفانيلا. كل شيء الآن في قواعد اللعبة.
تم اختباره على Centos / RHEL. بدأت الاستعدادات لـ Debian المستندة أيضًا (مثل Ubuntu) ، ولكن قد تحتاج إلى بعض التنقيح.

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

ملاحظة: العمل قائم على كتاب اللعب sjenning / kubeadm - شكرًا جزيلاً sjenning

استحضار هذا للانضمام إلى مجموعة:
[اكتشاف] تم إنشاء عميل اكتشاف معلومات الكتلة ، لطلب معلومات من " https://10.100.2.158 : 6443"
[اكتشاف] فشل في طلب معلومات الكتلة ، سأحاول مرة أخرى: [configmaps "معلومات المجموعة" ممنوع: المستخدم " النظام: مجهول " لا يمكنه الحصول على خرائط التكوين في مساحة الاسم "kube-public"]
[اكتشاف] فشل في طلب معلومات الكتلة ، سأحاول مرة أخرى: [configmaps "معلومات المجموعة" ممنوع: المستخدم " النظام: مجهول " لا يمكنه الحصول على خرائط التكوين في مساحة الاسم "kube-public"]

لقد بدأت العقدة كـ SelfHosting.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات