Elastic Container Instance (ECI) は Windows ベースのインスタンスをサポートしています。コンテナーが Windows 環境を必要とする場合、クラスターに Windows 仮想ノードを追加し、そこに Pod をスケジュールできます。この操作により、Windows ベースの ECI Pod (ECI インスタンス) が作成され、コンテナーが実行されます。
Windows インスタンスは招待制プレビューです。この機能を使用するには、チケットを送信してください。
前提条件
クラスター内の Virtual Kubelet (ACK Virtual Node コンポーネント) のバージョンは v2.11.0-rc.0 以降である必要があります。詳細については、コンポーネントの管理とACK Virtual Nodeをご参照ください。
制限事項
-
Windows ベースの ECI インスタンスを作成する場合、インスタンスタイプには少なくとも 2 vCPU と 4 GiB のメモリが必要です。GPU アクセラレーションインスタンスタイプ、ローカルディスク付きのインスタンスタイプ、および ARM ベースのインスタンスタイプはサポートされていません。
-
Windows コンテナーイメージのバージョンは 10.0.20348.* (Windows Server 2022) である必要があります。
Windows 仮想ノードの追加
クラスターに Windows 仮想ノードを追加するには、eci-profile を変更します。
-
eci-profile を変更します。
kubectl edit -n kube-system cm/eci-profileeci-profile の data セクションで、
enableWindowsAmd64Nodeを "true" に設定します。設定例を次に示します。data: ...... enableWindowsAmd64Node: "true" # Windows ノードを有効にします。 ...... -
Windows 仮想ノードが作成されたことを確認します。
kubectl get nodes -l kubernetes.io/os=windows出力から、Windows 仮想ノードがクラスターに自動的に作成されたことを確認できます。
kubectl get nodes -l kubernetes.io/os=windows NAME STATUS ROLES AGE VERSION virtual-kubelet-cn-beijing-g-windows-amd64 Ready agent 34s v1.28.3-aliyun.1 virtual-kubelet-cn-beijing-h-windows-amd64 Ready agent 34s v1.28.3-aliyun.1
Windows Pod の作成
Windows 仮想ノードには、"kubernetes.io/os": windows という label が付いています。nodeSelector を使用して、Pod を Windows 仮想ノードにスケジュールします。この操作により、コンテナーを実行するための Windows ベースの ECI Pod が作成されます。
nodeSelector:
kubernetes.io/os: windows
YAML の例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-windows
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-with-eip: "true" # パブリックイメージをプルするために Elastic IP Address (EIP) を関連付けます。
k8s.aliyun.com/eci-use-specs: "ecs.c6.4xlarge" # インスタンスタイプを指定します。
spec:
containers:
- name: test
image: mcr.microsoft.com/windows/nanoserver:ltsc2022 # Windows コンテナーイメージを使用します。
command: ["ping","-t","localhost" ]
nodeSelector:
kubernetes.io/os: windows # Pod を Windows 仮想ノードにスケジュールします。