このページの本文へ

FIXER cloud.config Tech Blog

ノードを“汚す”? KubernetesのTaintにビビらない

2021年10月19日 11時00分更新

文● 松枝 宏樹/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「KubernetesのTaintにビビらない #Kubernetesリレー」を再編集したものです。

 Kubernetesをやり始めたころ、登場する言葉の多さに絶望したことを覚えています。

 特にこの「Taint」はびっくりしました、「汚す」ってどういうこと?

 ちょっと解説してみます。

ノードを汚すという行為


kubectl taint

 のようなコマンドを使うと、ノードにTaintをつける、つまりノードを汚すことになります。

 なんだかネガティブな感じですよね。

 ここで大事なことは、「Podはキレイ好き!」ということです。

 Taintが設定されたノードでは、普通のPodは「こんな汚い場所で立ち上がりたくない!」となります。

 Taintを活用するコマンドで


kubectl drain

 というのがありますが、これを使うとTaintの作用等によりPodをノードから安全に追い出すことができ、ノードのメンテナンスが可能な状態になります。

汚れを許容する Toleration

 通常のPodは完璧主義というか、あらゆるTaintを拒否します(たぶん)。

 でも、いつもすべてを清潔に保てるとは限りませんよね、例えば家の窓の掃除は結構妥協してたり…

 こういう、一部のTaintは気にしない、といった振る舞いをPodにさせるためにTolerationという概念があります。

 例えばWindowsコンテナのPodはWindowsのノードでしか起動できないので、ノードにWindows限定にするTaintをつけておき、WindowsのPodでTolerationを設定すれば良いことがありそうですね。
(急にニッチな話題に…)

まとめ

 詳しいコマンドは解説しませんでしたが、「Taint」という概念については「Podはキレイ好きだから汚れた場所にはいきたくない」という性格を覚えておくと、関連するドキュメントが一気に読みやすくなります。 是非覚えておいてください。

松枝 宏樹/FIXER

名古屋事業所所属。
得意分野はC#、ASP.NET、terraformなど。
最近はdocker、K8s関連を勉強中。

[転載元]
KubernetesのTaintにビビらない #Kubernetesリレー

カテゴリートップへ