Kubernetes

coredns pod 卡在 Pending 狀態

  • May 28, 2021

我正在嘗試學習 k8s,因為我碰巧可以訪問 OpenStack 雲,所以我想我會按照這個 wiki嘗試在上面安裝 k8s 。

到目前為止,我已經能夠初始化集群、安裝 weave CNI、連接外部工作人員並安裝 OpenStack 雲控制器管理器。根據上面的 Wiki,現在我應該等待 kube-system 命名空間中的所有 pod 執行。不過,我被coredns pod 困住了……它們不會從Pending狀態移動。

從 pod 的描述中,我可以看到我的問題是節點仍然有以下污點:

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

所有的 pod(除了 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>

我在 pod 的日誌中發現了任何可疑的東西。

我使用的 OpenStack 沒有安裝 Octavia(Wiki 說設置 LB 需要它,但我的問題似乎與此無關)。

如果這裡的任何人能夠幫助我找到調查(並最終解決)這個問題的方法,將不勝感激。謝謝。

看起來有問題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-

引用自:https://serverfault.com/questions/1064936