Поды, запущенные на подчиненном узле Kubernetes, находятся в состоянии ContainerCreating

Мне удалось настроить мастер Kubernetes. Я создал подчиненный узел Kubernetes, установив Docker и kubelet (используя kubeadm). После выполнения команды соединения подчиненный узел присоединяется к кластеру. Я могу проверить это на главном узле. Но модули, которые развертываются на подчиненном узле, всегда находятся в состоянии ContainerCreating. Помимо докера и кубелета, нужно ли что-то еще установить на подчиненный узел ??

Статус kubectl показывает, что remote_runtime.go: RunPodSandBox из службы времени выполнения не удалось: ошибка rpc: code = DeadlineExceeded

Ценю вашу помощь .


person Balakumar Ezhilmaran    schedule 28.06.2018    source источник
comment
PodSandBox почти всегда является ошибкой CNI - используете ли вы SDN, и если да, правильно ли kubeadm настроил его на этом узле?   -  person mdaniel    schedule 29.06.2018


Ответы (1)


В таких случаях я обычно начинаю устранение неполадок кластера с проверки состояния модулей в пространстве имен kube-system с помощью команды:

$ kubectl get pods --all-namespaces -o wide

Должно быть несколько модулей, связанных с сетью, работающих на каждом узле, например:

NAMESPACE     NAME                    READY     STATUS    RESTARTS   AGE       IP               NODE
kube-system   calico-node-2rpns       2/2       Running   0          2h        10.154.0.5       kube-node1
kube-system   calico-node-cn6cl       2/2       Running   0          2h        10.154.0.6       kube-master
kube-system   calico-node-fr7v5       2/2       Running   1          2h        10.154.0.7       kube-node2

Полный набор сетевого контейнера зависит от того, какое сетевое решение Kubernetes используется.

Затем я проверяю, есть ли какие-то модули в состоянии «Не готов», и проверяю ошибки в описании:

$ kubectl describe pod not-ready-pod-name

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

$ journalctl -u kubelet

или попробуйте вытащить изображение вручную, чтобы убедиться, что изображение доступно и может быть извлечено:

$ docker pull <image>

Если у модуля много перезапусков, я проверяю журналы контейнера модуля:

$ kubectl logs ${POD_NAME} ${CONTAINER_NAME}

или журналы предыдущего разбитого контейнера:

$ kubectl logs --previous ${POD_NAME} ${CONTAINER_NAME}

Мои следующие шаги зависят от предыдущих результатов.

Если вы добавите свои результаты к вопросу, можно будет рассказать вам больше о деле.

person VASャ    schedule 29.06.2018