Kubernetes
coredns pod 卡在 Pending 狀態
我正在嘗試學習 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-