& Image of Windows Container 4. Windows Container & Kubernetes 5. Verification of Windows Container 6. Future Investigation and Verification 7. Reference
Machine Docker Client Windows Server Docker ホストOSのバージョン/ビルドと Windowsコンテナーのバージョン/ビル ドが同じ必要があります。 カーネル共有における制限 Windows Container Windows Container Windows Container Kernel Share
Docker Client Docker UtilityVM Windows Server Utility VM (Windows Kernel) Windows Container Utility VM (Linux Kernel) Linux Container UtilityVMと呼ばれる仮想マシンがその 上で稼働するコンテナーにカーネルを 提供します。 Hyper-V分離モードのコンテナーは、ホ ストOSのカーネルを共有することはあ りません。 Kernel Share Kernel Share Linux Containers on Windows (LCOW) Hyper-V Container Hyper-V Hypervisor
BareMetal or Hyper-V Virtual Machine Docker Client Docker Desktop (Docker Engine) Utility VM (Windows Kernel) Windows Container Utility VM (Linux Kernel) Linux Container Docker Desktop for Windowsでの LCOWの仕組みは、Hyper-V分離モー ドで実現されます。 Kernel Share Kernel Share Linux Containers on Windows (LCOW) Hyper-V Container そもそも、Linuxコンテナーが稼 働する環境とは違うの? Windows 10 Client Hyper-V
Windows BareMetal or Hyper-V Virtual Machine Docker Client Docker Desktop Moby Linux DockerDesktopVM(Hyper-V VM) Hyper-V仮想マシンとしてLinuxホスト (DockerDesktopVM)が稼働して、そ のLinuxカーネルを共有してLinuxコンテ ナーが稼働する仕組みです。 また、Dockerクライアントは、そのLinux ホスト内のDocker Engineに接続しま す。 Docker Engine Linux Container Linux Container Linux Container Windows 10 Client Hyper-V
Windows Server Docker Windows Container Windows Container Windows Container Kernel Share View the detail この部分を詳しく... プロセス分離モード(Windows Server Container)
HCS(Host Compute Service) HNS(Host Network Service) Job objects Namespaces Union like filesystem extensions WinNAT Windows Firewall vSwitch TCP/IP VPF libnetwork plugins Windows Container Windows Container
イメージ種類 概要 Windows Server Core Windows Server API (.NET framework) のサブセットを含むWindows ServerのServer Coreベースイ メージ。.NETフレームワークアプリケーション向け。 Nano Server .NET Core APIと一部のサーバー ロールのサポートが含むWindows ServerのNano Serverイメー ジ。.NET CoreベースのWindowsアプリケーション向け。 Windows Windows 10 Enterpriseのベースイメージ。Windows APIとシステムサービス (サーバー ロールは除く) の完全セットのイメージ。Windows Server Coreで依存関係が解決できない場合に利用(サイズ大)。 Windows 10 IoT Core Windows IoT Coreのベースイメージ。Azure IoT Edgeデバイス用アプリケーション開発向け。 Windows Insider Windows Insider Programに参加して利用できる一般公開前のベースイメージ。Windows Insider Program向け。上記4種類のInsiderイメージがあります。 参照:https://docs.microsoft.com/ja-jp/virtualization/windowscontainers/manage-containers/container-base-images
Nano Server Windows Server Core Image Image .Net Frameworkは、servercoreイメージ、.Net Coreは、nanoserverイメージを利用しま す。 ※.NET Coreはクロスプラットフォーム対応のため、 Linuxのイメージも可能です。
Server 2019で プロセス分離モード で確認 >docker run -it --isolation=process --rm mcr.microsoft.com/windows/servercore:1809 cmd Microsoft Windows [Version 10.0.17763.1397] (c) 2018 Microsoft Corporation. All rights reserved. C:\>dir Volume in drive C has no label. Volume Serial Number is 5EE3-A54B Directory of C:\ 05/07/2020 04:48 AM 5,510 License.txt 08/06/2020 04:55 PM <DIR> Program Files 08/06/2020 04:53 PM <DIR> Program Files (x86) 08/06/2020 04:56 PM <DIR> Users 08/17/2020 02:29 AM <DIR> Windows 1 File(s) 5,510 bytes 4 Dir(s) 21,165,944,832 bytes free フォアグラウンドでコンテナを起動します。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 945985b000b5 mcr.microsoft.com/windows/servercore:1809 "cmd" 2 hours ago Up 2 hours stoic_nash 新規ウィンドウから稼働状況を確認します。 > docker inspect 945985b000b5 -f "{{.HostConfig.Isolation}}" process プロセス分離モードか確認します。 実際に格納されているか確認します。 servercoreのイメージは、 nanoserverよりもレイヤが多い
Hyper-V分離モード で確認 >docker run -it --isolation=hyperv --rm mcr.microsoft.com/windows/nanoserver:1809 cmd C:\>dir Volume in drive C has no label. Volume Serial Number is F89E-63A5 Directory of C:\ 07/07/2020 11:12 PM 5,510 License.txt 07/27/2020 02:27 PM <DIR> Users 07/27/2020 02:27 PM <DIR> Windows 1 File(s) 5,510 bytes 2 Dir(s) 21,245,104,128 bytes free フォアグラウンドでコンテナを起動します。
Server 2019/1809+)ノードをワーカー ノードとして追加し、Windowsコンテナーをスケジュールする機能をサポート。※Control PlaneはLinuxであることが制限事項 参考:Intro to Windows support in Kubernetes (https://kubernetes.io/ja/docs/setup/production-environment/windows/intro-windows-in-kubernetes/) 2020年9月時点では、Kubernetesで対応するWindowsコンテナーは、 プロセス分離モード、Hyper-V分離モードはKubernetes1.20(containerd1.5)予定。 History
plugins Windows HCS(Host Compute Service) HNS(Host Network Service) Job objects Namespaces Union like filesystem extensions WinNAT Windows Firewall TCP/IP vSwitch VPF dockershim hcsshim Windows Container Windows Container
Windows support in Kubernetes (https://kubernetes.io/ja/docs/setup/production-environment/windows/intro-windows-in-kubernetes/) • Enable CRI plugin #4076 • Add support for Windows containers process isolation cri#1264 • Build CRI Plugin on Windows and add presubmit cri#1258 Containerd GitHub上では、1.4で追加されました。(2020年8月時点)。 (https://github.com/containerd/containerd/releases)
Containerを稼働させる場合は、ノードプールとしてWindows Server ノードプルを追加する必要があります。以下の制約があります。 • AKSクラスターでは、最大で10のノードプールを作成できます。 • AKSクラスターでは、最大で100のノードを各ノードプールで作成できます。 • Windows Server ノードプール名は6文字に制限されています。
--resource-group myResourceGroup \ --cluster-name myAKSCluster \ --os-type Windows \ --name npwin \ --node-count 1 3.Windows Server ノードループ追加 $ az aks get-credentials --resource-group myResourceGroup --name myAKSCluster 4.クラスタに接続 $ kubectl get nodes NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmssfedcba Ready agent 13m v1.16.13 aksnpwin987654 Ready agent 108s v1.16.13
$ kubectl get service sample NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 6s 7.接続IPアドレスの確認 8.ブラウザアクセス
Compute Service (HCS) https://techcommunity.microsoft.com/t5/containers/introducing-the-host-compute-service-hcs/ba-p/382332 • Windows上のコンテナに関するドキュメント https://docs.microsoft.com/ja-jp/virtualization/windowscontainers/ • Kubernetesエコシステム-コンテナランタイム編 https://www.kaitoy.xyz/2019/06/15/k8s-ecosystem-container-runtimes/#containerd • Docker Desktop の復習と、Windows Container に入門: Windows Server Container 理論編 https://qiita.com/kikuchi_kentaro/items/2fb0171e18821d402761 • Intro to Windows support in Kubernetes(翻訳にコントリビュートしました) https://kubernetes.io/ja/docs/setup/production-environment/windows/intro-windows-in-kubernetes/ • sig-windows https://github.com/kubernetes/enhancements/tree/master/keps/sig-windows