Как отлаживать, когда узлы Kubernetes находятся в состоянии "Не готов"

Я инициализировал главный узел и добавил 2 рабочих узла, но только мастер и один из рабочих узлов появляются, когда я запускаю следующую команду:

kubectl get nodes

Кроме того, оба этих узла находятся в состоянии "Не готов". Какие шаги я должен предпринять, чтобы понять, в чем проблема?

  • Я могу ping все узлы от каждого из других узлов.
  • Версия Kubernetes - 1,8.
  • ОС - Cent OS 7
  • Я использовал следующий репо для установки Kubernetes:

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes] name=Kubernetes
    baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    EOF
    
    yum install kubelet kubeadm kubectl kubernetes-cni
    

Ответ 1

Во-первых, опишите узлы и посмотрите, что-нибудь сообщает:

$ kubectl describe nodes

Ищите условия, емкость и распределение:

Conditions:
  Type              Status
  ----              ------
  OutOfDisk         False
  MemoryPressure    False
  DiskPressure      False
  Ready             True
Capacity:
 cpu:       2
 memory:    2052588Ki
 pods:      110
Allocatable:
 cpu:       2
 memory:    1950188Ki
 pods:      110

Если все в порядке, SSH в узле и наблюдайте kubelet журналами kubelet чтобы увидеть, сообщает ли он что-либо. Подобно сертификатам, ошибкам аутентификации и т.д.

Если kubelet запущен как служба systemd, вы можете использовать

$ journalctl -u kubelet

Ответ 2

У меня была похожая проблема по другой причине:

Ошибка:

[email protected]:~$ kubectl get nodes
NAME    STATUS     ROLES    AGE     VERSION
node1   Ready      master   17h     v1.13.5
node2   Ready      <none>   17h     v1.13.5
node3   NotReady   <none>   9m48s   v1.13.5

[email protected]:~$ kubectl describe node node3
Name:               node3
Conditions:
  Type             Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----             ------  -----------------                 ------------------                ------                       -------
  Ready            False   Thu, 18 Apr 2019 01:15:46 -0400   Thu, 18 Apr 2019 01:03:48 -0400   KubeletNotReady              runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Addresses:
  InternalIP:  192.168.2.6
  Hostname:    node3

шнур @узел3: ~ $ journalctl -u kubelet

Apr 18 01:24:50 node3 kubelet[54132]: W0418 01:24:50.649047   54132 cni.go:149] Error loading CNI config list file /etc/cni/net.d/10-calico.conflist: error parsing configuration list: no 'plugins' key
Apr 18 01:24:50 node3 kubelet[54132]: W0418 01:24:50.649086   54132 cni.go:203] Unable to update cni config: No valid networks found in /etc/cni/net.d
Apr 18 01:24:50 node3 kubelet[54132]: E0418 01:24:50.649402   54132 kubelet.go:2192] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Apr 18 01:24:55 node3 kubelet[54132]: W0418 01:24:55.650816   54132 cni.go:149] Error loading CNI config list file /etc/cni/net.d/10-calico.conflist: error parsing configuration list: no 'plugins' key
Apr 18 01:24:55 node3 kubelet[54132]: W0418 01:24:55.650845   54132 cni.go:203] Unable to update cni config: No valid networks found in /etc/cni/net.d
Apr 18 01:24:55 node3 kubelet[54132]: E0418 01:24:55.651056   54132 kubelet.go:2192] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Apr 18 01:24:57 node3 kubelet[54132]: I0418 01:24:57.248519   54132 setters.go:72] Using node IP: "192.168.2.6"

Выпуск:

Мой файл: 10-calico.conflist был неверным. Проверено с другого узла и из образца файла в том же каталоге "calico.conflist.template".

Разрешение:

Изменение файла "10-calico.conflist" и перезапуск службы с помощью "systemctl restart kubelet" решило мою проблему:

NAME    STATUS   ROLES    AGE   VERSION
node1   Ready    master   18h   v1.13.5
node2   Ready    <none>   18h   v1.13.5
node3   Ready    <none>   48m   v1.13.5

Ответ 3

Я обнаружил, что применение сети и перезагрузка обоих узлов помогли мне.

kubectl apply -f [подсеть].yaml