KubernetesのTaintにビビらない

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 はキレイ好きだから汚れた場所にはいきたくない」という性格を覚えておくと、関連するドキュメントが一気に読みやすくなります。

是非覚えておいてください。

自作のWindowsアプリをAKSに載せるキホン技

Azure Kubernetes Service(以降、AKS)は Windows コンテナの使用できる構成を作成することができます。

(記事公開時点ではパブリックプレビュー)

Windows コンテナが使える AKS を用意して、アプリを動かしてみましょう。

アプリの作成からインフラの作成まで一通り必要な手順を書いてみましたので、この記事をベースに Windows コンテナの世界に入門していただけたらと思います。

また、アプリ開発、コンテナ作成、AKS 作成を一通り記載しているので、例えばアプリ開発は知識があるけどインフラはちょっと・・・という場合に部分的に参照していただけると嬉しいです。

Azure Cloud Shell とはなんぞや?などの細かい説明は省いていますので、適宜調べながら読み進めていただけたらと思います。

概要

  • (Windows 環境でしか動作しない)アプリケーションを作成します
  • アプリケーションを載せたコンテナイメージを作成します
  • コンテナイメージをコンテナレジストリ(ACR)に格納します
  • Windows コンテナが動作する AKS を作成します
  • マニフェストファイルを使用して、AKS 上でコンテナを動かします

Web アプリの作成

【作業環境の想定:手元の Windows PC】

Web 上に公開されているサンプルアプリを使っても良いんですが、現実は自社で作成したアプリなどを使用すると思うので、Web アプリの作成からサラッと見てみましょう。

Windows コンテナが必要なケースは、Windows でしか動作しないアプリ、例えば.NET Framework のアプリを使用している場合だと思われます。.NET Framework の ASP.NET MVC アプリを作っておきましょう。

下記サイトから Visual Studio のインストーラをダウンロードします。 https://visualstudio.microsoft.com/ja/downloads/

インストーラを起動し、「ASP.NET と Web 開発」を選択してインストールします。

インストールが成功したら、新規プロジェクトを起動して、C#の ASP.NET MVC アプリを作成しましょう。

ちょっと古めのアプリを載せる想定だと思いますので、.NET Framework は「4.5.2」辺りが良いでしょうか。プロジェクト名は適当で良いので、「MVC」のアプリを作成してください。

アプリが作成されたら、Visual Studio のソリューションエクスプローラーから、Views/Home/Index.cshtml を開き、適当な加工を加えて実行してみてください。例えば下記のような感じでザックリいきましょう。

@{
ViewBag.Title = "コンテナアプリのデモ";
}

<div class="jumbotron">
    <h1>ASP.NET</h1>
    <p class="lead">コンテナでWebアプリを動かしてみよう</p>
</div>

F5 キーでアプリの正常動作を確認したら、アプリケーションを発行しましょう。

[Read More]