LoginSignup
51
30

More than 5 years have passed since last update.

Master NodeにPodをデプロイするための設定

Last updated at Posted at 2018-10-19

Master Node1つのみの構成でKubernetesのセットアップを行った際に、セットアップ作業はエラー無く完了したにもかかわらず、Podのdeployを行うとpendingになってしまう現象が発生しました。
原因の調査と対応方法についてシェアします。
なお、この対応をした環境は検証用の環境であり、敢えてMaster Nodeの1台構成で構築している環境です。ご利用の環境における適切なNode構成は別途検討が必要です。

環境

OS: Ubuntu 16.04.01
Kubernetes: v1.11

現象

  • Kubernetesをセットアップする間は特にエラーはなく、kube-systemのpodも正常に稼動している。
  • しかし、podをdeployするとpending状態となり起動しない。
  • kubectl describe poを実行すると「0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate.」とのメッセージ。

原因

  • 上記のメッセージは「NodeのTaintの条件に対応した状態ではない(= not tolerate)Podをデプロイしようとしたのでデプロイできません」という意味。
  • Master Nodeにデプロイできるようにするにはtaintを外す処理が必要。

※Taintsの概要についてはKubernetesのtaintsとtolerationsについてを参照。とてもわかりやすい!

対応方法

  • 「kubectl get node」コマンドでMaster Nodeの名前を確認する
$ kubectl get node
NAME      STATUS    ROLES     AGE       VERSION
myhost    Ready     master    20h       v1.11.1
$
  • 「kubectl describe node <node-name>」コマンドを実行しMaster Nodeの「Taints: 」に設定された値を確認する
$ kubectl describe node myhost
  • Taintsが設定されている場合は以下のように表示される
    • 下記はdescribeコマンドの出力結果の抜粋
CreationTimestamp:  Thu, 18 Oct 2018 13:55:57 +0900
Taints:             node-role.kubernetes.io/master:NoSchedule
  • 設定を外すために「kubectl taint nodes <node-name> <value-of-tains>-」を実行する
    • tainsの値の後ろに-をつける
# kubectl taint nodes myhost node-role.kubernetes.io/master:NoSchedule-
node/myhost untainted
#
  • Tainsの設定値を再度describeコマンドで確認する
    • Taintsが設定されていない場合は<none>と表示される
CreationTimestamp:  Thu, 18 Oct 2018 13:55:57 +0900
Taints:             <none>

※tainsコマンドのガイドは以下
https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/

51
30
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
30