このトピックでは、ACK Edge クラスター におけるエッジノードに関する一般的な質問に回答し、一般的な問題の解決策を説明します。
クラウドノードとエッジノードの区別
ACK Edge は、alibabacloud.com/is-edge-worker label を使用して、ノードがエッジノードであるかどうかを判断します。
クラウドノードプールまたはエッジノードプールにノードを追加すると、is-edge-worker label が自動的にノードに追加されます。is-edge-worker label の値が true の場合、そのノードはエッジノードです。値が false の場合、そのノードはクラウドノードです。
Express Connect 経由でのエッジノードの追加
Express Connect 経由で ACK Edge クラスター にエッジノードを追加する場合は、次の要件にご注意ください。詳細については、「Express Connect シナリオにおける ACK Edge クラスターの特別な設定」をご参照ください。
-
エッジノードプールを作成するときは、ノードプールタイプとして 専用 を選択します。次に、「エッジノードの追加」の手順に従って、ノード接続スクリプトを生成します。
専用ノードプールの詳細については、「エッジノードプールの管理」をご参照ください。
説明お使いの ACK Edge クラスター がバージョン 1.22 以降の場合、ノード接続スクリプトの
inDedicatedNetworkパラメーターを使用して Express Connect 回線経由でノードを追加することはできません。クラスターのバージョンが 1.22 より前の場合は、クラスターをアップグレードしてください。 -
ノードが OSS、Container Registry、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
ノード設定ファイルで、
gpuVersionフィールドを、使用する GPU モデル (例:Nvidia_Tesla_T4) に設定します。設定例を次に示します。{ "gpuVersion": "Nvidia_Tesla_T4", "enableIptables": true, "quiet": true, "manageRuntime": true, "allowedClusterAddons": [ "kube-proxy", "flannel", "coredns" ] } -
パラメーターを設定すると、接続ツールが自動的に nvidia-containerd-runtime をインストールします。詳細については、「NVIDIA Container Runtime」をご参照ください。
ノード接続スクリプトの失敗に関するトラブルシューティング
スクリプトの実行に失敗した場合は、次の表を使用して問題をトラブルシューティングしてください。問題がリストにない場合は、ノードの診断情報を収集し、チケットを送信してください。エッジノードの診断情報を収集する方法については、「ACK Edge クラスター内のノードの診断情報を収集する方法」をご参照ください。
|
エラーメッセージ |
原因 |
解決策 |
|
The os XXX unsupport |
エッジノードの OS がサポートされていません。 |
サポートされているエッジノードのオペレーティングシステムの一覧については、「エッジノードの追加」をご参照ください。 |
|
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 already exists 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 |
cluster-info ConfigMap の取得に失敗しました。 |
edgeadm がエッジノードを追加する際に、このアドレスを使用して API サーバーにアクセスする必要があります。API サーバーの 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 |
edge-hub バイナリファイルがノードにすでに存在するため、edge-hub のインストールに失敗しました。 |
|
|
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 |
古いバージョンの edgeadm が使用されました。 |
|
|
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 'Please submit diagnose_1578310147.tar.gz to technical support' Please submit diagnose_1578310147.tar.gz to technical support -
llコマンドを実行して、diagnose_1578310147.tar.gz診断情報ファイルが存在することを確認してください。