Поды coredns зависли в состоянии ожидания
Я пытаюсь изучить k8s, и, поскольку у меня есть доступ к облаку OpenStack, я решил попытаться установить на него k8s, следуя этой вики .
На данный момент мне удалось инициализировать кластер, установить weave CNI, подключить внешнего работника и установить менеджер облачного контроллера OpenStack. Согласно приведенной выше Wiki, теперь мне следует дождаться запуска всех модулей в пространстве имен kube-system. Однако я застрял в модулях Coredns... Они не перейдут из состояния ожидания .
Из описания модуля я вижу, что моя проблема в том, что главный узел по-прежнему имеет следующее загрязнение:
node-role.kubernetes.io/master:NoSchedule
. Когда я проверяю состояние узла, все кажется нормальным:
ubuntu@master-node-01:~$ kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master-node-01 Ready master 10h v1.17.0 10.99.53.6 <none> Ubuntu 18.04.5 LTS 4.15.0-143-generic docker://20.10.2
worker-node-01 Ready <none> 10h v1.17.0 10.99.53.5 <none> Ubuntu 18.04.5 LTS 4.15.0-143-generic docker://20.10.2
Все поды (кроме coredns) работают нормально:
ubuntu@master-node-01:~$ kubectl get pods --all-namespaces -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system coredns-6955765f44-g2jnm 0/1 Pending 0 10h <none> <none> <none> <none>
kube-system coredns-6955765f44-wj7xb 0/1 Pending 0 10h <none> <none> <none> <none>
kube-system etcd-master-node-01 1/1 Running 0 11h 10.99.53.6 master-node-01 <none> <none>
kube-system kube-apiserver-master-node-01 1/1 Running 0 11h 10.99.53.6 master-node-01 <none> <none>
kube-system kube-controller-manager-master-node-01 1/1 Running 0 11h 10.99.53.6 master-node-01 <none> <none>
kube-system kube-proxy-8s8r9 1/1 Running 0 10h 10.99.53.5 worker-node-01 <none> <none>
kube-system kube-proxy-vtgnz 1/1 Running 0 10h 10.99.53.6 master-node-01 <none> <none>
kube-system kube-scheduler-master-node-01 1/1 Running 0 11h 10.99.53.6 master-node-01 <none> <none>
kube-system openstack-cloud-controller-manager-dtczj 1/1 Running 0 10h 10.99.53.6 master-node-01 <none> <none>
kube-system weave-net-2z5n7 2/2 Running 2 10h 10.99.53.5 worker-node-01 <none> <none>
kube-system weave-net-tm9p4 2/2 Running 1 10h 10.99.53.6 master-node-01 <none> <none>
В журналах модуля я обнаружил что-то подозрительное.
В OpenStack, который я использую, не установлена Octavia (Вики говорит, что она необходима для настройки LB, но моя проблема, похоже, не связана с этим).
Если кто-нибудь здесь сможет помочь мне найти способ исследовать (и в конечном итоге решить) эту проблему, я буду очень признателен. Спасибо.
1 ответ
Похоже на проблему сtaints
. Попробовать решить проблему можно несколькими способами:
- удалить порчу:
kubectl taint nodes $(hostname) node-role.kubernetes.io/master:NoSchedule-
- отредактируйте конфигурацию узла и прокомментируйте испорченную часть:
kubectl edit node <node_name>
Вам необходимо обновить узел после комментирования.
- запланируйте работу на главном узле, не удаляя порчу:
apiVersion: extensions/v1beta1
kind: Deployment
...
spec:
...
spec:
...
tolerations:
- key: "node-role.kubernetes.io/master"
effect: "NoSchedule"
operator: "Exists"
- в этой документации говорится, что это решение также должно работать:
kubectl taint nodes $(kubectl get nodes --selector=node-role.kubernetes.io/master | awk 'FNR==2{print $1}') node-role.kubernetes.io/master-