Azure Portal から Azure Container Service を作ろうとすると Dv2 までしかインスタンスが選べないので、新しい Nested Virtualization に対応した Dv3 を使ってクラスタを作ることは出来ませんが、ACS Engine を使うと作成することが出来ます。
ACS Engine は ARM Template を作成するだけなので、ACS の制限とは無縁です。
セットアップは README などに書いてある通りなので省略します。前までは Azure Cloud Shell にインストール出来ましたが、最近のバージョンでは Go 1.8 が必要らしく手間がかかりそうです。
基本的に Windows ベースの Kubernetes しか作る気がないので、ACS Engine のリポジトリに用意されている Windows 向けのサンプルを修正して、D2 v3 を使うようにします。
"agentPoolProfiles": [ { "name": "windowspool", "count": 2, "vmSize": "Standard_D2_v3", "availabilityProfile": "AvailabilitySet", "osType": "Windows" } ]
修正したサンプルから ACS Engine を使って ARM Template を作成し、リソースグループにデプロイを行うだけで Dv3 ベースの Kubernetes が完成します。
あまり関係ないですが、Managed Disk を使って VM が作成されていました。課金に注意ですね。
作成された VM を確認すると、指定通り D2 v3 なインスタンスとなっています。Hyper Threading なインスタンスなので、コンテナを多く立ち上げる場合には少し不安があります。
これで Hyper-V Containers が利用可能な Windows Server と Kubernetes な環境が手に入りました。
既に Kubernetes は Windows Server Containers と Hyper-V Containers に対応していると発表されています。
Support for Both Windows Server Containers and Hyper-V Containers - There are two types of containers in Windows Server 2016. Windows Containers is similar to Docker containers on Linux, and uses kernel sharing. The other, called Hyper-V Containers, is more lightweight than a virtual machine while at the same time offering greater isolation, its own copy of the kernel, and direct memory assignment. Kubernetes can orchestrate both these types of containers.
対応していると発表されてはいますが、軽く調べた限りでは Hyper-V Containers を利用する方法は分かりませんでした。まともに Windows Containers を使う場合には Hyper-V が必要なので、何とかしたいところです。
Hyper-V Containers で実行する方法が分かれば続きを書く予定です。