Kubernetes クラスター ノードが「準備完了」状態の場合のトラブルシューティング

Kubernetes クラスター ノードが「準備完了」状態の場合のトラブルシューティング

背景

Kubernetes は、コンテナ内のアプリケーションの展開、スケーリング、および操作を自動化するための強力なプラットフォームです。場合によっては、「準備ができていません」状態のノードに遭遇することがあります。この記事では、これらの問題を解決するための手順を順を追って説明します。

Kubernetes 内のノードが利用できない場合は、すぐに確認する必要があります。根本原因を特定するには、以下の手順に従ってください。

ノードのステータスを確認する

まず、ノードが実際に「準備ができていない」状態であることを確認する必要があります。すべてのノードのステータスを一覧表示するには、次のコマンドを使用します。

 kubectl get nodes

次のような出力が表示されます。

 NAME STATUS ROLES AGE VERSION node-1 Ready <none> 30d v1.25.1 node-2 NotReady <none> 25d v1.25.1 node-3 Ready <none> 28d v1.25.1

このクラスターでは、ノード 2 は「準備ができていません」状態です。

ノードの詳細を取得する

ノードで発生する可能性のある問題の詳細情報を取得するには、次のコマンドを実行します。

 kubectl describe node node-2

このコマンドは、ノードの状態、最近のイベントなどを含む多くの出力を提供します。問題を示している可能性のあるエラー メッセージや警告を探します。たとえば、ディスクがいっぱいである、または特定のサービスが応答していないというメッセージが表示される場合があります。

システムログを確認する

場合によっては、問題となっているノードのオペレーティング システム ログを調べると役立つことがあります。ノードに SSH アクセスできる場合は、次のようなログを確認することをお勧めします。

 /var/log/syslog /var/log/messages /var/log/kern.log

grep、cat、tail などのコマンドは非常に役立ちます。

 tail -f /var/log/syslog

これらのログは、ノードの状態に影響を与える可能性のあるオペレーティング システムまたは特定のサービスの問題に関する情報を提供できます。

回避策

問題の根本原因を特定した後、どのように解決を開始できますか? 。一般的な問題に対する解決策をいくつか紹介します。

1. Kubernetesサービスを再起動する

場合によっては、ノード上の Kubernetes サービスを再起動するだけで問題が解決することがあります。

 sudo systemctl restart kubelet

このコマンドは、各ノードで実行され、コンテナの実行を維持する役割を担う Kubernetes エージェントである Kubelet を再起動します。

2. Kubeletの設定を確認する

誤った設定は誤動作の原因となる可能性があります。 Kubelet 構成ファイル (通常は /etc/kubernetes/Kubelet.conf または /var/lib/Kubelet/config.yaml にあります) を確認し、すべてが正しく構成されていることを確認します。

たとえば、最近クラスターのネットワーク設定を変更した場合は、その変更が正しい Kubelet 構成を反映していることを確認してください。

3. ディスク容量を解放する

ディスク容量が不足すると問題が発生する可能性があります。ディスクの使用状況を確認し、必要に応じてスペースを解放してください。

 df -h

このコマンドは、すべてのファイル システムのディスク使用量を表示します。ファイル システムがほぼいっぱいになっている場合は、不要なファイルを削除するか、別の場所に移動してスペースを解放してください。

4. システムリソースを確認する

ノードに十分なリソース (CPU、メモリなど) があることを確認します。

 free -h top

free -h コマンドは、システム上の空きメモリと使用メモリの量を表示します。一方、top は、実行中のプロセスのリアルタイム リストと、それらが使用している CPU とメモリの量を表示します。

5. ネットワークの問題を解決する

ネットワークの問題により、ノードの準備ができなくなる場合もあります。ネットワーク構成を確認し、ノードがクラスターの残りの部分と通信できることを確認してください。

ping、traceroute、nslookup などのコマンドを使用して、ネットワークの問題を診断できます。たとえば、クラスター内の他のノードに ping を実行して、到達可能かどうかを確認します。

 ping node-1 ping node-3

他のノードにアクセスできない場合は、解決する必要があるネットワークの問題である可能性があります。

6. マスターノードとのネットワーク通信を確認する

すべてのノードがマスターノードと通信できることを確認してください。 ping コマンドを使用して接続をテストします。

 ping <master-node-ip-address>

7. ネットワークポートをテストする

ノードとマスターノード間の通信に必要なネットワーク ポートがリッスンされ、アクセス可能かどうかを確認してください。 nc (netcat) はこの目的に役立つツールです。たとえば、Kubernetes API のデフォルト ポート 6443 がマスター ノードでアクセス可能かどうかを確認するには、次のコマンドを使用できます。

 nc -zv <master-node-ip-address> 6443

8. KubeletとKubernetes APIを確認する

Kubelet はマスターノード上の Kubernetes API と通信できる必要があります。 API 通信に関連するエラー メッセージがないか Kubelet ログを確認します。

 journalctl -u kubelet

9. Kubeletの設定を確認する

Kubelet が正しい Kubernetes API アドレスを使用して通信するように設定されていることを確認します。 Kubelet 構成ファイルの --kubeconfig オプションを確認します。このオプションは、Kubernetes API に接続するために必要な情報が含まれている正しい構成ファイルを指している必要があります。

設定ファイルは通常、/etc/kubernetes/kubelet/kubeconfig または同様のパスにあります。

10. Kubernetes診断ツールを使用する

Kubernetes は、通信や接続の問題の診断に役立つさまざまなツールとコマンドを提供します。たとえば、kubectl get componentstatus を使用してマスター コンポーネントのステータスを確認できます。

 kubectl get componentstatuses

要約する

「準備ができていません」状態にある Kubernetes ノードの問題のトラブルシューティングは困難な場合がありますが、適切なアプローチを使用すれば、問題をすばやく特定して解決できます。解決策を適用する前に、必ず診断手順を慎重に実行し、考えられるすべての根本原因を調査してください。問題が解決すると、ノードは「準備完了」状態に戻り、Kubernetes クラスターは通常の動作を再開します。問題が重大になる前に検出して解決するために、クラスターのログとメトリックを定期的に監視することを忘れないでください。

<<:  クラウド上でポータブル ツールを作成する: マイクロサービス アーキテクチャを実装する方法について詳しく説明します。​

>>:  TraefikをベースにしたKubernetes Ingressネットワークシステムについてお話しましょう

推薦する

ウェブサイト運用その1 - 運用計画

今日は、ウェブサイトの運営に関する一連の記事を公開し、個人的な運営経験や遭遇した困難を共有することを...

QingCloud、0.94%オフの低価格で「ナショナルクラウド」を構築

エンタープライズレベルのフルスタッククラウドICTサービスプロバイダーであるQingCloud(qi...

オペレーターがエッジコンピューティングの主導権を握ります。このトレンドの中で 5G の新しい機能をどのように活用すればよいのでしょうか?

5Gの商用化が徐々に進むにつれ、5Gの商業的可能性と下流の産業機会を結び付けることができるエッジコン...

海外メディアから見た中国のクラウドコンピューティングのユニコーン

編集者注: デジタル経済が発展し続けるにつれて、クラウド コンピューティング業界は急成長し、多くのス...

美団は「パブリッククラウド」事業を放棄し、従業員は異動または退職

業界関係者は、美団がパブリッククラウド戦略とビジネスを放棄し、社内サービス(つまり社内使用)に切り替...

クラウドネイティブデスクトップ: 仮想デスクトップの解体と再定義

デスクトップクラウドの進化と、世代から世代へと受け継がれてきたさまざまなデスクトップ管理技術は、「デ...

net-minders: カナダのクラスターサーバー、100M~10Gbps 無制限トラフィックサーバー、DMCA 無視、月額 49 ドルから

カナダのホスティング会社であるnet-mindersは、トロントにコンピュータルームを構え、主に独立...

Bステーションの商業化は深海に突入

Bilibiliの業績は上昇傾向にあります。最近発表された財務報告によると、第4四半期の業績は予想を...

グリーンラディッシュアルゴリズムからウェブサイト運営を一歩リードする方法

一歩先を行くことは、常にプロジェクトを行う際の核心的な考え方であり、インターネット上でウェブサイトを...

コンソールレビュー1周年

2012 年 2 月 16 日、私は register.com で zhujimao.com を登録...

tmhhost: 新学期割引、クラウドサーバー 24 元/月、米国 CN2 GIA (+200g 防御)、香港 CN2、日本 CN2、Windows

tmhhost は現在、春学期プロモーションを実施しており、これには米国 cera データセンターの...

Green Radishアルゴリズムの第2世代アップグレード後の外部リンク構築への対処方法

緑大根アルゴリズムは主に外部リンクの最適化を目的としており、ザクロアルゴリズムはウェブサイトのオリジ...

価値の低いページの時代は終わりました。考え方は変わりましたか?

百度が「価値の低いページはノー」と大胆に宣言して以来、業界に与えた衝撃は、間違いなく広島に投下された...

従来型からクラウドへ: エンタープライズ近代化の 3 つのフェーズ

[[406201]] [51CTO.com クイック翻訳] COVID-19 パンデミック以前、企業...