コンテンツに移動
Google Cloud

Windows コンテナを GKE にデプロイする方法

2019年10月24日
https://storage.googleapis.com/gweb-cloudblog-publish/images/GCP_GKE.max-2600x2600.jpg
Google Cloud Japan Team

※この投稿は米国時間 2019 年 9 月 28 日に Google Cloud blog に投稿されたものの抄訳です。


Windows コンテナを実行する多くの人々は、レジリエンシー(回復力)とスケーラビリティの確保を目的に Kubernetes などのコンテナ管理プラットフォームを使いたいと思っています。前回の投稿では、Compute Engine 上の Windows Server 2019 にデプロイされた Windows コンテナで IIS サイトを実行する方法を説明しました。出発点としては上々ですが、Windows コンテナは Google Kubernetes Engine(GKE)上でも実行できます。


Kubernetes の Windows コンテナ サポートは、今年初めのバージョン 1.14 のリリースとともに発表され、続いて GKE の同バージョンでも発表されました。早期アクセス プログラムにサインアップすれば、GKE 上で Windows コンテナのテストを開始できます。


本稿では、Windows コンテナを GKE にデプロイする方法について説明します。

1. Container Registry にコンテナ イメージをプッシュ

前回の投稿ではコンテナ イメージをローカルに作成しました。最初に、そのイメージを Container Registry にプッシュし、あとで Kubernetes 上で使用できるようにします。


Windows VM から Container Registry にイメージをプッシュする手順は以下のとおりです。


  1. プロジェクト内で Container Registry API が有効になっていることを確認します。

  2. Container Registry を指すように Docker を設定します。こちらに詳しい説明がありますが、通常は gcloud auth configure-docker コマンドを実行します。

  3. こちらで説明されているように、ストレージへの読み書きアクセス スコープ(storage-rw)を VM に設定します。

セットアップが適切に行われていれば、あとは通常の Docker プッシュを実行するだけです。

読み込んでいます...

2. Windows ノードの Kubernetes クラスタを作成

次の 2 ステップにより、Windows ノードの Kubernetes クラスタを GKE 内に作成します。


  1. エイリアス IP を有効にし、1 つの Linux ノードを使用して、バージョン 1.14 以上で GKE クラスタを作成します。

  2. 作成した GKE クラスタに Windows ノード プールを追加します。

1 つの Linux ノードとエイリアス IP を有効にして GKE クラスタを作成するコマンドは以下のとおりです。

読み込んでいます...

最小限の GKE クラスタを作成したら、Windows ノード用の Windows プールを追加できます。

読み込んでいます...

Windows コンテナはリソースを集中的に使用するため、マシン タイプとして n1-standard-2 を選択しています。また、ノードの自動アップグレードを無効にします。Windows コンテナのバージョンはノード OS のバージョンと互換でなければなりません。ワークロードの予期しない中断を避けるため、Windows ノード プールではノードの自動アップグレードを無効にすることをお勧めします。


GKE 上の Windows Server コンテナについては、基盤となる Windows ホスト VM のライセンスがすでに取得されており、コンテナのための追加ライセンスは不要です。


これで GKE クラスタが準備できました。1 個の Linux ノードと 3 個の Windows ノードが含まれています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/GKE_cluster.max-900x900.max-900x900.png

3. GKE 上のポッドとして Windows コンテナを実行

Windows コンテナを GKE 上のポッドとして実行する準備は整っています。次に、Kubernetes デプロイメントを記述する iis-site-windows.yaml ファイルを作成します。

読み込んでいます...

Container Registry にプッシュしたイメージを使用して 2 つのポッドを作っていることに注意してください。また、nodeSelector タグを使ってポッドが Windows ノードにスケジューリングされるようにしています。


デプロイメントを作成します。

読み込んでいます...

数分後にはデプロイメントが作成され、実行中のポッドが表示されるようになります。

読み込んでいます...

4. Kubernetes サービスの作成

ポッドが外部にアクセスできるようにするには、「LoadBalancer」タイプの Kubernetes サービスを作成する必要があります。

読み込んでいます...

数分後、外部 IP を持つ新しいサービスが表示されるようになります。

読み込んでいます...

その外部 IP にアクセスすると、アプリケーションが表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/external_IP.max-400x400.max-400x400.png

これは、前回説明した Compute Engine へのデプロイとよく似ていますが、今回は Kubernetes がポッドを管理している点が大きく異なります。ポッドかノードのいずれかに問題が生じると、Kubernetes は自動的にポッドを作り直して再スケジューリングを行い、見事なまでのレジリエンシーを発揮します。


同様に、Kubernetes ではポッドのスケーリングも 1 つのコマンドで実行可能です。

読み込んでいます...

読み込んでいます...

上記の手順をご自身で試したい方のために、このテーマのコードラボも用意しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Windows_containers_on_GKE.max-400x400.max-400x400.png

GKE 上で Windows コンテナを実行する方法は以上です。これを試してみたい方は、こちらにサインアップして早期アクセス プログラムにご参加ください。


- By Mete Atamel, Developer Advocate

投稿先