ACK Edge クラスタはエッジノードの自律性をサポートしています。エッジノードの自律性により、クラウドエッジネットワークの切断中に、エッジノード上のアプリケーションがエビクションされたり、他のエッジノードに移行されたりすることなく、想定どおりに実行され続けます。ノードの自律性が無効になっているノードがクラウドから切断されると、ノード上のアプリケーション ポッドは許容時間が経過した後にエビクションされます。このトピックでは、エッジノードのノードの自律性を構成する方法について説明します。
前提条件
ACK Edge クラスタが作成されていること。詳細については、「ACK Edge クラスタを作成する」をご参照ください。
エッジノードがクラスタに追加されていること。詳細については、「エッジノードを追加する」をご参照ください。
背景情報
エッジノードのノードの自律性を有効または無効にすることができます。デフォルトでは、クラスタに新しく追加されたエッジノードでは、ノードの自律性は無効になっています。
ノードの自律性が有効になっているエッジノードがクラウドから切断された場合、システムは、ノード上のアプリケーション ポッドがエビクションされず、アプリケーションが自動的に回復することを保証します。ノードの自律性は、ネットワーク接続が弱いエッジコンピューティング シナリオに適しています。
ノードの自律性が無効になっているエッジノードがクラウドから切断された場合、ノードはクラウド内のコントロールプレーンにハートビートを送信できません。その結果、ノードのステータスは [準備未完了] に変わり、ノード上のアプリケーション ポッドは許容時間が経過した後にエビクションされるか、他のエッジノードに移行されます。
ノードの自律性を有効にする
ACK コンソール
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、変更するクラスタの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[ノード] ページで、管理するノードを見つけ、[アクション] 列の を選択します。
説明[ノードの自律性設定] ボタンは、現在のノードがエッジノードの場合にのみ表示されます。
ポップアップ表示された [ノードの自律性設定] ダイアログボックスで、[OK] をクリックします。
kubectl
エッジノードに次のアノテーションを追加して、ノードの自律性を有効にします。
説明この構成は、エッジノードにのみ適用できます。
kubectl annotate node xxx node.beta.openyurt.io/autonomy=true --overwrite // エッジノード xxx に自律性アノテーションを追加(オプション) 次の方法を使用して自律性期間を構成します。構成しない場合、エッジノードは永続的な自律性を維持します。
説明Kubernetes 1.28 以降を実行している ACK Edge クラスタ のみ、この構成をサポートしています。
エッジノードとクラウド コントロールプレーン間のネットワーク切断中の Pod エビクション ロジック:
自律性期間内: Pod はサービス中断なしで実行され続けます。
自律性期間を超過: Pod はエッジノードから強制的にエビクションされます。
自律性期間は kubectl を介してのみ構成できます。
kubectl annotate node xxx node.alibabacloud.com/autonomy-duration=500s --overwrite // エッジノード xxx に自律性期間アノテーションを追加
ノードの自律性ステータスを確認する
[クラスタ] ページで、変更するクラスタの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[ノード] ページで、管理するノードを見つけ、 列の を選択します。アクション
[概要] タブで、下にスクロールして [ステータス] セクションを見つけます。タイプが [自律性] で、対応するステータスが [True] の場合、自律性は正常に有効になっています。

キャッシュコンポーネントを構成する
EdgeHub は、ノード上のコンポーネントが必要とするデータをキャッシュに保存し、クラウドエッジネットワークの切断中にこれらのコンポーネントが想定どおりに実行できるようにします。キャッシュディレクトリは /etc/kubernetes/cache です。
キャッシュデータとは、Pod や ConfigMap リソース情報など、API サーバーとやり取りするデータのことで、ビジネスデータは含まれません。
エッジノードがネットワークから切断されている場合、API サーバーからのデータに依存するコンポーネントがある場合は、次のようにエッジノードを構成できます。
ブラウザの開発者ツールまたは API サーバーログから User-Agent 情報を取得します。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。左側のウィンドウで、 を選択します。
[名前空間] ドロップダウンリストから [kube-system] を選択し、[名前] 列で [edge-hub-cfg] という名前の ConfigMap を見つけ、[アクション] 列の [YAML を編集] をクリックします。
キー
cache_agentsに User-Agent を追加し、[OK] をクリックします。ノードにログインし、
/etc/kubernetes/cacheディレクトリに移動して、User-Agent の名前のディレクトリがあるかどうかを確認します。
この構成を設定した後、コンポーネントと API サーバー間でやり取りされるデータは、ノード上のディスクに保存されます。ノードの自律性が有効になっている場合、コンポーネントはローカル ディスクからデータを取得し、ネットワーク切断中も正常に動作するようにします。