既存の Elastic Compute Service (ECS) インスタンスをワーカーノードとして追加したり、削除したノードを再追加したりすることで、ワークロードを中断することなくコンピューティングリソースを再利用できます。
Container Service for Kubernetes (ACK) は、自動モードと手動モードでのノード追加をサポートしています。 インスタンスを追加した後も、課金方法とインスタンスタイプは変更されません。
|
項目 |
自動モード |
手動モード |
|
OS のリセット |
ノードプールの構成に基づいて OS をリセットし、初期化します。
|
元の OS を保持するため、柔軟性が高まります。 |
|
ユースケース |
標準化された管理のために、インスタンス構成をノードプールと一致させたい場合。 |
インスタンスの OS や特定の構成を保持する必要がある場合。 |
制限事項
ご利用の環境とインスタンスがこれらの要件を満たしていることを確認してください。
|
カテゴリ |
項目 |
説明 |
|
インスタンスとノードプール |
クラスターノードのクォータ |
クラスターノードはクォータを超えることはできません。 クォータを増やすには、クォータセンターに移動してください。 デフォルトのACK Basic クラスターのノードクォータは 10 です。 |
|
インスタンスの所有権 |
インスタンスとクラスターは、同じ Alibaba Cloud アカウント、リージョン、VPC 内にある必要があります。 そうでない場合は、インスタンスを移行するか、要件を満たすインスタンスまたはクラスターを作成してください。 VPC ピアリング接続のもう一方の端から ECS インスタンスを追加することはできません。 |
|
|
クラスターの所有権 |
別の ACK クラスターに属するインスタンスを追加することはできません。 まず元のクラスターからノードを削除し、その後で新しいクラスターに追加してください。 |
|
|
スケーリンググループ (ESS) の所有権 |
別のスケーリンググループに属するインスタンスを追加することはできません。 まずスケーリンググループから削除してください。 |
|
|
ノードプールのタイプ |
|
|
|
オペレーティングシステム |
|
|
|
インスタンスタイプ |
|
|
|
ネットワーク |
API サーバーへのアクセス |
インスタンスの IP アドレスは、API サーバーのアクセスホワイトリストに含まれている必要があります。 そうでない場合、ノードはコントロールプレーンと通信できません。 詳細については、「API サーバーのアクセス制御の設定」をご参照ください。 |
|
セキュリティグループ |
インスタンスのセキュリティグループタイプを変更したり、事前にインスタンスをノードプールのセキュリティグループに追加したりするには、「インスタンスへのセキュリティグループの関連付け (プライマリ ENI)」をご参照ください。 セキュリティグループのクォータを増やすには、「ECS クォータの表示または増加」をご参照ください。 |
|
|
Terway - Pod の最大数 |
インスタンスがサポートする Pod の最大数は、これらの要件を満たす必要があります: 異なる Elastic Network Interface (ENI) モードでサポートされる Pod の最大数は、インスタンスタイプがサポートする ENI の最大数に依存します。 この制限を計算するには、「ノードの Pod クォータの計算方法」をご参照ください。
要件が満たされない場合は、ノードリソースの設定を変更するか、新しいインスタンスを購入してください。 |
|
|
Terway - vSwitch の構成 |
インスタンスとノードプールが異なるアベイラビリティゾーンにある場合は、Terway の vSwitch 構成を更新してください。 そうしないと、Terway はプライマリ ENI の vSwitch から Pod の IP アドレスを割り当て、Pod の IP 割り当てエラーを引き起こす可能性があります。 詳細については、「Pod vSwitch の変更」をご参照ください。 |
|
|
Terway - ENI |
インスタンスを追加すると、バインドされている ENI は保持され、Pod の IP アドレスはこれらの ENI に関連付けられた vSwitch から割り当てられます。 インスタンスにプライマリ ENI が 1 つだけであることを確認してください。 Pod の IP アドレスが構成済みの vSwitch に属していない場合は、クラスターからノードを削除し、すべてのセカンダリ ENI を削除してから、ノードを再度追加してください。 |
|
|
Terway - Worker RAM ロール |
不正確な MaxPod 計算を引き起こす可能性のある権限の問題を防ぐために、インスタンスはノードプールの Worker RAM ロールにバインドされている必要があります。 ノードプール ページで、ノードプール名をクリックして、基本情報 タブでその Worker RAM ロールを表示します。 RAM ロールを付与するには、「ECS インスタンスへの RAM ロールの付与」をご参照ください。 |
|
|
Terway - IPv6 デュアルスタック |
クラスターで IPv6 デュアルスタックが有効になっている場合は、インスタンスのプライマリ ENI に IPv6 アドレスを割り当ててください。 詳細については、「IPv6 通信」をご参照ください。 |
|
|
Flannel |
クラスター VPC のシステムルートテーブル内のカスタムルートエントリは、ルートテーブルのクォータを超えることはできません。 クォータを増やすには、クォータセンターに移動してください。 |
注意事項
-
データバックアップ:開始する前に、システムディスクとデータディスクの手動スナップショットを作成して、データ損失を防いでください。
十分なスナップショットクォータを確保するために、不要な手動および自動スナップショットを削除して、作成の失敗を回避してください。
-
インスタンスのリリースと課金:期待されるノード数が有効になっていないノードプールの場合、ノードプールに追加されたインスタンスは、クラスターまたはノードプールを削除してもリリースされません。 手動でノードを削除する必要があります。 予期しない請求を避けるために、ECS の課金を監視してください。
操作手順
所要時間:システムディスクの交換 (自動モードのみ) とノードの初期化を含むノードの追加には、約 5 分かかります。 実際の時間は、ネットワークの状態、OS イメージのサイズ、その他の要因によって異なります。
既存ノードを追加しても、既存のクラスターノードやアプリケーションには影響しません。 互換性の問題を避けるため、すでにサービスを実行している ECS インスタンスをワーカーノードとして初期化しないでください。
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、対象クラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 をクリックします。
-
ノードプール ページで、目的のノードプールを見つけ、アクション 列の
をクリックし、次に 既存のインスタンスの追加 をクリックします。対象の ECS インスタンスがサーバーリストにない場合、クラスター追加の要件を満たしていません。 使用不可のインスタンスの表示 を選択して、利用できない ECS インスタンスとその理由を確認します。 詳細については、「制限事項」および「注意事項」をご参照ください。
-
画面上の注意を読み、ノードを追加する方法を選択します。
手動追加
インストールコマンドを取得し、対象のインスタンスで実行します。 一度に 1 つの ECS インスタンスしか追加できません。
-
追加方法 を 手動で追加する に設定します。 既存のクラウドサーバーリストから追加する ECS インスタンスを選択し、次 をクリックします。
-
インスタンス情報を入力 ページで、クラスターとインスタンスの詳細を確認します。 データディスクとインスタンス名を設定し、次 をクリックします。
パラメーター
説明
データディスク
コンテナとイメージのデータをデータディスクに保存するかどうかを指定し、システムディスクをデータディスクから分離して安定性を向上させます。
-
ECS インスタンスにデータディスクがアタッチされており、最後のデータディスクのファイルシステムが初期化されていない場合、ACK は最後のデータディスクを自動的に ext4 としてフォーマットします。 ディスクは、/var/lib/containerd または /var/lib/docker (デフォルトのコンテナランタイムディレクトリ) および /var/lib/kubelet (デフォルトの kubelet ディレクトリ) にのみデータを保存します。
重要-
フォーマットすると、データディスク上の既存のデータが消去されます。 最初にスナップショットを作成してデータをバックアップしてください。
-
コンテナとイメージをデータディスクに保存する場合、ext4 と xfs ファイルシステムのみがサポートされます。
-
-
ECS インスタンスにデータディスクがアタッチされていない場合、このオプションを選択したかどうかに関係なく、ACK は新しいデータディスクをアタッチしません。
インスタンス名を保持
-
有効:インスタンス名をノード名として使用します。
-
無効:ACK はカスタムノード命名規則に基づいてノード名を変更します。
-
-
追加成功 ページで、ACK が生成したノード参加コマンドをコピーし、完了 をクリックします。
-
ECS コンソールにログインします。 左側のナビゲーションウィンドウで、[インスタンス & イメージ] > インスタンス を選択します。 クラスターのリージョンと対象のインスタンスを選択します。
-
対象のインスタンスの リモート接続 をクリックし、リモート接続方法を選択します。
-
ステップ 3 でコピーしたスクリプトを入力して実行し、インスタンスを構成してクラスターに追加します。
スクリプトが成功すると、成功メッセージが表示されます。 ノードリストで、新しいノードのステータスが Ready に変わるのを待ちます。
Worker node joined successfully + exit_code=0 + set +x
自動追加
コンソールからインスタンスを自動的に追加します。
-
追加方法 を 自動的に追加する に設定します。 既存のクラウドサーバーリストから追加する ECS インスタンスを選択し、次 をクリックします。
-
インスタンス情報を入力 ページで、クラスターとインスタンスの詳細を確認します。 データディスクとインスタンス名を設定し、次 をクリックします。
パラメーター
説明
データディスク
コンテナとイメージのデータをデータディスクに保存するかどうかを指定し、システムディスクをデータディスクから分離して安定性を向上させます。
-
ECS インスタンスにデータディスクがアタッチされており、最後のデータディスクのファイルシステムが初期化されていない場合、ACK は最後のデータディスクを自動的に ext4 としてフォーマットします。 ディスクは、/var/lib/containerd または /var/lib/docker (デフォルトのコンテナランタイムディレクトリ) および /var/lib/kubelet (デフォルトの kubelet ディレクトリ) にのみデータを保存します。
重要-
フォーマットすると、データディスク上の既存のデータが消去されます。 最初にスナップショットを作成してデータをバックアップしてください。
-
コンテナとイメージをデータディスクに保存する場合、ext4 と xfs ファイルシステムのみがサポートされます。
-
-
ECS インスタンスにデータディスクがアタッチされていない場合、このオプションを選択したかどうかに関係なく、ACK は新しいデータディスクをアタッチしません。
ログイン方法とパスワード
ノードプールの ログイン が パスワード に設定されている場合は、インスタンスのパスワードをリセットします。
インスタンス名を保持
-
有効:インスタンス名をノード名として使用します。
-
無効:ACK はカスタムノード命名規則に基づいてノード名を変更します。
-
-
ダイアログボックスで、注意を読み、OK をクリックします。
ノードが追加された後、ノードリストでそのステータスが Ready に変わるまで初期化されるのを待ちます。
よくある質問
ノードの追加はワークロードに影響しますか?
手動または自動モードで既存ノードを追加しても、既存のクラスターワークロードには影響しません。
インスタンスのスケーリングはワークロードにどのように影響しますか?
ECS インスタンスの設定を変更すると、インスタンスタイプ、パブリック帯域幅の課金方法、パブリック帯域幅、またはデータディスクの課金方法が変更される可能性があります。 詳細については、「インスタンス構成変更の概要」をご参照ください。 影響は、設定変更の方法によって異なります。
-
再起動を必要としない操作:影響はシナリオによって異なります。
-
ECS インスタンスの再起動を必要とする操作:インスタンスタイプの設定変更などの操作は、サービスの中断を引き起こします。 ノードリソースの設定変更などの操作の前に、現在のワークロードを確認して、Pod を引き継ぐための冗長ノードが必要かどうかを判断してください。 その後、設定変更するノードをドレインし、スケーリンググループと ACK クラスターから削除します。 詳細については、「ノードの削除」をご参照ください。
設定変更が完了したら、このトピックに従ってノードをクラスターに再度追加します。
異なるインスタンスタイプを使用できますか?
はい。 ACK では、同じノードプール内で複数のインスタンスタイプのノードを管理できるため、インスタンスタイプの可用性がない、または在庫が不足していることによるスケールアウトの失敗を防ぐことができます。 ECS インスタンスを追加する前に、そのインスタンスタイプがノードプールのインスタンスタイプリストに含まれていることを確認してください。 次の手順に従ってください:
-
ノードプールを編集または作成し、必要なノードインスタンスタイプを構成します。 詳細については、「ノードプールの作成と管理」をご参照ください。
-
対象のノードをドレインして削除します。 ECS インスタンスはリリースしないでください。 詳細については、「ノードの削除」をご参照ください。
-
このトピックの「制限事項」および「操作手順」セクションに従って、異なるインスタンスタイプの ECS インスタンスをノードプールに追加します。
クラスター間でノードを移動するにはどうすればよいですか?
ACK はクラスター間のノードの直接移動をサポートしていません。 代わりに既存ノードを追加してください。 次の手順に従ってください:
サポート終了 (EOL) の OS を持つノードを追加できますか?
-
手動モード:サポートされていない OS を実行している既存のインスタンスをノードプールに追加できますが、インスタンスの OS バージョンが現在のクラスターバージョンと互換性があることを確認してください。 詳細については、「オペレーティングシステム」をご参照ください。
たとえば、CentOS 7 と Alibaba Cloud Linux 2 は、バージョン 1.30 以前のクラスターでのみサポートされています。
-
自動モード:ACK は、ノードプールの構成で指定された OS イメージを使用してインスタンスを初期化します。
ノードを追加するとユーザーデータは上書きされますか?
元のインスタンスのユーザーデータが上書きされるかどうかは、追加方法によって異なります。
-
自動モード:ACK はシステムディスクを初期化し、インスタンスの元のユーザーデータをノードプール用に構成されたユーザーデータで上書きします。
-
手動モード:元のインスタンスのユーザーデータは上書きされません。 インスタンスがノードプールに参加した後も、元のユーザーデータを引き続き使用します。
ノード追加のタイムアウトを修正するにはどうすればよいですか?
ノードと API サーバー CLB 間のネットワーク接続を確認してください。 まず、セキュリティグループが要件を満たしていることを確認します。 既存ノードを追加する際のセキュリティグループの制限については、「制限事項」をご参照ください。 その他のネットワーク接続の問題については、「ネットワーク管理に関するよくある質問」をご参照ください。
ノードを追加すると期待されるノード数は変わりますか?
はい。 既存ノードを追加すると、想定ノード数 は追加されたノードの数だけ増加します。 たとえば、想定ノード数 が 5 に設定されていて、1 つの ECS インスタンスを追加すると、カウントは 6 になります。
リファレンス
-
コンソール以外にも、API オペレーション (既存ノードをノードプールに追加するためのスクリプトの取得) を呼び出すか、CLI コマンド (既存の ECS インスタンスの追加) を実行して、ECS インスタンスを ACK クラスターに追加できます。
-
ノードプール機能より前に作成された古いクラスターには、フリーノード (どのノードプールにも属していないノード) が含まれている場合があります。 集中管理のために、それらをノードプールに移行してください。 詳細については、「フリーノードのノードプールへの移行」をご参照ください。
-
ノード、Pod、またはその他のコンポーネントが期待どおりに動作しない場合は、問題をトラブルシューティングしてください。 詳細については、「ノード例外のトラブルシューティング」、「Pod 例外のトラブルシューティング」、および「ノードとノードプールに関するよくある質問」をご参照ください。