このトピックでは、ACK Edge クラスターでのエッジノードの使用に関連する一般的な問題とその解決方法について説明します。
ACK Edge はクラウドノードとエッジノードをどのように区別しますか?
ACK Edge では、alibabacloud.com/is-edge-worker ラベルに基づいてエッジノードを識別します。
ノードがクラウドノードプールまたはエッジノードプールに参加すると、is-edge-worker ラベルが自動的に付与されます。このラベルの値が true の場合、そのノードはエッジノードです。値が false の場合は、クラウドノードです。
Express Connect 経由でのエッジノード追加
Express Connect 環境で ACK Edge クラスター にエッジノードを追加する場合、以下の要件に注意してください。詳細については、「Express Connect シナリオにおける ACK Edge クラスターの特殊な構成手順」をご参照ください。
-
エッジノードプールのタイプを選択する際は、専用 を選択してください。その後、「エッジノードの追加」の手順に従って、ノード接続スクリプトを生成します。
専用エッジノードプールの詳細については、「エッジノードプールの作成と管理」をご参照ください。
説明バージョン 1.22 以降の ACK Edge クラスターでは、ノード接続スクリプトで
inDedicatedNetworkパラメーターを設定して Express Connect 経由で接続を確立することはできません。クラスターバージョンが 1.22 より前の場合は、速やかにアップグレードしてください。 -
Express Connect 経由でエッジノードを追加する場合、ノードは非公開アドレスを使用してクラウドサービスと通信します。Object Storage Service (OSS)、Container Registry (ACR)、Server Load Balancer (SLB) などの必要なサービスにノードからアクセスできることを確認してください。
GPU ノードの追加
-
ノードを追加する前に、GPU ドライバーをインストールする必要があります。
-
サポートされるドライバーのバージョンについては、「ACK でサポートされる NVIDIA ドライバーのバージョン一覧」をご参照ください。
-
ノード接続スクリプトを生成する際に、
gpuVersionパラメーターを設定する必要があります。以下の GPU モデルがサポートされています:システムアーキテクチャ
GPU モデル
Edge Kubernetes クラスターのバージョン
AMD64/x86_64
Nvidia_Tesla_T4
≥1.16.9-aliyunedge.1
AMD64/x86_64
Nvidia_Tesla_P4
≥1.16.9-aliyunedge.1
AMD64/x86_64
Nvidia_Tesla_P100
≥1.16.9-aliyunedge.1
AMD64/x86_64
Nvidia_Tesla_V100
≥1.18.8-aliyunedge.1
AMD64/x86_64
Nvidia_Tesla_A10
≥1.20.11-aliyunedge.1
AMD64/x86_64
Nvidia_L40
≥1.26.3-aliyun.1

-
このパラメーターを設定すると、ツールが自動的に nvidia-containerd-runtime をインストールします。「nvidia-containerd-runtime」の詳細については、「NVIDIA Container Runtime」をご参照ください。
ノード接続スクリプト実行失敗のトラブルシューティング
スクリプト実行中にエラーが発生した場合は、以下の表を参考にトラブルシューティングを行ってください。該当するエラーが表に記載されていない場合は、ノードの診断情報を収集し、チケットを送信してください。ノード診断情報の収集方法については、「ACK Edge クラスターのノード診断情報を収集するにはどうすればよいですか?」をご参照ください。
|
エラーメッセージ |
原因 |
解決方法 |
|
The os XXX unsupport |
エッジノードのオペレーティングシステムがサポートされていません。 |
エッジノードでサポートされるオペレーティングシステムの一覧については、「エッジノードの追加」をご参照ください。 |
|
invalid nodeName |
ノード名が無効です。 |
|
|
Node route overlaps with service cidr |
ノードのルーティングテーブルが、クラスター作成時に設定された Pod CIDR ブロックまたは Service CIDR ブロックと競合しています。 |
クラスターを再作成してください。Pod CIDR および Service CIDR ブロックが、エッジノードの NameServer アドレスまたはルーティングテーブルと競合しないようにしてください。 |
|
response error msg: TOKEN_EXPIRED |
アクセストークンの有効期限が切れています。 |
|
|
A node named XXX is already exist in the cluster |
同じ名前のノードが既にクラスター内に存在します。 |
クラスターから同名のノードを削除してください。 |
|
error run phase join-node: failed to get cluster info: failed to get cluster-info configmap, Get "https://xx.xxx.xx.xx:6443/api/v1/namespaces/kube-public/configmaps/cluster-info": dial tcp xx.xxx.xx.xx:6443: i/o timeout |
クラスター情報の取得に失敗しました。 |
edgeadm がエッジノードを接続する際、このアドレスの API サーバーにアクセスする必要があります。API サーバーの Server Load Balancer (SLB) のアクセス制御リスト (ACL) ルールが、このアドレスからのアクセスを制限していないか確認してください。 |
|
error run phase join-node: Install edge-hub failed: Copy file /tmp/edge-hub to /usr/bin/edge-hub fail: open /usr/bin/edge-hub: text file busy | 40009 | 40009 |
|
|
|
error run phase post-check: timed out waiting for the condition |
システムコンポーネントの起動に失敗しました。 |
|
エッジノードのスペックアップ失敗のトラブルシューティング
エッジノードプールのスペックアップ を実行した際、「This node has been upgraded successfully」というメッセージが表示されない場合は、以下の表を参考にトラブルシューティングを行ってください。
|
エラーメッセージ |
原因 |
解決方法 |
|
edgeadm version xxxx does not match cluster version |
スペックアップツールのバージョンとクラスターのバージョンが一致していません。 |
|
|
node has already been upgraded to xxx |
ノードはすでにターゲットバージョンへとスペックアップ済みです。 |
ノード上の一部のコンポーネントがスペックアップされていない場合は、ログを保存し、チケットを送信してください。 |
|
kubelet target version xxxx does not match cluster version xxxx |
指定された kubelet のアップグレードバージョンが、クラスターのコントロールプレーンのバージョンと一致していません。 |
|
|
Parameter currentVersion cann't null |
古いバージョンの |
|
|
upgrade kubelet failed at phase install, recover to previous state. error run phase upgrade: xxxx |
スペックアップに失敗し、自動的に以前の状態へロールバックされました。ノードのステータスには影響ありません。 |
ログを保存し、チケットを送信してください。 |
|
upgrade kubelet failed at phase install, recover to previous state recover kubelet failed, err: xxx error run phase upgrade: xxxx |
スペックアップに失敗し、自動ロールバックも失敗しました。ノードのステータスに影響があります。 |
ログを保存し、チケットを送信してください。 |
ノード診断情報の収集
ACK Edge クラスター内の ACK Edge クラスター のノードが異常な場合、分析のためにそのノードの診断情報を収集するには、次の手順に従ってください。
-
ACK Edge クラスター内の異常なノードにログインします。
-
以下のコマンドを実行して、診断スクリプトをダウンロードします:
curl -o /usr/local/bin/diagnose_edge_node.sh https://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/diagnose/diagnose_k8s.sh -
以下のコマンドを実行して、診断スクリプトに実行権限を付与します:
chmod u+x /usr/local/bin/diagnose_edge_node.sh -
以下のコマンドを実行して、指定されたディレクトリに移動します:
cd /usr/local/bin/ -
以下のコマンドを実行して、診断スクリプトを実行します:
./diagnose_edge_node.sh出力例は以下の通りです。スクリプトは一意の名前を持つ診断ファイル(例:
diagnose_1578310147.tar.gz)を生成します。実際のファイル名は異なります。...... + echo 'please get diagnose_1578310147.tar.gz for diagnostics' please get diagnose_1578310147.tar.gz for diagnostics + echo 'Submit diagnose_1578310147.tar.gz to technical support' Submit diagnose_1578310147.tar.gz to technical support -
llコマンドを実行して、診断ファイル(例:diagnose_1578310147.tar.gz)が正常に作成されたことを確認します。