ノードプールを使用すると、クラスター内のノードリソースのグループを管理できます。たとえば、ノードプールを使用して、ノードラベルと Taint を一元的に管理できます。Windows オペレーティングシステムを使用するノードを作成するには、Container Service for Kubernetes (ACK) クラスターに Windows ノードプールを作成します。また、ノードプールレベルで kubelet、ランタイム、および OS イメージのバージョンをアップグレードすることもできます。
制限事項
次の表に、Windows ノードプールを作成するための要件を示します。
制限事項 | 説明 |
クラスター |
|
コンテナーランタイム | containerd 1.6 以降のバージョンのみが Windows ノードプールをサポートします。 ランタイムバージョンをアップグレードするには、「ノードプールのアップグレード」をご参照ください。 |
ノードプールタイプ | 非マネージドノードプールのみが Windows ノードプールとして作成できます。 |
インスタンスタイプ |
|
次の表に、Windows ノードプールの使用に関する制限事項を示します。
制限事項 | 説明 |
オペレーティングシステム | Windows ノードプールは、Windows Server 2019、Windows Server 2022、および Windows Server Core, Version 2022 をサポートしています。 ACK コンソールは、Windows Server 2019、Windows Server 2022、および Windows Server Core, Version 2022 をサポートしています。Windows Server Core, Version 2004 を使用する場合は、Elastic Compute Service (ECS) の 2023 パブリックイメージリリースレコードから最新のイメージ ID を選択してノードプールを作成してください。 |
ノード数 | デフォルトでは、クラスターに最大 100 ノードを追加できます。さらにノードを追加するには、Quota Center でチケットを送信してください。 |
Elastic Compute Service | 既存の ECS インスタンスを追加する場合、ご利用の Virtual Private Cloud (VPC) 内の ECS インスタンスが Elastic IP アドレス (EIP) に関連付けられているか、VPC に NAT Gateway が設定されていることを確認してください。ノードがインターネットにアクセスできることを確認してください。そうでない場合、ECS インスタンスの追加に失敗します。既存の ECS インスタンスを追加する際の注意事項と手順の詳細については、「既存ノードの追加」をご参照ください。 |
Windows ノードプールの作成
コンソール
デフォルトノードプール (default-nodepool) を Windows ノードプールとして作成することはできません。詳細については、「制限事項」をご参照ください。クラスターを作成した後に Windows ノードプールを作成する必要があります。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
ノードプール ページで、ノードプールの作成 をクリックし、画面の指示に従います。
パラメーターの詳細については、「ノードプールの作成と管理」をご参照ください。次の表に、一部のパラメーターを示します。
パラメーター
説明
マネージド設定
[無効化] を選択します。
コンテナーランタイム
[containerd] を選択します。
インスタンスタイプ
Windows ノードプールのサポートはインスタンスタイプによって異なります。一部のインスタンスタイプは Windows ノードプールをサポートしていません。複数回試行する必要があります。たとえば、ecs.g6.xlarge を選択できます。このインスタンスタイプは Windows ノードプールをサポートしています。
少なくとも 4 vCPU と 8 GB のメモリを持つインスタンスタイプを選択します。
Elastic GPU Service アーキテクチャを使用しないインスタンスタイプを選択します。
インスタンスタイプの詳細については、「インスタンスファミリー」をご参照ください。
予期されるノード数
ノードプールが維持するノードの数。この値を指定すると、ノードプールは指定されたノード数を維持するために自動的にスケールアウトまたはスケールインします。
オペレーティングシステム
Windows オペレーティングシステムを選択します。
ECS タグ
ECS インスタンスにタグを追加します。
ノードラベル
クラスターノードにラベルを追加します。
ノードプール ページで、ステータス が 有効 に変わると、Windows ノードプールが作成されます。
API
CreateClusterNodePool 操作を呼び出して Windows ノードプールを作成し、ノード数やノード仕様などのパラメーターを設定できます。次のコードは、パラメーターの例です。
{
"ClusterId": "ca8ed83XXXXXXXXXXXX5ec197", // クラスター ID。
"body": {
"nodepool_info": {
"name": "nodepool-fXXXXXx", // ノードプールの名前。
"resource_group_id": "rg-acfmXXXXXXXXsjpq" // クラスターが属するリソースグループの ID。このパラメーターはリソースを分離するために使用されます。
},
"scaling_group": {
"vswitch_ids": [ // クラスターノードの vSwitch。このパラメーターは、ノードがないマネージドクラスターを作成する際に必須です。
"vsw-bp1XXXXXXXXXXXXX1xm84",
"vsw-bp1XXXXXXXXXXXX2v6x0a",
"vsw-bp1XXXXXXXXXXXXXjkxbo"
],
"data_disks": [ // ワーカーノード上のデータディスクの構成 (ディスクタイプ、ディスクサイズ、その他の設定など)。
{
"category": "cloud_essd",
"size": 120,
"encrypted": "false",
"performance_level": "PL0"
}
],
"vpc_id": "vpc-bpXXXXXXXXXXXXXXXmgb6", // クラスター VPC の ID。
"instance_charge_type": "PostPaid", // ノードの課金方法。有効な値:PrePaid (サブスクリプション) および PostPaid (従量課金)。デフォルト値:PostPaid。
"internet_max_bandwidth_out": 1, // ノードのパブリック IP アドレスの最大アウトバウンド帯域幅。単位:Mbit/s。有効な値:1~100。
"soc_enabled": false, // MLPS 2.0 セキュリティ強化を有効にするかどうかを指定します。有効な値:true および false。
"security_hardening_os": false, // Alibaba Cloud OS セキュリティ強化を有効にするかどうかを指定します。有効な値:true および false。デフォルト値:false。
"instance_types": [ // インスタンスタイプ。
"ecs.g6.xlarge"
],
"instance_patterns": [ // インスタンスプロパティ設定。
{
"Cores": 4,
"Memory": 16,
"burst_performance_option": "Exclude", // インスタンスタイプがバースト可能インスタンスであるかどうかを指定します。
"excluded_instance_types": [ // 除外したいインスタンスタイプ。
"ecs.c6t.*"
// ...
],
"instance_type_families": [ // 指定したいインスタンスファミリー。
"ecs.g6"
// ...
]
}
],
"login_password": "XXXXXX",
"login_as_non_root": false,
"system_disk_category": "cloud_essd",
"system_disk_size": 40,
"system_disk_performance_level": "PL0",
"system_disk_encrypted": false,
"multi_az_policy": "BALANCE", // マルチゾーンスケーリンググループ内の ECS インスタンスのスケーリングポリシー。
"platform": "WindowsServer2022",
"image_id": "win2022_21H2_x64_dtc_en-us_40G_container_alibase_20240220.vhd",
"image_type": "WindowsServer2022",
"desired_size": 1
},
"kubernetes_config": { // クラスター構成。
"cms_enabled": true, // ECS ノードに CloudMonitor エージェントをインストールするかどうかを指定します。CloudMonitor エージェントをインストールすると、作成された ECS インスタンスの監視情報を CloudMonitor コンソールで表示できます。この機能を有効にすることを推奨します。
"unschedulable": false, // スケールアウトされたノードをスケジュール不可に設定するかどうかを指定します。有効な値:true および false。
"runtime": "containerd",
"runtime_version": "2.1.1" // containerd 1.6 以降のバージョンのみが Windows ノードプールをサポートします。
},
"auto_scaling": { // ノードプールの自動スケーリング機能の構成。有効な値:true (自動スケーリングを有効にする) および false (自動スケーリングを無効にする)。
"enable": false
},
"tee_config": { // 高信頼コンピューティングノードプールの構成。有効な値:true (高信頼コンピューティングを有効にする) および false (高信頼コンピューティングを無効にする)。
"tee_enable": false
},
"node_config": { // ノード構成。
"image_acceleration_config": {
"enable_image_acceleration": false
}
}
}
}Terraform
詳細については、「Terraform の概要」をご参照ください。Windows ノードプールを作成し、ノード数やノード仕様などのパラメーターを設定できます。次のコードは、パラメーターの例です。
provider "alicloud" {
region = "cn-beijing"
}
resource "alicloud_cs_kubernetes_node_pool" "pool" {
cluster_id = "c1f801474ea46417d8e83cc482******"
data_disks {
category = "cloud_essd"
encrypted = "false"
performance_level = "PL0"
size = 120
}
desired_size = 1
image_id = "win2019_1809_x64_dtc_en-us_40G_container_alibase_20240220.vhd"
image_type = "Windows"
install_cloud_monitor = true
instance_charge_type = "PostPaid" // ノードの課金方法。有効な値:PrePaid (サブスクリプション) および PostPaid (従量課金)。デフォルト値:PostPaid。
instance_types = [
"ecs.g8i.xlarge"
]
internet_max_bandwidth_out = 0 // 最大パブリックアウトバウンド帯域幅。単位:Mbit/s。有効な値:1~100。
login_as_non_root = false
multi_az_policy = "BALANCE"
node_pool_name = "nodepool-8liYZX"
password = "**********"
platform = "WindowsServer2019"
resource_group_id = "rg-acfmvnjn2*****"
runtime_name = "containerd"
runtime_version = "2.1.5" // コンテナーランタイムのバージョン。containerd 1.6 以降のバージョンのみが Windows ノードプールをサポートします。
scaling_config {
enable = false
is_bond_eip = false
}
security_hardening_os = false
soc_enabled = false // MLPS 2.0 セキュリティ強化を有効にするかどうかを指定します。有効な値:true および false。
system_disk_category = "cloud_essd"
system_disk_encrypted = false // システムディスクを暗号化するかどうかを指定します。有効な値:true および false。
system_disk_performance_level = "PL0"
system_disk_size = 40
tee_config {
tee_enable = false
}
unschedulable = false
vswitch_ids = [
"vsw-2ze9k65q3wn23wy*****",
"vsw-2zekovpspoxgn44*****",
"vsw-2ze54z91jw267e1*****"
]
}Windows ノードプールのアップグレード
ノードプールのアップグレードには、kubelet とコンテナーランタイムのアップグレードが含まれます。ノードプールをアップグレードする前に、コントロールプレーンをターゲットバージョンにアップグレードしていることを確認してください。
Kubelet のアップグレード:ノードプール内のノードの kubelet をコントロールプレーンと同じバージョンにアップグレードします。
コンテナーランタイムのアップグレード:コンテナーランタイムの新しいバージョンがリリースされたときに、ノードのコンテナーランタイムを最新バージョンにアップグレードできます。
手順と関連する注意事項の詳細については、「ノードプールのアップグレード」をご参照ください。アップグレード方法を設定する際には、ノードのシステムディスクを交換して Windows ノードプールをアップグレードするオプションを選択する必要があります。
Windows ノードプールの OS イメージのアップグレード
詳細については、「オペレーティングシステムの置換」をご参照ください。ノードプールの OS イメージを最新バージョンにアップグレードして、新機能、最適化、バグ修正の恩恵を受けることができます。
最新のイメージバージョンについては、「オペレーティングシステム」をご参照ください。
関連ドキュメント
Windows ノードへのアプリケーションのデプロイ方法の詳細については、「Windows アプリケーションの作成」をご参照ください。
ビジネスで Windows ノードが必要で、予測不可能なトラフィックの急増が発生する場合は、Windows 仮想ノードを使用し、Pod を仮想ノードにスケジュールすることを推奨します。詳細については、「(招待制プレビュー) Pod を Windows 仮想ノードにスケジュールする」をご参照ください。