Amazon Web Services ブログ

Amazon EKS Windows Container が一般利用可能になりました

今年 3 月に、当社は Amazon Elastic Kubernetes Service で Windows Container サポートのプレビューを発表し、カスタマーをベータテストにお招きし、フィードバックを提供していただきました。そのフィードバックに基づいて数か月間改修を重ね、Windows Container が一般利用可能になりました。

多くの開発チームは Windows Server で実行されるように設計されたアプリケーションを構築し、継続的にサポートしています。また、この発表により、 Linux アプリケーションと共に Kubernetes で展開が可能となりました。この機能は、システムロギング、パフォーマンス監視、コードデプロイパイプラインでより一貫性を実現します。

Amazon Elastic Kubernetes Service は、Kubernetes の構築、保護、運用、および維持のプロセスを簡素化し、組織が Kubernetes の代わりに、アプリケーションの構築に焦点をあてることができるようにします。AWS は、Kubernetes で Windows Container を一般的に利用可能にした最初のクラウド プロバイダーであることに誇りを思っています。そして、Windows と Linux ワークロードの両方で、Kubernetes のビジネス上の利点をお客様に解放していくことを楽しみにしています。

この機能の動作の方法を示すためには、Amazon Elastic Kubernetes サービスクラスタが必要になります。新しいものを作成しますが、これは Kubernetes バージョン 1.14 以上を使用するクラスタで機能します。クラスタが構成されたら、いくつかの新しい Windows ノードを追加し、Windows アプリケーションをデプロイします。最後に、アプリケーションが期待通りに動作することをテストします。

クラスタのセットアップを行う最も簡単な方法は、EKS の正式な CLI ツールである eksctl を使用することです。以下のコマンドは、demo-windows-cluster と呼ばれるクラスタを作成し、クラスタに 2 つの Linux ノードを追加します。現在、少なくとも 1 つの Linux ノードが Windows ノードとポットネットワーキングをサポートするために必要ですが、高可用性のために 2 つを選択し、皆さまにも同じように行うことをお勧めします。

eksctl create cluster \
--name demo-windows-cluster \
--version 1.14 \
--nodegroup-name standard-workers \
--node-type t3.medium \
--nodes 2 \
--nodes-min 1 \
--nodes-max 3 \
--node-ami auto

eksctl バージョン 0.7 以降、新しいユーティリティが呼び出された install-vpc-controllers に追加されています。このユーティリティは、必須の VPC Resource Controller と VPC Admission Webhook をクラスタにインストールします。これらのコンポーネントは Linux ノードで実行され、Windows ノードの受信ポッドでネットワーキングを有効にする責任を負っています。 ツールを使用するには、次のコマンドを実行します。

eksctl utils install-vpc-controllers --name demo-windows-cluster --approve

eksctl を使用したくない場合は、PowerShell または Bash スクリプトを実行して、同じ結果を得る方法に関して、ドキュメントにガイドも示されています。

次に、私たちのクラスタにいくつかの Windows ノードを追加します。eksctl を使用してクラスタを作成する場合、次のコマンドが機能します。既存のクラスタの操作をする場合は、Windows ノードグループを作成し、それをクラスタに接続する手順について、ドキュメントを確認してください。

eksctl create nodegroup \
--region us-west-2 \
--cluster demo-windows-cluster \
--version 1.14 \
--name windows-ng \
--node-type t3.medium \
--nodes 3 \
--nodes-min 1 \
--nodes-max 4 \
--node-ami-family WindowsServer2019FullContainer \
--node-ami ami-0f85de0441a8dcf46

リージョンの最新の Windows AMI ID は、AWS SSM パラメータ ストアをクエリすることで見つけることができます。これを行う手順は、Amazon EKS ドキュメントに記載されています。

これでノードを開始し、実行しているので、サンプルアプリケーションをデプロイできます。AWS コンテナ ロードマップ GitHub リポジトリから YAML ファイルを使用しています。このファイルは、IIS を実行するシングルコンテナから構成されるアプリケーションを設定し、順にベーシック HTML ページをホストします。

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-windows-preview/windows-server-IIS.yaml

これらは Windows コンテナで、Linux コンテナよりも若干大きいため、ダウンロードしてスタートアップするのに若干長く時間がかかります。私は次のコマンドを実行して、デプロイの進捗情報を監視しました。

kubectl get pods -o wide --watch

ポッドが実行状態に移行するのに、約 5 分間待ちました。次に次のコマンドを実行して、ポッドに接続し、コンテナの内部の PowerShell セッションを初期化します。windows-server-iis-66bf9745b-xsbsx プロパティはポッドの名前で、これに従う場合、あなたの名前は異なります。

kubectl exec -it windows-server-iis-66bf9745b-xsbsx powershell

PowerShell セッションに接続されると、コンテナ内部でターミナルを使用しているときと同じように、PowerShell を実行できます。したがって、以下のコマンドを実行する場合、ニュースブログに関する情報を一部取得する必要があります。

Invoke-WebRequest -Uri https://thinkwithwp.com/blogs/aws/ -UseBasicParsing

PowerShell セッションを終了するために、exit を入力すると、ターミナルに応答しますそこから、サンプルアプリケーションによりデプロイされたサービスを検査することができ、以下のコマンドを入力できます。

kubectl get svc windows-server-iis-service

これにより、サービスを説明する以下の出力が得られます。

NAME				TYPE 		CLUSTER-IP 	EXTERNAL-IP 				PORT(S) 	AGE
windows-server-iis-service 	LoadBalancer 	xx.xx.xxx.xxx 	unique.us-west-2.elb.amazonaws.com 	80:32750/TCP 	54s

外部 IP はロードバランサーのアドレスであるはずです。URL をブラウザーに入力し、/default.html に追加する場合、サンプルアプリケーションのデプロイにより作成された HTML ページをロードします。これは、私がデプロイした Windows コンテナの 1 つから IIS サーバーによりサービスされています。

Hello EKS というウェブサイト

したがって、Windows Container を Amazon Elastic Kubernetes サービス で実行中にします。 .詳細については、ドキュメント を確認してください。Amazon EKS Windows Container のサポートは、Amazon EKS とすべての同じリージョンで利用可能で、料金の詳細はこちらにあります。

Amazon Elastic Kubernetes サービスの長期的なロードマップを描いていますが、フィードバックをぜひお寄せください。それらを参考に今後の優先付けプロセスを加速させてまいります。この機能については、ぜひ一度ご覧いただき、ご意見をお聞かせください。