Google は Kubernetes エンジンで Windows Server Containers をサポートし、すべてのクラウド リソースを Kubernetes のように見せるコネクタをリリースしました。
Microsoft は、Windows Server 2016 で初めてサーバー コンテナーを導入しました。これにより、.NET Framework (Linux でも実行される .NET Core とは対照的) を使用するアプリケーションや、Microsoft の Web サーバーである IIS の機能など、Windows アプリケーションでコンテナーを使用できるようになります。
GoogleのWindows Serverコンテナのサポートはベータ版であり、2019年3月にKubernetesに追加されたサポートを基盤としています。WindowsコンテナとLinuxコンテナを同じクラスタ内で同時に実行できます。また、Group Managed Service Accounts(GMSA)を含むGoogleのマネージドActive Directoryサービスもサポートされています。
TPU(Tensor Processing Unit)やGPUによるハードウェアアクセラレーションはサポートされていないなど、いくつかの制限があります。コスト削減のためにプリエンプティブルノードプールを使用することはできません。Hyper-Vコンテナはサポートされていません。
Googleはまた、「Windows Serverのコンテナイメージ、そしてそれらを構成する個々のレイヤーは非常に大きくなる可能性があります。これにより、コンテナレイヤーのダウンロードと展開時にKubeletがタイムアウトし、失敗する可能性があります」と警告しています。タイムアウト値を増やすことで、この問題を回避できます。
GKE への Windows サポートの導入により、GKE の適用範囲が拡大し、既存アプリケーションの移行が容易になります。コンテナをデプロイメントターゲットとして使用する DevOps ソリューションにとっても有益であり、CircleCI、CloudBees、GitLab などの企業からこの新機能への歓迎の声が上がっています。GitLab は最近、クラウド内で Windows ビルドを実行するための Windows Shared Runners を導入しており、これは GKE の新機能と併用できます。
AWS は、Microsoft Azure と同様に、すでに Windows Server コンテナをサポートしています。
全体像
主要パブリッククラウドプロバイダーによるWindowsコンテナのサポートは、採用の大幅な増加にはつながらない可能性が高い。コンテナの多くはLinuxアプリケーションを実行しており、WindowsのサポートはDockerとK8sの両方において後発だった。Microsoft自身も、.NET Coreを使ったアプリケーション開発とSQL Serverなどの自社アプリケーションの両方において、Linuxサポートの強化に注力している。例えば、NetcraftによるActive Sitesの調査によると、IISの利用率は減少傾向にあるようだ。Microsoftのサーバーは最新のデータでは5%にとどまっており、2010年のピーク時の38%から減少している。
Googleは、K8sの発明者としての優位性を強調するため、この技術への注力を強化しているようだ。先週発表されたもう一つの新機能は、Config Connectorの一般提供開始だ。これは「すべてのGCPリソースをKubernetesリソースのように動作させる」オペレーターだ。Googleは、これは一貫した管理に役立つと説明しているが、同社の一般的なアプローチを表明しているようにも思える。
GCPとAzureでは、ほとんどのコンテナがK8sにデプロイされており、AWSでの使用も増加しています。
クラウド監視サービスDatadogの調査によると、主要3社のクラウドプロバイダー全てにおいて、コンテナ展開におけるK8sの利用割合が増加しています。Azure上のコンテナのほとんどは現在K8s上で動作しています。AWSではK8sの利用率は約45%で、2017年のほぼ2倍となっています。ただし、AWSはK8sの波に抵抗する兆候を見せています。Datadogは、コンテナ環境で実行される最も人気のあるプログラミング言語についても報告しています。Node.jsがトップで、Java、Python、PHP、Ruby、Goがそれに続きます。Microsoftの.NETは6位でした。®