(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Kubernetes】ネットワークプラグインが入っていないとWorkerNodeはNotReadyとなる

スポンサーリンク

事象

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

以上です。