ACK エッジクラスターはエッジノードの自律性をサポートします。この機能により、クラウドとエッジ間のネットワークが切断された場合でも、エッジノード上のアプリケーションは中断することなく実行を継続し、退避または移行されることはありません。エッジノードに自律性がない場合、許容期間が経過すると、そのアプリケーションは退避されます。このトピックでは、エッジノードの自律性を設定する方法について説明します。
前提条件
背景情報
エッジノード自律性は有効化または無効化できます。デフォルトでは、エッジノードがクラスターに追加された時点では自律的ではありません。
-
エッジノード自律性が有効化されている場合、ノードがコントロールプレーンから切断されても、ノード上のアプリケーションは排除されずに自動的に回復します。この設定は、ネットワーク接続が不安定なエッジコンピューティングシナリオに最適です。
-
エッジノードの自律性が無効になっている場合、コントロールプレーンから切断されたノードはハートビートの報告を停止します。そのステータスは 利用不可 に設定され、ノード上の Pod は許容期間が経過した後に排除されます。
ノード自律性の有効化
コンソール
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
-
ノード ページで、対象のノードを見つけ、Actions 列の を選択します。
説明自律ステータスの変更 ボタンは、エッジノードの場合にのみ表示されます。
-
自律ステータスの変更 ダイアログボックスで、 OK をクリックします。
Kubectl
エッジノードに次のアノテーションを追加して、ノード自律性を有効化します。この設定はエッジノードにのみ適用されます。
kubectl annotate node <node-name> node.beta.openyurt.io/autonomy=true --overwrite
エッジノードの自律性期間を設定することもできます。
自律期間は、Kubernetes 1.28 以降を実行する ACK Edge クラスターでのみ設定できます。この設定を構成すると、クラウドとエッジ間のネットワークが切断されても、その継続時間が指定した自律期間未満である場合、ノード上の Pod は排除されません。切断の継続時間がこの期間を超えると、Pod は排除されます。
kubectl annotate node <node-name> node.alibabacloud.com/autonomy-duration=500s --overwrite
ノード自律性ステータスの確認
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
-
ノード ページで、対象のノードを見つけ、Actions 列で を選択します。
-
基本情報 タブの ステータス セクションで、Autonomy のステータスが True の場合、ノード自律性が有効になっています。
キャッシュコンポーネントの設定
EdgeHub は、クラウドとエッジ間のネットワークが切断された場合でもノードコンポーネントが正常に動作するように、API サーバーから必要なデータをキャッシュします。ディスクキャッシュディレクトリは /etc/kubernetes/cache です。
キャッシュされるデータとは、API サーバーと交換されるリソース情報 (Pod や ConfigMap リソースなど) を指します。ビジネスデータは含まれません。
切断中に API サーバーからのデータを必要とするコンポーネントが正常に実行されるようにするには、次の手順を実行します。
-
コンポーネントの User-Agent 文字列を取得します。コミュニティコンポーネントの場合、この情報はコンポーネントのドキュメントやコミュニティフォーラムで確認できます。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
-
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
-
名前空間 を kube-system に切り替え、名前 が edge-hub-cfg の ConfigMap を見つけ、右側の YAML の編集 をクリックします。
-
User-Agent を
cache_agentsキーに追加し、OK をクリックします。 -
ノードにログインして
/etc/kubernetes/cacheディレクトリに移動し、ご使用の User-Agent 名のディレクトリが存在することを確認します。
この設定が完了すると、コンポーネントと API サーバー間で交換されるデータがノードのディスクに永続化されます。ノード自律性が有効になっている場合、コンポーネントは切断中にローカルディスクからこのデータを取得して正常に実行できます。