既存のElastic Compute Service (ECS) インスタンスをContainer Service for Kubernetes (ACK) クラスターに追加したり、既存のノードをノードプールに再追加したりできます。 これを行うには、ACKコンソールにログインして手動でノードを追加するか、ノードを自動的に追加するようにACKを設定します。 始める前に、制限と注意事項を読んでいることを確認してください。
前提条件
ACKクラスターが作成されます。 詳細については、「ACK管理クラスターの作成」をご参照ください。
ノードプールがACKクラスターに作成されます。 詳細については、「手順」をご参照ください。
制限事項
インスタンスタイプの制限
制限事項 | 説明 | 推奨ソリューション |
GPU高速化されたECSベアメタルインスタンス | GPU高速化されたECS Bare Metalインスタンスファミリーebmgn7およびebmgn7eに属するインスタンスは、マルチインスタンスGPU (MIG) 設定を自動的に削除することはできません。 ACKは、上記のインスタンスファミリーのインスタンスに保持されているMIG設定を自動的にリセットします。 リセットには時間がかかることがある。 この期間中に、インスタンスをクラスターに追加できない場合があります。 | 問題のトラブルシューティング方法の詳細については、NVIDIA A100 GPU (ECS. ebmgn7) を搭載したecsベアメタルインスタンスの追加に失敗した場合はどうすればよいですか? |
Quotas
クォータ | 説明 | 推奨ソリューション |
ノードクォータ | クラスターに十分なノードクォータがあることを確認してください。 ACKクラスターに関連するクォータの詳細については、「制限」をご参照ください。 | ノードクォータを増やすには、クォータセンターコンソールでクォータの増加を申請します。 |
ECSインスタンスの制限
制限事項 | 説明 | 推奨ソリューション |
アカウント、リージョン、VPC | 追加するECSインスタンスは、クラスターと同じAlibaba Cloudアカウントに属している必要があります。 さらに、追加するECSインスタンスは、お使いのクラスターと同じリージョンおよび仮想プライベートクラウド (VPC) にデプロイする必要があります。 | 要件を満たすためにECSインスタンスを再作成するか、クラスターを再作成します。 |
クラスター | すでに他のクラスターに属しているECSインスタンスを追加することはできません。 | すでに他のクラスターに属しているECSインスタンスを追加する場合は、クラスターからECSインスタンスを削除してから、目的のクラスターに追加します。 詳細については、「ノードの削除」をご参照ください。 |
ネットワークの制限
制限事項 | 説明 | 推奨ソリューション |
Terway | Terwayには、追加するECSインスタンスのタイプでサポートされるポッドの最大数に次の制限があります。
各ENIモードでサポートされるポッドの最大数は、インスタンスタイプでサポートされるENIの最大数によって異なります。 各ENIモードでサポートされるポッドの最大数を計算する方法の詳細については、「Terwayモードの比較」をご参照ください。 インスタンスタイプでサポートされているポッドの最大数を照会する方法の詳細については、「ノードネットワークでサポートされているポッドの最大数の表示」をご参照ください。 |
|
Terwayには、ENIに次の制限があります。 | ||
新しいゾーンのノードをクラスターに追加するときは、TerwayのvSwitch設定を更新する必要があります。 それ以外の場合、ノードのプライマリENIのvSwitchからノードのポッドにIPアドレスが割り当てられます。 | ||
既存のノードをノードプールに追加すると、そのノードにバインドされているENIが保持されます。 ENIが属するvSwitchは、ノード上のポッドにIPアドレスを割り当てるために使用されます。 追加するノードにプライマリENIが1つだけあることを確認します。 | ノード上のポッドがノードのvSwitchに属さないIPアドレスを使用している場合は、クラスターからノードを削除し、すべてのセカンダリENIを削除してから、ノードをクラスターに再追加します。 | |
既存のノードをノードプールに追加するときは、クラスターRAMロールが対応するECSインスタンスに割り当てられていることを確認してください。 そうしないと、アクセス許可の問題により、システムはノードでサポートされているポッドの最大数 (MaxPod) を正しく計算できません。 その結果、システムによって計算されたENIの最大数は正しくありません。 | ||
Flannel | クラスターが存在するVPCのシステムルートテーブル内のカスタムルートエントリの数は、ルートテーブルのクォータ制限を超えることはできません。 カスタムルートエントリの詳細については、「ルートテーブルの概要」をご参照ください。 | quota Centerコンソールでクォータの増加を申請します。 |
IPv4/IPv6デュアルスタック | 追加するECSインスタンスのプライマリENIにIPv6アドレスを割り当てる必要があります。 | 詳細については、「ECSインスタンスのIPv6アドレスの設定」をご参照ください。 |
セキュリティグループの制限
制限事項 | 説明 | 推奨ソリューション |
セキュリティグループの種類 | 既存のECSインスタンスをノードプールに追加すると、インスタンスもノードプールのセキュリティグループに追加されます。 ECSの制限により、ECSインスタンスは基本セキュリティグループと高度セキュリティグループに同時に属することはできません。 したがって、ECSインスタンスが属するセキュリティグループのタイプは、ECSインスタンスが追加されるノードプールのタイプと同じである必要があります。 ACKコンソールのノードプールの詳細ページの [概要] タブで、ノードプールのセキュリティグループを表示できます。 ECSコンソールに移動して、ECSインスタンスが属するセキュリティグループを表示することもできます。 セキュリティグループの詳細については、「概要」をご参照ください。 | ノードプールのセキュリティグループを変更したり、セキュリティグループのタイプを変更したりすることはできません。 セキュリティグループの競合が発生した場合は、次のソリューションを使用します。
|
セキュリティグループルール | ECSインスタンスのセキュリティグループルールは、ノードプールおよびECSインスタンスが追加されたクラスターのセキュリティグループルールと競合してはなりません。 | 最初に、既存のノードを目的のノードプールのセキュリティグループに追加します。 ノードプールの各セキュリティグループルールをチェックするには、セキュリティグループルールチェック機能を使用します。 |
セキュリィグループ数 | 既存のECSインスタンスをノードプールに追加すると、インスタンスもノードプールのセキュリティグループに追加されます。 インスタンスが属するセキュリティグループの数が上限を超えないようにしてください。 デフォルトの上限は5です。 | セキュリティグループの制限およびECSインスタンスのセキュリティグループのクォータ制限を増やす方法の詳細については、「セキュリティグループの制限」をご参照ください。 |
オペレーティングシステムの制限
Alibaba Cloud Linux、Red Hat、Ubuntu、およびCentOSを実行するECSインスタンスのみがサポートされています。 Alibaba Cloud Linux 3を選択することを推奨します。 ACKクラスターでサポートされているオペレーティングシステムの詳細については、「OSイメージの概要」をご参照ください。
注意事項
インスタンスリリース
クラスターまたはノードプールを削除しても、クラスターまたはノードプールに追加されたECSインスタンスは自動的にリリースされません。 ECSインスタンスを手動でリリースする必要があります。 詳細については、「ノードの削除」をご参照ください。
課金
クラスターに追加したECSインスタンスは、クラスターまたはクラスター内のノードプールを削除してもリリースされません。 不要なコストを回避するために、ECSインスタンスの課金をタイムリーに確認することを推奨します。 詳細については、「課金の概要」をご参照ください。
インスタンス設定
既存のECSインスタンスをノードプールに追加する場合、ECSインスタンスの課金方法とインスタンスタイプは変更されません。
オペレーティングシステムとディスク
データが失われたり破損したりした場合に備えて、ECSインスタンスを追加する前にデータをバックアップすることを推奨します。 詳細については、「ディスクのスナップショットの作成」をご参照ください。
ノードを自動的に追加するようにACKを設定すると、ACKはノードのオペレーティングシステムをノードプールのオペレーティングシステムに置き換えます。 ノードを手動で追加した場合、ノードのオペレーティングシステムは保持されます。 追加するノードのオペレーティングシステムを保持するには、手動でノードを追加します。
ノードを自動的に追加するようにACKを設定すると、ノードのシステムディスクは解放されますが、データディスクは保持されます。 ただし、データディスクのIDは変更されます。 データディスク内のデータは影響を受けません。
ノードを自動的に追加するようにACKを設定すると、ノードのシステムディスクのユーザースナップショットが保持されます。 自動スナップショットは、システムディスクの [ディスクのリリース中に自動スナップショットを削除] 属性の設定に基づいて、システムディスクとともに保持または削除されます。 ECSコンソールのディスク詳細ページに移動し、[属性の変更] をクリックして設定を表示または変更できます。
自動スナップショットポリシーを定期的に実行するのに十分なスナップショットクォータを確保するために、不要になったユーザースナップショットと自動スナップショットを削除することを推奨します。
自動または手動でノードを追加
ノードを自動的または手動で追加しても、クラスター内の既存のノードまたはアプリケーションには影響しません。 ノードを自動的に追加するようにACKを設定すると、ACKはノードのオペレーティングシステムをノードプールのオペレーティングシステムに置き換えます。 ノードを手動で追加した場合、ノードのオペレーティングシステムは保持されます。 ECSインスタンスのオペレーティングシステムを保持するには、ECSインスタンスを手動で追加します。
互換性の問題を回避するため、ECSインスタンスにサービスが既にデプロイされている場合は、ECSインスタンスをワーカーノードとして初期化しないことを推奨します。
ノードの自動追加
ノードを自動的に追加するようにACKを設定すると、現在のアカウント内で使用可能なすべてのECSインスタンスがACKコンソールに表示されます。 パラメーターを設定すると、ECSインスタンスが自動的にクラスターに追加されます。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[ノードプール] ページで、管理するノードプールを見つけ、[操作] 列の [詳細] をクリックし、[既存のノードの追加] をクリックします。
[既存のECSインスタンスの選択] ウィザードページで、[モード] を [自動] に設定し、リストから既存のECSインスタンスを選択し、[次のステップ] をクリックします。
[インスタンス情報の指定] ウィザードページで、パラメーターを設定し、[次のステップ] をクリックします。
パラメーター
説明
クラスターID /名前
ECSインスタンスを追加するクラスターに関する情報。 このパラメーターは自動的に設定されます。
データディスク
コンテナとイメージデータをデータディスクに格納するかどうかを指定します。
ECSインスタンスにデータディスクがマウントされていて、最後のデータディスクのファイルシステムが初期化されていない場合、システムは自動的にデータディスクをext4にフォーマットします。 次に、ディスクを使用してデータを /var/lib/docker (Dockerのデフォルトデータディレクトリ) および /var/lib/kubelet (kubeletのデフォルトデータディレクトリ) に格納します。
重要ディスクをフォーマットすると、ディスク上のデータが失われます。 システムがデータディスクをフォーマットする前に、データディスク上のデータをバックアップすることを推奨します。
ECSインスタンスにデータディスクがアタッチされていない場合、システムはデータディスクを購入しません。
インスタンス名の保持
デフォルトでは、インスタンス名の保持がオンになっています。 インスタンス名を保持しない場合は、[インスタンス名の保持] をオフにできます。 この機能を無効にすると、ノードの命名規則に基づいてノードの名前が変更されます。
インスタンス情報
追加するECSインスタンスのIDと名前。
[確認] メッセージで、注意事項を読み、[確認] をクリックします。
ECSインスタンスを追加した後、[ノードプール] ページのノードプールの [操作] 列の [詳細] をクリックすると、[ノード] タブで新しく追加されたノードに関する情報が表示されます。
手動でノードを追加
ノードを手動で追加しても、ノードのオペレーティングシステムは変更されません。 制限に加えて、ノードを手動で追加する前に、次の制限にも注意する必要があります。
追加するECSインスタンスのオペレーティングシステムのスワップが無効になっていることを確認します。
コンテナデータとイメージをデータディスクに格納する場合は、データディスクがextまたはXFSファイルシステムを使用していることを確認してください。
手動モードでは、インストールコマンドを取得し、ECSインスタンスにログインしてから、コマンドを実行してECSインスタンスをACKクラスターに追加する必要があります。 1 度に追加できる ECS インスタンスは 1 つのみです。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[ノードプール] ページで、管理するノードプールを見つけ、[操作] 列の [詳細] をクリックし、[既存のノードの追加] をクリックします。
[既存のECSインスタンスの選択] ウィザードページで、[モード] を [手動] に設定し、リストから既存のECSインスタンスを選択し、[次のステップ] をクリックします。
[インスタンス情報の指定] ウィザードページで、パラメーターを設定し、[次のステップ] をクリックします。
パラメーター
説明
クラスターID /名前
ECSインスタンスを追加するクラスターに関する情報。 このパラメーターは自動的に設定されます。
データディスク
コンテナとイメージデータをデータディスクに格納するかどうかを指定します。
ECSインスタンスにデータディスクがマウントされていて、最後のデータディスクのファイルシステムが初期化されていない場合、システムは自動的にデータディスクをext4にフォーマットします。 次に、ディスクを使用してデータを /var/lib/docker (Dockerのデフォルトデータディレクトリ) および /var/lib/kubelet (kubeletのデフォルトデータディレクトリ) に格納します。
重要ディスクをフォーマットすると、ディスク上のデータが失われます。 システムがデータディスクをフォーマットする前に、データディスク上のデータをバックアップすることを推奨します。
ECSインスタンスにデータディスクがアタッチされていない場合、システムはデータディスクを購入しません。
インスタンス名の保持
デフォルトでは、インスタンス名の保持がオンになっています。 インスタンス名を保持しない場合は、[インスタンス名の保持] をオフにできます。 この機能を無効にすると、ノードの命名規則に基づいてノードの名前が変更されます。
インスタンス情報
追加するECSインスタンスのIDと名前。
[完了] ウィザードページで、ECSインスタンスへのリモートログインに使用するコマンドをコピーし、[完了] をクリックします。
ECSコンソールにログインします。 左側のナビゲーションウィンドウで、[インスタンスとイメージ] > [インスタンス] を選択します。 次に、クラスターがデプロイされているリージョンを選択し、追加するECSインスタンスを選択します。
[操作] 列の [接続] をクリックします。 [接続とコマンド] ダイアログボックスで接続方法を選択し、接続ページに移動します。
接続方法を次の表に示します。
接続方法
説明
VNC接続
VNCを使用してECSインスタンスにリモート接続する方法の詳細については、「VNCを使用したインスタンスへの接続」をご参照ください。
リモートコマンドの送信 (Cloud Assistant)
これは推奨される方法です。 この方法では、インスタンスでリモートコマンドを実行できます。 インスタンスにログオンせずに、ディスク容量の表示、ソフトウェアのインストール、サービスの起動または停止などの操作を実行できます。 この機能は、Cloud Assistantを使用して実装されます。 Cloud Assistantをインストールまたは有効化する方法の詳細については、「Cloud Assistant Agentのインストール」をご参照ください。
接続ページで、指示に従って、ステップ6でコピーしたコマンドを貼り付けます。 次に、[実行] をクリックしてスクリプトを実行します。
スクリプトが実行されると、ECSインスタンスがクラスターに追加されます。
ECSインスタンスを追加した後、[ノードプール] ページのノードプールの [操作] 列の [詳細] をクリックすると、[ノード] タブで新しく追加されたノードに関する情報が表示されます。
よくある質問
クラスターに追加するECSインスタンスをアップグレードまたはダウングレードした場合、クラスター内のビジネスは影響を受けますか。
ECSインスタンスのアップグレードまたはダウングレードには、通常、ECSインスタンスタイプ、インターネット帯域幅、インターネット帯域幅の課金方法、およびデータディスクの課金方法の変更が含まれます。 詳細については、「インスタンス設定の変更の概要」をご参照ください。 アップグレードまたはダウングレードの方法によって、ECSインスタンスに与える影響は異なります。
再起動を必要としないアップグレードまたはダウングレードの場合、実際のビジネスシナリオに基づいて影響を評価する必要があります。
インスタンスタイプの変更など、再起動が必要なアップグレードまたはダウングレードは、ビジネスに悪影響を及ぼします。 操作 (ワーカーノードリソースのアップグレード) を実行する前に、追い出されたアプリケーションポッドをホストするためにノードを追加する必要があるかどうかを確認する必要があります。 次に、アップグレードまたはダウングレードするノードをドレインし、スケーリンググループとACKクラスターから削除します。 詳細については、「ノードの削除」をご参照ください。
アップグレードまたはダウングレードが完了したら、このトピックの手順を実行して、ノードをクラスターに再追加します。
既存のノードを追加した後にタイムアウトエラーが発生した場合はどうすればよいですか?
ノードのネットワークとAPIサーバのClassic Load Balancer (CLB) インスタンスのネットワークが接続されているかどうかを確認します。 セキュリティグループが要件を満たしているかどうかを確認します。 セキュリティグループの制限の詳細については、「セキュリティグループの制限」をご参照ください。 その他のネットワーク接続の問題の詳細については、「ネットワーク管理に関するFAQ」をご参照ください。
異なるインスタンスタイプの既存のノードを同じACKクラスターに追加できますか?
はい。異なるインスタンスタイプのノードをノードプールに追加できます。 これにより、指定されたインスタンスタイプが利用できない場合、または指定されたタイプのECSインスタンスが在庫切れの場合にノードのスケールアウトに失敗するのを防ぎます。 これを行うには、次の手順を実行します。
ノードプールを作成または変更し、目的のインスタンスタイプを選択します。 詳細については、「ノードプールの作成」および「ノードプールの変更」をご参照ください。
ノードの削除とドレインについては、「ノードの削除」をご参照ください。 対応するECSインスタンスをリリースしないでください。
[制限] および [自動または手動でノードを追加] を参照し、異なるインスタンスタイプのECSインスタンスをノードプールに追加します。
ACKクラスター間でノードを移動するにはどうすればよいですか。
ACKクラスター間でノードを直接移動することはできません。 既存のノードを追加する方法を使用する必要があります。 これを行うには、次の手順を実行します。
ノードの削除とドレインについては、「ノードの削除」をご参照ください。 対応するECSインスタンスをリリースしないでください。
[制限] および [自動または手動でノードを追加] を参照し、異なるインスタンスタイプのECSインスタンスをノードプールに追加します。
関連ドキュメント
コンソールに加えて、APIまたはCLIを使用して、ECSインスタンスをACKクラスターに追加することもできます。
フリーノードは、ノードプール機能がリリースされる前に作成されたACKクラスターに存在する場合があります。 フリーノードとは、どのノードプールにも属さないクラスターノードを指します。 これらのノードを管理するACKを設定するには、[ノードプールに空きノードを追加] を参照してください。
マネージドノードプールのパラメーターの詳細については、「マネージドノードプールの概要」および「ノードプールの作成」をご参照ください。
ノードまたはポッドの例外をトラブルシューティングする方法の詳細については、「ノードのトラブルシューティング」、「ポッドのトラブルシューティング」、および「ノードとノードプールに関するFAQ」をご参照ください。