既存の Elastic Compute Service (ECS) インスタンスをクラスターにワーカーノードとして追加できます。また、ノードプールから削除したワーカーノードを再追加することもできます。これにより、既存のワークロードを中断せずにコンピューティングリソースを迅速に再利用できます。
Container Service for Kubernetes (ACK) では、自動モードと手動モードの 2 つの方法でノードを追加できます。インスタンスの課金方法とインスタンスタイプは、追加後も変更されません。
|
項目 |
自動モード |
手動モード |
|
OS のリセット |
ノードプールの現在の構成に基づいて、インスタンスの OS をリセットして初期化します。
|
柔軟性を高めるために、インスタンスの元の OS を保持します。 |
|
ユースケース |
管理を標準化するために、インスタンス構成をノードプールと整合させたい場合。 |
インスタンスの既存 OS または特定の構成を保持する必要がある場合。 |
制限事項
開始する前に、環境とインスタンスが次の要件を満たしていることを確認してください。
|
カテゴリ |
項目 |
説明 |
|
インスタンスとノードプール |
クラスターのノードクォータ |
クラスター内のノード総数は、クォータを超えないようにする必要があります。クォータの引き上げを申請するには、Quota Center に移動してください。 デフォルトのノードの ACK Basic クラスターでのクォータは 10 です。 |
|
インスタンスの所有 |
インスタンスとクラスターは、同一の Alibaba Cloud アカウント、リージョン、VPC に属している必要があります。そうでない場合は、インスタンスを移行するか、要件を満たす新しいインスタンスまたはクラスターを作成してください。 VPC ピアリング接続の対向側にある ECS インスタンスは追加できません。 |
|
|
クラスターの所有 |
すでに別の ACK クラスターに属しているインスタンスは追加できません。新しいクラスターに追加する前に、元のクラスターからノードを削除する必要があります。 |
|
|
スケーリンググループ (ESS) の所有 |
すでに別のスケーリンググループに属しているインスタンスは追加できません。事前にスケーリンググループから手動で削除する必要があります。 |
|
|
ノードプールのタイプ |
|
|
|
オペレーティングシステム |
|
|
|
インスタンスタイプ |
|
|
|
ネットワーク |
API サーバーへのアクセス |
インスタンスの IP アドレスは、API サーバーのアクセスホワイトリストに含まれている必要があります。含まれていない場合、ノードはコントロールプレーンと通信できません。詳細については、「Configure access control for the API Server」をご参照ください。 |
|
セキュリティグループ |
インスタンスのセキュリティグループタイプを変更する場合や、事前にインスタンスをノードプールのセキュリティグループに追加する場合は、「Associate a security group with an instance (primary ENI)」をご参照ください。セキュリティグループのクォータ引き上げを申請するには、「View or increase ECS quotas」をご参照ください。 |
|
|
Terway - 最大 Pod 数 |
インスタンスがサポートする最大 Pod 数は、次の要件を満たしている必要があります: 各 Elastic Network Interface (ENI) モードでサポートされる最大 Pod 数は、インスタンスタイプがサポートする最大 ENI 数によって決まります。この上限の算出方法については、「How to calculate the pod quota for a node」をご参照ください。
要件を満たさない場合は、ノードリソースをアップグレードまたはダウングレードするか、新しいインスタンスを購入してください。 |
|
|
Terway - vSwitch 構成 |
インスタンスとノードプールが異なるアベイラビリティーゾーンにある場合、Terway の vSwitch 構成を更新する必要があります。更新しない場合、Terway はノードのプライマリ ENI の vSwitch から Pod IP アドレスを割り当てるため、Pod IP の割り当てエラーが発生する可能性があります。詳細については、「Modify pod vSwitches」をご参照ください。 |
|
|
Terway - ENI |
インスタンスを追加すると、既存のアタッチされた ENI は保持され、Pod IP アドレスはこれらの ENI に関連付けられた vSwitch から割り当てられます。インスタンスにプライマリ ENI が 1 つのみであることを確認してください。 Pod IP アドレスが構成済みの vSwitch に属していない場合は、クラスターからノードを削除し、すべてのセカンダリ ENI を削除してから、ノードをクラスターに再追加してください。 |
|
|
Terway - Worker RAM ロール |
権限の問題によって利用可能な最大 Pod 数 (MaxPod) の算出が不正確になるのを防ぐため、インスタンスはノードプールの Worker RAM ロールに割り当てられている必要があります。 ノードプール ページでノードプール名をクリックすると、基本情報 タブでそのワーカー RAM ロールを表示できます。 RAM ロールを付与するには、「ECS インスタンスに RAM ロールを付与する」をご参照ください。 |
|
|
Terway - IPv6 デュアルスタック |
クラスターで IPv6 デュアルスタックが有効な場合、インスタンスのプライマリ ENI に IPv6 アドレスを割り当てる必要があります。詳細については、「IPv6 communication」をご参照ください。 |
|
|
Flannel |
クラスターの VPC のシステムルートテーブルにおけるカスタムルートエントリ数は、ルートテーブルクォータを超えないようにする必要があります。クォータの引き上げを申請するには、Quota Center に移動してください。 |
注意事項
-
データのバックアップ:開始する前に、データ損失を防ぐため、インスタンスのシステムディスクとデータディスクの手動スナップショットを作成してください。
作成の失敗を防ぐため、十分なスナップショットクォータを確保し、不要な手動スナップショットと自動スナップショットを削除しておくことを推奨します。
-
インスタンスの解放と課金:期待ノード数が有効になっていないノードプールでは、クラスターまたはノードプールを削除しても、ノードプールに追加したインスタンスは解放されません。ノードを手動で削除する必要があります。想定外の課金を避けるため、ECS の課金ステータスを監視してください。
操作手順
所要時間:ノードの追加 (自動モードの場合のみシステムディスクの置換を含む) とノードの初期化には、約 5 分かかります。実際の所要時間は、ネットワーク状況、OS イメージのサイズ、その他の要因によって異なる場合があります。
既存ノードの追加は、クラスター内の既存ノードとアプリケーションに影響しません。互換性の問題を避けるため、すでにサービスが作成されている ECS インスタンスをワーカーノードとして初期化しないことを推奨します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
-
ノードプール ページで、対象のノードプールを見つけ、アクション 列の
をクリックし、次に 既存のインスタンスの追加 をクリックします。ターゲット ECS インスタンスがサーバーリストにない場合、そのインスタンスはクラスターに追加されるための条件を満たしていません。使用不可のインスタンスの表示 を選択すると、利用できない ECS インスタンスとその理由を表示できます。理由の詳細については、「制限事項」および「使用上の注意」をご参照ください。
-
画面の注意事項をよく読み、ノードを追加する方法を選択します。
手動で追加
この方法では、インストールコマンドを取得し、対象インスタンスで実行します。一度に追加できる ECS インスタンスは 1 台のみです。
-
追加方法 を 手動で追加する に設定します。既存のクラウドサーバーのリストで、追加する 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 インスタンスのアップグレードまたはダウングレードでは、インスタンスタイプ、パブリック帯域幅の課金方法、パブリック帯域幅、またはデータディスクの課金方法が変更される場合があります。詳細については、「Overview of instance configuration changes」をご参照ください。ECS インスタンスへの影響は、アップグレードまたはダウングレードの方法によって異なります。
-
再起動が不要な操作:業務への影響は、利用シナリオによって異なります。
-
ECS インスタンスの再起動が必要な操作:インスタンスタイプのアップグレードまたはダウングレードなどの操作では、サービスが中断されます。このような操作 (例:ノードリソースのアップグレードまたはダウングレード) を実行する前に、現在のワークロードを確認し、Pod を引き継ぐ冗長ノードを追加する必要があるかどうかを判断することを推奨します。その後、アップグレードまたはダウングレードするノードをドレインし、スケーリンググループおよび ACK クラスターから削除します。詳細については、「Remove nodes」をご参照ください。
アップグレードまたはダウングレードが完了したら、本トピックの手順に従ってノードをクラスターに再追加してください。
異なるインスタンスタイプを使用できますか?
はい。ACK では、同一ノードプール内で複数のインスタンスタイプのノードを管理できます。これにより、インスタンスタイプの利用不能や在庫不足によるスケールアウトの失敗を防止できます。ECS インスタンスを追加する前に、そのインスタンスタイプがノードプールのインスタンスタイプ一覧に含まれていることを確認してください。手順は次のとおりです:
-
ノードプールを編集または作成し、必要なノードのインスタンスタイプを設定します。詳細については、「Create and manage a node pool」をご参照ください。
-
対象ノードをドレインして削除します。ECS インスタンスは解放しないでください。詳細については、「Remove nodes」をご参照ください。
-
本トピックの「制限事項」と「操作手順」の指示に従って、異なるインスタンスタイプの ECS インスタンスをノードプールに追加してください。
クラスター間でノードを移動する方法を教えてください。
ACK は、クラスター間でノードを直接移動する機能をサポートしていません。ただし、既存ノードを追加する機能を利用して実現できます。手順は次のとおりです:
-
対象ノードをドレインし、ソースクラスターから削除します。ECS インスタンスは解放しないでください。詳細については、「Remove nodes」をご参照ください。
-
本トピックの「制限事項」と「操作手順」の指示に従って、対象の ECS インスタンスを宛先クラスターのノードプールに追加してください。
EOL の OS を実行するノードを追加できますか?
-
手動モード:サポート対象外の OS を実行する既存インスタンスを、ノードプールに手動で追加できます。ただし、インスタンスの OS バージョンが現在のクラスターのバージョンと互換性があることを確認する必要があります。詳細については、「Operating systems」をご参照ください。
たとえば、CentOS 7 と Alibaba Cloud Linux 2 は、バージョン 1.30 以前のクラスターでのみサポートされます。
-
自動モード:はい。ACK は、ノードプールの構成で指定された OS イメージを使用してインスタンスを初期化します。
ノードを追加するとユーザーデータは上書きされますか?
元のインスタンスのユーザーデータが上書きされるかどうかは、追加方法によって異なります。
-
自動モード:ACK はシステムディスクを初期化し、インスタンスの元のユーザーデータを、ノードプールに設定されたユーザーデータで上書きします。
-
手動モード:元のインスタンスのユーザーデータは上書きされません。ノードプールに追加した後も、元のユーザーデータを引き続き使用します。
ノード追加のタイムアウトを解消する方法を教えてください。
ノードと API サーバー間のネットワーク接続性を確認します。まず、セキュリティグループが要件を満たしていることを確認します。既存のノードを追加する際のセキュリティグループの制限については、「制限事項」をご参照ください。その他のネットワーク接続の問題については、「ネットワーク管理に関する FAQ」をご参照ください。
ノードを追加すると期待ノード数は変わりますか?
はい。 既存のノードを追加すると、想定ノード数は追加されたノードの数だけ増加します。 たとえば、ノードプールの想定ノード数が 5 に設定されていて、そのノードプールに ECS インスタンスを 1 つ追加すると、その数は自動的に 6 になります。
関連ドキュメント
-
コンソールに加え、API (Obtain the script for adding existing nodes to a node pool) を呼び出すか、CLI コマンド (Add existing ECS instances) を実行して、ECS インスタンスを ACK クラスターに追加することもできます。
-
ノードプール機能がリリースされる前に作成された古いクラスターには、遊離ノード (どのノードプールにも属していないノード) が含まれている場合があります。一元管理のため、ノードプールに移行できます。詳細については、「Migrate free nodes to a node pool」をご参照ください。
-
ノード、Pod、またはその他のコンポーネントが想定どおりに動作しない場合は、問題をトラブルシューティングしてください。詳細については、「Troubleshoot node exceptions」、「Troubleshoot pod exceptions」、および「FAQ about nodes and node pools」をご参照ください。