エラーメッセージを原因と対処法に照らし合わせることで、エッジノードの接続とアップグレードの失敗に関する問題を解決してください。
問題が記載されていない場合は、診断情報を収集し、チケットを送信してください。
エッジノード接続の失敗への対処
ノード接続スクリプトが失敗した場合は、以下のエラーメッセージと照合してください。
| エラーメッセージ | 原因 | 対処法 |
|---|---|---|
The os XXX unsupport |
サポートされていない OS バージョンです。 | サポートされている OS バージョンについては、「エッジノードの追加」をご参照ください。 |
Invalid nodeName |
無効なノード名です。 | -.次の条件を満たす名前を使用してください:小文字、ハイフン (-)、ピリオド (.) のみを含み、長さが 1~253 文字で、localhost で始まらないこと。 |
Node route overlaps with service cidr |
ノードルートが Pod CIDR ブロックまたは Service CIDR ブロックと重複しています。 | NameServer アドレスまたはノードルートと重複しない Pod および Service CIDR ブロックを使用してクラスターを再作成してください。 |
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 サーバーに到達できませんでした。 | edgeadm は IP アドレスで API サーバーに接続します。 API サーバーのフロントにある Server Load Balancer (SLB) インスタンスのアクセス制御リスト (ACL) ルールがノードの IP アドレスをブロックしていないか確認してください。 |
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 のバイナリがノードに既に存在します。 | edgeadm reset を実行してから、接続スクリプトを再実行してください。 |
error run phase post-check: timed out waiting for the condition |
システムコンポーネントの起動に失敗しました。 | 1. 最新の edgeadm をダウンロードし、edgeadm reset を実行して、接続スクリプトを再実行してください。 2. ノードが必要なすべてのパブリックエンドポイントに到達できることを確認してください。詳細については、「エッジノードのエンドポイントと IP ルーティングの設定」をご参照ください。 3. 問題が解決しない場合は、診断情報を収集してチケットを送信してください。 |
エッジノードのアップグレード失敗への対処
エッジノードプールを更新する際、アップグレードが成功すると This node has been upgraded successfully が返されます。 そうでない場合は、以下のエラーと照合してください。
| エラーメッセージ | 原因 | 対処法 |
|---|---|---|
edgeadm version xxxx does not match cluster version |
edgeadm のバージョンがクラスターのバージョンと一致しません。 | 1. コントロールプレーンがアップグレードされていることを確認してください。 2. TARGET_CLUSTER_VERSION が正しいことを確認してください。 |
node has already been upgraded to xxx |
ノードはすでにターゲットバージョンです。 | 一部のコンポーネントがアップグレードされなかった場合は、ログを保持してチケットを送信してください。 |
kubelet target version xxxx does not match cluster version xxxx |
kubelet のバージョンがコントロールプレーンのバージョンと一致しません。 | kubelet-version が指定されている場合は、コントロールプレーンのバージョンと一致していることを確認してください。 そうでない場合は、チケットを送信してください。 |
Parameter currentVersion cann't null |
古い edgeadm バージョンです。 | 最新の edgeadm をダウンロードしてください。 有効なアップグレードパス:Kubernetes 1.18 → 1.20 および 1.20 → 1.22。 |
|
|
アップグレードに失敗しましたが、自動ロールバックは成功しました。 ノードの状態は影響を受けません。 | ログを保持してチケットを送信してください。 |
|
|
アップグレードとロールバックの両方に失敗しました。 ノードの状態が影響を受けます。 | ログを保持してチケットを送信してください。 |
ノード診断情報の収集
異常なエッジノードでこのスクリプトを実行して、診断情報を収集してください。
-
異常なエッジノードにログインしてください。
-
診断スクリプトをダウンロードしてください。
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実行ごとに一意のアーカイブが生成されます。 出力例:
+ echo 'please get diagnose_1578310147.tar.gz for diagnostics' please get diagnose_1578310147.tar.gz for diagnostics + echo 'Submit the file named diagnose_1578310147.tar.gz to request technical support.' Submit the file named diagnose_1578310147.tar.gz to request technical support. -
アーカイブが存在することを確認してください。
ll
チケットを送信する際に、.tar.gz ファイルを添付してください。