Container Service for Kubernetes (ACK) クラスターでは、ノードプールを使用してグループ内のノードを管理および操作できます。 ノードプールは、ノードの更新や自動スケーリングなどの統合管理とO&Mを可能にするノードの集まりです。 複数のノードプールを作成することで、たとえば、異なるタイプのワークロードに個別のノードプールをデプロイしたり、異なる属性に基づいてノードをグループ化したりすることで、リソースを分離できます。
概要
Container Service for Kubernetes (ACK) では、ノードプールが導入され、ノード管理の効率が向上します。 ノードプールは、ACKクラスタ内のノードの集合である。 ACKクラスターごとに異なるタイプと構成のノードプールを1つ以上作成できます。 ノードプールの設定は、ノードタイプ、ゾーン、ラベル、テイントなどのノード属性で構成されます。 これらの属性は、ノードプールの作成時に設定したり、ノードプールの作成後に属性を変更したりできます。 ノードプールの作成方法の詳細については、「ノードプールの作成」をご参照ください。 ノードプールを変更する方法の詳細については、「ノードプールの変更」をご参照ください。
ノードプールを作成した後、クラスター内のさまざまなタイプのノードをデプロイおよび管理できます。
クラスター内のさまざまなOSイメージ (ContainerOS、Alibaba Cloud Linux、Windowsなど) にノードプールを作成できます。
containerd、Docker、Sandboxed-containerなど、異なるコンテナランタイムを使用するノードプールをクラスターに作成できます。
クラスターでは、従量課金、サブスクリプション、プリエンプティブルインスタンスなど、さまざまな課金方法を使用するノードプールを作成できます。
自動スケーリング機能が有効になっている複数のノードプールをクラスターに作成できます。
通常ノードプールと管理対象ノードプール
ノードプールの種類
ACKは、通常のノードプールと管理対象ノードプールを提供します。
ノードプールタイプ | 説明 |
通常ノードプール | 通常のノードプールには、クラスター内で同じ構成を持つ1つ以上のノードが含まれます。 各ノードプールはスケーリンググループに対応します。 通常のノードプールをスケーリングする場合、ACKはAuto Scalingを使用してノードを追加または削除します。 要件に基づいて、複数の通常ノードプールを作成および管理できます。 説明 一部のシステムコンポーネントは、デフォルトのノードプールにインストールされます。 システムがデフォルトノードプールを自動的にスケーリングすると、システムコンポーネントが不安定になる可能性があります。 自動スケーリング機能を使用する場合は、自動スケーリング機能が有効になっている新しいノードプールを作成することをお勧めします。 |
管理対象ノードプール | マネージドノードプールは、特定のノードのO&Mタスクを自動化できます。 たとえば、マネージドノードプールは、CVE (Common Vulnerabilities and Exposures) の脆弱性を自動的にパッチしたり、特定の問題を修正したりできます。 これにより、O&M作業が削減されます。 詳細については、「マネージドノードプールの概要」をご参照ください。 |
特徴の比較
機能 | 通常ノードプール | 管理対象ノードプール |
O&M | ユーザーによって管理されます。 | ACKによって部分的に管理される。 |
O&Mタイムウィンドウ | O&Mタイムウィンドウを設定する必要はありません。 | O&Mタイムウィンドウを設定する必要があります。 管理対象ノードプールは、指定されたO&M時間ウィンドウ中に、CVE脆弱性パッチなどのO&M操作を自動的に実行します。 |
ノードの修復 | 手動で実行。 | 自動的に実行されます。 説明 マネージドノードプールは、O&M作業の簡素化に役立ちます。 ただし、複雑なノードの異常を手動で修正する必要がある場合があります。 自動ノード修復の詳細については、「自動修復」をご参照ください。 |
CVE脆弱性パッチ適用 | ユーザーによって手動でトリガーされます。 | 自動的にトリガーされます。 説明 CVE脆弱性パッチは、セキュリティセンターが提供する高度な機能です。 CVE脆弱性パッチ機能を使用するには、Security Center Enterprise Edition以上を購入する必要があります。 ACKは追加料金を請求しません。 詳細については、「機能と特徴」をご参照ください。 |
コンポーネントの更新 | 手動で実行。 | 自動的に実行されます。 |
マイナーkubeletバージョンの更新 | 手動で実行。 | 自動的に実行されます。 |
高速ContainerOSノードのスケールアウト | サポートされていません。 | サポートされています。 ContainerOSノードは迅速にスケールアウトできます。 1,000のCentOSノードをスケールアウトすると、90% のノードの準備に330秒かかりますが、ContainerOSノードを使用する場合は53秒しかかかりません。 説明 ContainerOSは、Alibaba Cloudがコンテナ化開発のために提供するオペレーティングシステムです。 ContainerOSはKubernetesと完全に互換性があります。 詳細については、「ContainerOSの概要」をご参照ください。 |
オペレーティングシステム | ContainerOS、Alibaba Cloud Linux、Red Hat、Ubuntu、Windowsなどのオペレーティングシステムがサポートされています。 | ContainerOS、Alibaba Cloud Linux、Red Hat、Ubuntuなどのオペレーティングシステムがサポートされています。 |
ACKでサポートされているOSイメージとOSイメージの制限の詳細については、「OSイメージの概要」をご参照ください。 |
ノードプールを削除する前に、ノードプール内のすべてのノードを削除する必要があります。
ノードプールの自動スケーリング機能は、ノードプールを作成する場合にのみ有効にできます。 ノードプールで自動スケーリング機能を有効にすると、ノードプールには次の特性があります。
手動スケールアウトはサポートされていません。
従量課金インスタンスの課金方法がサポートされています。
標準CPUインスタンス、GPUアクセラレーションインスタンス、および共有GPUアクセラレーションインスタンスは、スケーリングアクティビティでサポートされています。
自動スケーリング機能を無効にして、エラスティックノードプールを通常のノードプールに変換できます。 ただし、通常のノードプールをエラスティックノードプールに変換することはできません。
詳細については、「ノードの自動スケーリングの有効化」をご参照ください。
ノードプールの特徴
次の表に、ノードプールでサポートされる機能を示します。
機能 | 説明 |
ノードプールを作成します。 ノードプールの設定を指定する必要があります。 | |
ノードプールの変更 | ノードプールの設定を変更します。 重要 ほとんどの場合、ノードプールを変更した後、変更された設定は新しく追加されたノードにのみ適用されます。 変更された設定は、既存のノードラベルとテイントを同期する場合にのみ、クラスター内の既存のノードにも適用されます。 ノードプールのアップグレード、ノードの修復、脆弱性パッチ適用、kubelet構成のカスタマイズなど、ノードプールでO&M操作を実行すると、システムはノードプール内の既存のノードの構成を変更します。 |
ノードプール内のノード数を変更します。
| |
どのクラスターにも属さない既存のノードをノードプールに追加します。 ただし、この機能には限界があります。 既存のノードの追加に関する制限の詳細については、「既存のECSインスタンスをACKクラスターに追加する」トピックの制限セクションをご参照ください。 | |
ノードプールから1つ以上の指定されたノードを削除します。 削除されたノードは、クラスターまたはノードプールに属しなくなりました。 ノードを削除する前に、ノードをドレインしてインスタンスをリリースするかどうかを指定できます。 | |
ノードプール内のすべてのノードのオペレーティングシステムイメージ、ランタイム、およびkubeletを更新します。 クラスターワークロードへの悪影響を減らすために、ノードをバッチで更新することを推奨します。 ノードプールが更新された後、ノードプールに新しく追加されたノードはすべて、更新された構成を使用します。 説明 管理対象ノードプールは、O&Mタイムウィンドウ内で自動的に更新できます。 | |
ノードプール内のノードを修復する | ノードプール内の異常なノードを修復します。 ノードは1つずつ修復されます。 説明 管理対象ノードプールは、異常なノードを自動的に修復できます。 |
ノードプールのノードのパッチ脆弱性。 クラスターワークロードへの悪影響を減らすために、ノードをバッチでパッチすることを推奨します。 説明 管理対象ノードプールは、O&Mタイムウィンドウ内で脆弱性を自動的にパッチできます。 | |
ノードプール内のノードのkubelet設定を変更します。 変更されたkubelet設定は、ノードプールに新しく追加されたノードにも適用されます。 | |
Auto Scalingは、実際の負荷とスケーリングポリシーに基づいて、通常のインスタンス、GPU高速化インスタンス、およびプリエンプティブルインスタンスをノードプールに追加できます。 複数のゾーン、インスタンスタイプ、およびスケーリングモードを指定して、さまざまなシナリオの要件を満たし、コストを削減できます。 |
ノードプールの課金
ノードプールは無料で使用できます。 ただし、ノードプールで使用されているECSインスタンスなどのクラウドリソースに対して課金されます。
ECS課金の詳細については、「ECS課金」をご参照ください。
スケーリンググループの課金の詳細については、「Auto scalingの課金」をご参照ください。
ノードプール内の既存のノードの課金方法を変更する場合は、ECSコンソールにログインします。 詳細については、「インスタンスの課金方法を従量課金からサブスクリプションに変更する」をご参照ください。
ノードプールに関連する用語
期間 | 説明 |
スケーリンググループ | ノードプールはスケーリンググループを使用してノードを管理します。 スケーリンググループは、ECSインスタンスのコレクションです。 これらのインスタンスは、自動スケーリングと管理の目的で使用される論理リソースと見なされます。 ノードプールは、スケーリンググループに基づいてノードを管理します。 ECSインスタンスとスケーリンググループを含むノードプール内のリソースは、同じAlibaba Cloudアカウントに属している必要があります。 詳細については、「概要」をご参照ください。 重要 ノードを設定および管理するには、ノードプールを使用する必要があります。 ノードの設定や管理にスケーリンググループを使用しないでください。 そうしないと、一部のノードプール機能が利用できなくなる場合があります。 |
スケーリング設定 | ノードプールは、スケーリング設定を使用してノードの設定を管理します。 自動スケーリング機能が有効になっている場合、スケーリング設定はECSインスタンスによってスケーリングテンプレートとして使用されます。 Auto Scalingがスケールアウトアクティビティをトリガーすると、Auto Scalingはスケーリング設定に基づいてECSインスタンスを作成します。 重要 一部のノードプール機能が使用できなくなった場合は、Auto Scalingコンソールを使用したり、Auto Scaling APIを呼び出してスケーリング設定を変更したりしないでください。 ノードプールを使用してノードを設定および管理することを推奨します。 |
スケーリングアクティビティ | ノードプールがスケールインまたはスケールアウトされると、スケーリングアクティビティがトリガーされます。 スケーリングアクティビティがトリガーされると、システムは自動的にスケーリング操作を完了し、レコードを生成します。 ノードプールのスケーリングアクティビティの履歴をコンソールで表示できます。 |
システムディスクの交換 | システムがノードプール関連の操作を実行すると、ノードのシステムディスクを置き換えることによってノードプール内のノードを初期化します。 たとえば、システムは、既存のノードをノードプールに自動的に追加したり、ノードによって使用されるイメージを更新したりするときに、ノードのシステムディスクを置き換えます。 ノード名、インスタンスID、IPアドレスなど、ノードのサービスとしてのインフラストラクチャ (IaaS) 属性は、ノードの初期化後も変更されません。 しかし、ノードのシステムディスク内のデータは、ノードを初期化するために削除される。 ノードにマウントされているデータディスクは影響を受けません。 重要 永続データストレージには、システムディスクの代わりにデータディスクを使用することを推奨します。 |
in-placeアップグレード | ビジネス要件に基づいて、ノード上のコンポーネントをアップグレードできます。 これは、ノードのシステムディスクを交換する代わりの方法です。 インプレースアップグレードは、システムディスクを置き換えたり、ノードを初期化したり、ノード上のデータを破壊したりしません。 |
関連ドキュメント
作成時にノードプールを設定するパラメーターの詳細については、「ノードプールの作成」をご参照ください。
ノードプールをスケールアウトして、同じ構成の1つ以上のElastic Compute Service (ECS) ノードを追加できます。 詳細については、「ノードプールのスケーリング」をご参照ください。
既存のノードをノードプールに追加できます。 詳細については、「既存のECSノードをACKクラスターに追加する」をご参照ください。
ノードプールからノードを削除する際の詳細な操作と注意事項の詳細については、「ノードの削除」をご参照ください。
ノードプールのアップグレード、自動修復、ノードプールのOS CVE脆弱性のパッチ適用など、ノードプールのO&Mタスクの詳細については、「ノードプールのO&M」をご参照ください。
ノードプールのベストプラクティス (デプロイメントセットを使用してECSインスタンスを異なる物理サーバーに分散し、高可用性とプリエンプティブルインスタンスベースのノードプールを確保するなど) の詳細については、「ノードとノードプールのベストプラクティス」をご参照ください。
Kubernetes 1.24を実行するクラスターは、組み込みコンテナランタイムとしてDockerを使用しなくなりました。 containerdに移行することを推奨します。 詳細については、「コンテナランタイムをDockerからcontainerdに移行する」をご参照ください。
ノードまたはノードプールの使用時に問題が発生した場合のトラブルシューティング方法の詳細については、「ノードおよびノードプールに関するよくある質問」をご参照ください。
特定のアプリケーションのノードプールを指定する方法の詳細については、「特定のノードプールへのアプリケーションポッドのスケジュール」をご参照ください。