事象
PodのステータスがPending状態でkubectl describe pod
で確認すると以下のようになっている。
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 43s (x2 over 43s) default-scheduler 0/2 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate, 1 node(s) had taint {node.kubernetes.io/not-ready: }, that the pod didn't tolerate.
環境情報
- kubectl v1.18.5
原因/解決策
ネットワークプラグインがインストールされていなかったためWorkerNodeがNotReady状態だった。
よって以下マニフェストを適用してプラグインをインストールすると
$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
Podは割り当てられた。
$ kubectl get pod NAME READY STATUS RESTARTS AGE nginx-dep-7d7d744c9-qrzr6 1/1 Running 0 2m19s
以下補足です。
補足
通常はあまり意識しないこのプラグインですが以下記事のように自前でKubernetesを用意する場合は注意が必要です。
Calicoというオープンソースの仮想ネットワークソリューションを利用することでNodeやコンテナ間の通信が行えます。
kubeletが落ちている場合も同様にNotReadyになりますが
ネットワークプラグインが入っていない場合も同様の動きとなります。
尚、Calicoは以下のように導入できます。
$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml configmap/calico-config created customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created clusterrole.rbac.authorization.k8s.io/calico-kube-controllers created clusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers created clusterrole.rbac.authorization.k8s.io/calico-node created clusterrolebinding.rbac.authorization.k8s.io/calico-node created daemonset.apps/calico-node created serviceaccount/calico-node created deployment.apps/calico-kube-controllers created serviceaccount/calico-kube-controllers created
以上です。