ノードプールを使用すると、同じ設定 (インスタンスタイプ、オペレーティングシステム、ラベル、Taint など) を共有するノードをグループ化できるため、プール内のすべてのノードに一度に操作を適用できます。クラスターは、異なる設定を持つ複数のノードプールを持つことができ、1 つのノードプールへの変更が他のプール内のノードやアプリケーションに影響を与えることはありません。
ノードプールを作成する前に、「クラウドベースの ECS コンピューティングリソースへの接続」を読み、ノードプールの基本、ユースケース、課金について理解してください。
制限事項
ノードプールの作成後に、以下のパラメーターは変更できません。
| パラメーター | 制約 |
|---|---|
| リージョン | クラスターのリージョンに固定されます |
| VPC | クラスターの VPC (Virtual Private Cloud) に固定されます |
| セキュリティ強化 | クラスター作成後は変更できません |
| 課金方法 | スポットインスタンスと従量課金またはサブスクリプションの間で切り替えることはできません |
| カスタムセキュリティグループ | タイプ (基本または高度) は作成後に変更できません |
前提条件
開始する前に、以下を確認してください。
外部 Kubernetes クラスター (オンプレミスデータセンターにデプロイ) が接続された ACK One 登録済みクラスター
外部 Kubernetes クラスターと ACK One 登録済みクラスターの VPC 間のネットワーク接続。詳細については、「VPC 接続のシナリオベースのネットワーク」をご参照ください
プライベートネットワークモードで ACK One 登録済みクラスターにインポートされた外部 Kubernetes クラスターのプロキシ設定。詳細については、「外部 Kubernetes クラスターと ACK One 登録済みクラスターの関連付け」をご参照ください
cloud-node-controller コンポーネントがインストールされていること
kubeadm で作成された自己管理型 Kubernetes クラスターが、バージョン 1.26、1.28、1.30、1.31、またはそれ以降を実行していること
クラスターのバージョンが上記の要件を満たしていない場合は、先に進む前にノードプール用のカスタムスクリプトを作成してください。
ノードプールへの移動
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。
ノードプールの作成
[ノードプール] ページで、[ノードプールの作成] をクリックします。
[ノードプールの作成] ダイアログボックスで、以下のセクションで説明されているパラメーターを設定します。
[確認] をクリックします。
[確認] をクリックすると、ノードプールリストに新しいプールが作成中の [初期化中] ステータスで表示されます。作成が成功すると、ステータスは [アクティブ] に変わります。
確認ページで、左下隅にある [Console-to-Code] をクリックすると、ノードプールの構成に一致する Terraform または SDK サンプルコードを取得できます。
基本設定
| パラメーター | 説明 | 変更可能 |
|---|---|---|
| ノードプール名 | ノードプールの名前。 | |
| リージョン | クラスターのリージョンに基づいて事前に選択されます。変更はできません。 | |
| スケーリングモード | [手動] または [自動]。- [手動]:[ノードの期待数] で指定した正確なノード数を維持します。詳細については、「ノードプールの手動スケーリング」をご参照ください。- [自動]:Pod のスケジューリング要求がクラスターのキャパシティを超えた場合に、設定された最小および最大インスタンス数に基づいてスケールアウトします。Kubernetes 1.24 以降を実行しているクラスターは、デフォルトでノードの即時スケーリングを使用します。それ以前のバージョンでは、ノードの auto scaling を使用します。詳細については、「ノードのスケーリング」をご参照ください。 |
ネットワーク設定
| パラメーター | 説明 | 変更可能 |
|---|---|---|
| VPC | クラスターの VPC として事前に選択されます。変更はできません。 | |
| vSwitch | 選択した [スケーリングポリシー] に基づいて、スケールアウト中に新しいノードが作成されるゾーンを決定します。対象のゾーンで vSwitch を選択します。利用可能な vSwitch がない場合は、[vSwitch の作成] をクリックします。詳細については、「vSwitch の作成と管理」をご参照ください。 |
インスタンスとイメージの設定
| パラメーター | 説明 | 変更可能 |
|---|---|---|
| 課金方法 | ノードプールに追加される Elastic Compute Service (ECS) インスタンスの課金方法:[従量課金]、[サブスクリプション]、または [スポットインスタンス]。- [サブスクリプション]:[期間] を設定し、任意で [自動更新] を有効にします。- [スポットインスタンス]:ACK は、1 時間の保護期間を持つスポットインスタンスのみをサポートします。保護期間後、システムは 5 分ごとにスポット価格とリソースの可用性を確認します。リアルタイム価格が入札額を超えるか、在庫が不十分な場合、インスタンスはリリースされます。詳細については、「スポットインスタンスベースのノードプールのベストプラクティス」をご参照ください。 重要 課金方法の変更は、新しく追加されたノードにのみ適用されます。既存のノードは元の課金方法を保持します。既存のノードの課金方法を変更するには、「課金方法を従量課金からサブスクリプションに変更する」をご参照ください。スポットインスタンスと従量課金またはサブスクリプションの課金方法を切り替えることはできません。 Trusted Execution Environment (TEE) 対応のコンテナイメージノードプール (ecs.g7t シリーズインスタンスを使用) は、課金方法の変更をサポートしていません。このような変更は | |
| インスタンスタイプ | ワーカーノード用の ECS インスタンスタイプを 1 つ以上選択します。vCPU、メモリ、インスタンスファミリー、アーキテクチャでフィルタリングします。複数のインスタンスタイプを選択すると、スケールアウトの成功率が向上します。利用できないインスタンスタイプが原因でスケールアウトが失敗した場合は、プールにさらにタイプを追加します。詳細については、「ACK クラスターの ECS 仕様の推奨事項」および「ノードプールのスケーラビリティの確認」をご参照ください。 | |
| オペレーティングシステム | [パブリックイメージ] または [カスタムイメージ]。- [パブリックイメージ]:Alibaba Cloud Linux 3 コンテナ最適化イメージ、ContainerOS、Alibaba Cloud Linux 3、または Ubuntu。詳細については、「オペレーティングシステム」をご参照ください。- [カスタムイメージ]:カスタム OS イメージを使用します。詳細については、「既存の ECS インスタンスに基づいてカスタムイメージを作成し、それを使用してノードを作成する方法」をご参照ください。 説明 Alibaba Cloud Marketplace イメージは段階的リリース中です。OS をアップグレードまたは変更するには、「OS の変更」をご参照ください。 | |
| セキュリティ強化 | 次のいずれかのオプションを選択します。クラスター作成後は変更できません。- [無効]:セキュリティ強化は適用されません。- [MLPS セキュリティ強化]:Alibaba Cloud Linux 2 および Alibaba Cloud Linux 3 イメージに Multi-Level Protection Scheme (MLPS) 2.0 レベル 3 のベースラインを適用します。 重要 MLPS セキュリティ強化が有効な場合、SSH root ログインは禁止されます。ECS コンソールから VNC を使用してログインし、SSH アクセス用の一般ユーザーを作成してください。詳細については、「VNC を使用したインスタンスへの接続」をご参照ください。- [OS セキュリティ強化]:Alibaba Cloud Linux 2 または Alibaba Cloud Linux 3 イメージでのみ利用可能です。 | |
| ログイン方法 | [キーペアの設定] または [パスワードの設定]。- [キーペアの設定]:SSH キーペア認証。Linux インスタンスでのみサポートされます。[ログイン名] (root または ecs-user) とキーペアを指定します。- [パスワードの設定]:パスワードは 8~30 文字で、大文字、小文字、数字、特殊文字を含める必要があります。[ログイン名] (root または ecs-user) とパスワードを指定します。 説明 MLPS セキュリティ強化が選択されている場合、[パスワードの設定] のみがサポートされます。 |
ストレージ設定
| パラメーター | 説明 | 変更可能 |
|---|---|---|
| システムディスク | サポートされるタイプ:ESSD AutoPL、ESSD (エンタープライズ SSD)、ESSD Entry、標準 SSD、Ultra Disk。利用可能なタイプは、選択したインスタンスファミリーによって異なります。ESSD (エンタープライズ SSD) の場合、パフォーマンスレベル (PL) を設定します。より高い PL にはより大きな容量が必要です:PL2 は 460 GiB 以上、PL3 は 1,260 GiB 以上が必要です。詳細については、「容量と PL」をご参照ください。暗号化は ESSD (エンタープライズ SSD) でのみ利用可能です。デフォルトでは、デフォルトのサービス CMK が使用されます。KMS から既存の BYOK CMK を使用することもできます。[その他のシステムディスクタイプ] を選択して、フォールバックディスクタイプを指定し、作成の成功率を向上させます。 | |
| データディスク | サポートされるタイプ:ESSD AutoPL、ESSD (エンタープライズ SSD)、ESSD Entry、SSD、Ultra Disk。ESSD AutoPL は、パフォーマンスプロビジョニング (ベースラインを超える持続的なパフォーマンスのため) とバースト機能 (読み書きの急増に対応するため) をサポートします。ESSD (エンタープライズ SSD):カスタム PL を設定します。PL2 は 460 GiB 以上、PL3 は 1,260 GiB 以上が必要です。暗号化はすべてのデータディスクタイプで利用可能です。また、スナップショットからデータディスクを作成して、コンテナイメージのロードと大規模言語モデル (LLM) の初期化を高速化することもできます。ノード作成中、最後のデータディスクは自動的にフォーマットされます。システムは /var/lib/container をこのディスクにマウントし、/var/lib/kubelet と /var/lib/containerd を /var/lib/container にマウントします。マウントポイントをカスタマイズするには、ディスクの初期化設定を変更します。詳細については、「ACK ノードプールでデータディスクをカスタムディレクトリにマウントできますか?」をご参照ください。説明 ECS インスタンスには、インスタンスタイプに応じて最大 64 個のデータディスクをアタッチできます。特定のタイプの制限を確認するには、DescribeInstanceTypes 操作を呼び出し、 |
インスタンス数
| パラメーター | 説明 | 変更可能 |
|---|---|---|
| ノードの期待数 | ノードプールが維持するノードの総数。クラスターコンポーネントが正しく実行されるように、少なくとも 2 に設定します。作成時にノードが不要な場合は 0 に設定します。詳細については、「ノードプールの手動スケーリング」をご参照ください。 |
詳細設定
[詳細オプション (任意)] を展開して、以下のパラメーターを設定します。
| パラメーター | 説明 | 変更可能 |
|---|---|---|
| リソースグループ | ノードプールが属するリソースグループ。各リソースは 1 つのリソースグループにのみ属することができます。 | |
| スケーリングモード | ノードプールが [自動] スケーリングモードを使用する場合にのみ適用されます。- [標準モード]:ECS インスタンスの作成とリリースによってスケーリングします。- [エコノミーモード]:ECS インスタンスの作成、停止、再起動によってスケーリングします。停止したインスタンスは、コンピューティングコストではなく、ストレージコストのみが発生します。ローカルストレージを持つインスタンスファミリー (ビッグデータやローカル SSD ファミリーなど) には適用されません。詳細については、「エコノミーモード」をご参照ください。 | |
| スケーリングポリシー | スケールアウト中に新しいノードがゾーン間でどのように分散されるかを決定します。- [優先度]:選択された vSwitch の優先順位でスケーリングします。ゾーンが利用できない場合、次のゾーンが試されます。- [コスト最適化]:vCPU 単位価格の昇順でインスタンスを作成します。課金方法がスポットインスタンスの場合、スポットインスタンスが優先されます。スポットインスタンスが利用できない場合、従量課金インスタンスが補完します。- [分散バランシング]:選択されたゾーン (vSwitch) 間でインスタンスを均等に分散します。複数の vSwitch が必要です。 | |
| オンデマンドインスタンスでスポットキャパシティを補完 | [スポットインスタンス] 課金が必要です。有効にすると、価格や在庫の制約によりスポットインスタンスをプロビジョニングできない場合、ACK は自動的に従量課金インスタンスを作成します。 | |
| 補足的なスポットインスタンスを有効化 | [スポットインスタンス] 課金が必要です。回収通知 (回収の 5 分前) を受信すると、ACK は代替として新しいスポットインスタンスのプロビジョニングを試みます。補償が成功した場合、ACK は古いノードをドレインして削除します。失敗した場合、ACK は古いノードをドレインせず、在庫と価格の条件が満たされたときに再試行します。このオプションと共に [オンデマンドインスタンスでスポットキャパシティを補完] を有効にすると、補償の成功率が向上します。詳細については、「スポットインスタンスベースのノードプールのベストプラクティス」をご参照ください。 | |
| ECS タグ | auto scaling 中に ECS インスタンスに追加されるタグ。ACK と Auto Scaling は 3 つのタグ (ack.aliyun.com:<Cluster ID>、ack.alibabacloud.com/nodepool-id:<Node pool ID>、acs:autoscaling:scalingGroupId:<Scaling group ID>) を予約しており、ノードごとに最大 17 個のユーザー定義タグが残ります (ECS の合計制限は 20)。説明 auto scaling が有効な場合、タグ | |
| テイント | Taint はキー、値、効果で構成されます。制約:- キー:1~63 文字。文字、数字、ハイフン (-)、アンダースコア (_)、ピリオド (.)。文字または数字で開始および終了する必要があります。プレフィックス付きのキーの場合、プレフィックスはサブドメイン名 (253 文字以下、/ で終わる) である必要があります。- 値:最大 63 文字。キーと同じ文字ルール。空白も可。- 効果:NoSchedule、NoExecute、または PreferNoSchedule。 - NoSchedule:Pod はノードにスケジュールされません。 - NoExecute:Taint が追加されると、Toleration のない Pod は退去させられます。 - PreferNoSchedule:スケジューラは、Toleration のない Pod をノードに配置することを避けます。詳細については、「Taint と Toleration」をご参照ください。 | |
| ノードラベル | ラベルはキーと値のペアです。キーの制約:- 1~63 文字。文字、数字、ハイフン (-)、アンダースコア (_)、ピリオド (.)。文字または数字で開始および終了する必要があります。- プレフィックス付きのキーの場合、プレフィックスは サブドメイン名 (253 文字以下、/ で終わる) である必要があります。- 予約済みプレフィックス (使用不可):kubernetes.io/、k8s.io/、およびこれらで終わるプレフィックス。例外:kubelet.kubernetes.io/、node.kubernetes.io、およびそれらで終わるプレフィックス。値:最大 63 文字。キーと同じ文字ルール。空白も可。 | |
| カスタムノード名 | 有効にすると、ノード名、ECS インスタンス名、ECS ホスト名がすべてカスタム値に設定されます。フォーマット:<prefix><IP substring><suffix>。- 全長:2~64 文字。小文字または数字で開始および終了する必要があります。- プレフィックス (必須):文字、数字、ハイフン (-)、ピリオド (.)。文字で始まる必要があります。ハイフンやピリオドで終わることはできません。連続するハイフンやピリオドは使用できません。- サフィックス (任意):プレフィックスと同じルール。例:IP 192.XX.YY.55、プレフィックス aliyun.com、サフィックス test → Linux ノード名:aliyun.com192.XX.YY.55test。Windows ノードはホスト名でピリオドの代わりにハイフンを使用します (例:192-XX-YY-55)。 | |
| インスタンスの事前カスタムデータ | ノードがクラスターに参加する前に実行されるスクリプト。クォータセンターコンソールでのクォータ申請が必要です。詳細については、「ユーザーデータスクリプト」をご参照ください。 | |
| インスタンスのユーザーデータ | ノードがクラスターに参加した後に実行されるスクリプト。詳細については、「ユーザーデータスクリプト」をご参照ください。クラスターを作成したりノードを追加したりした後、ノードにログインして grep cloud-init /var/log/messages を実行して実行結果を確認します。 | |
| Cloud Monitor エージェント | 新しいノードに Cloud Monitor エージェントをインストールし、Cloud Monitor コンソールでノードのメトリックを表示できるようにします。新しく追加されたノードにのみ適用されます。既存のノードにエージェントをインストールするには、直接 Cloud Monitor コンソールに移動してください。 | |
| パブリック IP アドレス | 新規の各ノードにパブリック IPv4 アドレスを割り当てます。有効にした場合、[帯域幅の課金方法] と [ピーク帯域幅] を設定します。新しく追加されたノードにのみ適用されます。既存のノードでインターネットアクセスを有効にするには、EIP を作成してノードに関連付けます。詳細については、「EIP を ECS インスタンスに関連付ける」をご参照ください。 | |
| カスタムセキュリティグループ | [基本セキュリティグループ] または [高度なセキュリティグループ] を選択します。1 つのタイプしか選択できず、作成後にタイプを変更することはできません。各 ECS インスタンスは最大 5 つのセキュリティグループをサポートします。クォータが十分であることを確認してください。既存のセキュリティグループを選択した場合、セキュリティグループルールは自動的に設定されません。手動で設定してください。詳細については、「ACK クラスターのアクセス制御を強制するためのセキュリティグループルールの設定」および「セキュリティグループ」をご参照ください。 | |
| RDS ホワイトリスト | ApsaraDB RDS インスタンスのホワイトリストにノードの IP アドレスを追加します。 | |
| デプロイメントセット | 高可用性のために、ECS インスタンスを物理サーバー間に分散させます。まず ECS コンソールでデプロイメントセットを作成し、ここで指定します。 重要 デプロイメントセットを選択した後、プール内のノードの最大数は | |
| プライベートプールのタイプ | インスタンス作成時に容量予約プライベートプールを使用するかどうかを制御します。- [オープン]:オープンなプライベートプールを自動的に照合します。見つからない場合はパブリックプールにフォールバックします。- [使用しない]:パブリックプールのみを使用します。- [指定]:ID で指定されたプライベートプールを使用します。プールが利用できない場合、インスタンスの作成は失敗します。詳細については、「プライベートプール」をご参照ください。 |
ノードプールの編集
vSwitch、課金方法、インスタンスタイプ、システムディスク、auto scaling 設定など、ほとんどのノードプールパラメーターは作成後に更新できます。編集可能なパラメーターの完全なリストについては、上記のパラメーター表の [変更可能] 列をご参照ください。
ノードプールを変更しても、クラスター内の他のノードプールのノードやアプリケーションには影響しません。
ほとんどの場合、更新された設定は新しく追加されたノードにのみ適用されます。例外:[ECS タグ]、[ノードラベル]、[Taint] — これらの変更は既存のノードにも適用されます。
ノードプールの設定外でノードを変更した場合 (たとえば、ECS インスタンスで直接)、それらの変更はノードプールを更新すると上書きされます。
[スケーリングモード] を切り替える場合:
[手動] から [自動] へ:auto scaling を有効にし、最小および最大インスタンス数の設定が必要です。
[自動] から [手動] へ:auto scaling を無効にし、最小インスタンスを 0、最大を 2,000 に設定し、[ノードの期待数] を現在のノード数に設定します。
手順:
[ノードプール] ページで、ノードプールを見つけ、[操作] 列の [編集] をクリックします。
ダイアログボックスで、パラメーターを変更し、画面の指示に従います。
ノードプールのステータスは、更新中は [更新中] と表示され、完了すると [アクティブ化済み] に戻ります。
ノードプールの表示
ノードプール名をクリックすると、4 つのタブでその詳細を表示できます。
[基本情報]:クラスター、ノードプール、ノード設定の詳細。auto scaling が有効な場合、弾力的スケーリング設定もここに表示されます。
[モニタリング]:Alibaba Cloud Prometheus による CPU 使用量、メモリ使用量、ディスク使用率、ノードごとの平均 CPU/メモリ。
[ノード管理]:プール内のすべてのノードを一覧表示します。個々のノードの削除、ドレイン、スケジュール、または運用保守 (O&M) を実行します。[エクスポート] をクリックして、ノードリストを CSV ファイルとしてダウンロードします。
[スケーリングアクティビティ]:最近のスケーリングイベントのレコード。各アクティビティ後のインスタンス数や失敗の説明などが含まれます。一般的なエラーコードについては、「スケーリング失敗のエラーコードと解決策」をご参照ください。
ノードプールの削除
プール内のすべてのノードは、クラスターの API サーバーから削除されます。続行する前に、以下のリリースルールを確認してください。
ノードのリリースの動作は、プールに [ノードの期待数] が設定されているかどうか、および各ノードの課金方法によって異なります。
[ノードの期待数] が設定されているノードプール:
| 課金方法 | ノードへの影響 |
|---|---|
| 従量課金 | ノードプール削除後にリリースされます |
| サブスクリプション | ノードプール削除後も保持されます |
[ノードの期待数] が設定されていないノードプール:
| ノードソース | ノードの挙動 |
|---|---|
| 手動または自動で追加されたノード | 保持されます (リリースされません) |
| サブスクリプションノード | 保持されます (リリースされません) |
| その他のノード | ノードプール削除時にリリースされます |
リリースされたすべてのノードは、クラスターの API サーバーから削除されます。保持されたノードは、API サーバーに登録されたままです。
保持されたサブスクリプションノードをリリースするには、まず課金方法を従量課金に変更し、次に ECS コンソールから ECS インスタンスをリリースします。
手順:
(任意) ノードプール名をクリックします。[概要] タブで、[ノードの期待数] が設定されているかどうかを確認します。ハイフン (–) は設定されていないことを意味します。
[ノードプール] ページで、ノードプールを見つけ、[アクション] 列で
> [削除] の順にクリックし、ダイアログボックスで確認します。