本ページでは、ACK Edge クラスター内のエッジノードで発生する一般的な接続障害およびアップグレード障害のトラブルシューティング方法について説明します。表示されたエラーメッセージの一部をこのページで検索してください。各エントリには、該当するエラーメッセージの原因と対処方法が記載されています。
該当する障害が一覧にない場合は、ノードから診断情報を収集し、チケットを送信してください。手順については、「ノード診断情報の収集」をご参照ください。
エッジノード接続障害の対処
エッジノードをクラスターに接続するには、ノード接続スクリプトを実行します。スクリプトの実行に失敗した場合、以下の表から該当するエラーメッセージを特定してください。
| エラーメッセージ | 原因 | 修正 |
|---|---|---|
The os XXX unsupport | オペレーティングシステムのバージョンがサポートされていません。 | サポートされているオペレーティングシステムのバージョンについては、「エッジノードの追加」をご参照ください。 |
Invalid nodeName | ノード名が命名規則に準拠していません。 | 以下の条件を満たす名前を使用してください:小文字、ハイフン (-)、およびピリオド (.) のみを含む;長さは 1~253 文字;localhost で始まらない。 |
Node route overlaps with service cidr | ノードルートが Pod CIDR ブロックまたは Service CIDR ブロックと競合しています。 | クラスターを再作成し、NameServer アドレスおよびノードルートと重複しないように、Pod CIDR ブロックおよび 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 および Kubernetes 1.20 → 1.22 です。 |
| アップグレードに失敗し、自動的にロールバックされました。ノードのステータスには影響ありません。 | ログを保存し、チケットを送信してください。 |
| アップグレードに失敗し、ロールバックも失敗しました。ノードのステータスに影響があります。 | ログを保存し、チケットを送信してください。 |
ノード診断情報の収集
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実行ごとに、固有の名前を持つアーカイブが生成されます。出力例は以下のとおりです。
+ 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 ファイルを添付してください。