PodとServiceのデバッグ
kubectlコマンドやその他のツールを使って、正常に動作しないPodや接続の問題を効果的にデバッグします。
「PodとServiceのデバッグ」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
デバッグが重要な理由
Kubernetes上のアプリケーションが正しく動作しないとき、デバッグは問題解決の大きな力になります。何が起きたのかを理解し、修正方法を見つけるのに役立ちます。
問題が起きている一般的な兆候は次のとおりです。
- Podが「Pending」または「CrashLoopBackOff」状態から進まない。
- Serviceに到達できない。
- アプリケーションが期待どおりに応答しない。
これらの問題を診断するための基本的なツールを学びます。
kubectlデバッグキット
Kubernetesには、クラスターの調査とトラブルシューティングに役立つ強力なコマンドラインツールが用意されています。中心となるのがkubectlです。
ここでは、次の主要なコマンドを取り上げます。
kubectl describe: リソースの詳細情報を取得します。kubectl logs: コンテナの出力を確認します。kubectl exec: コンテナ内でコマンドを実行します。kubectl port-forward: サービスにローカルからアクセスします。
これらを使いこなせば、Kubernetesのデバッグをプロレベルで行えるようになります。
kubectl describeで詳しく調査する
kubectl describeコマンドは、Kubernetesリソース、特にPodについて詳細な情報を確認する最初の手段です。
イベント、ステータス、IPアドレス、ボリューム、コンテナの詳細など、豊富なデータを提供します。手がかりを探すには、末尾にある「Events」を確認してください。
kubectl describe pod my-nginx-podクラスターイベントを理解する
イベントは、Podやその他のリソースで何が起きたのかを理解するうえで重要です。作成、スケジューリング、エラーなどの経過を知ることができます。
describeを使って特定のリソースのイベントを確認したり、kubectl get eventsでクラスター全体のイベントを表示したりできます。
kubectl get events --sort-by='.lastTimestamp'コンテナログを読み解く
アプリケーションは通常、重要なメッセージ、エラー、デバッグ情報を標準出力または標準エラー出力に表示します。kubectl logsを使うと、これらの情報にアクセスできます。
Podがクラッシュしている場合は、ログを確認してなぜ失敗しているのかを理解することが重要です。ログをリアルタイムで追跡することもできます。
kubectl logs my-app-pod -fコンテナ内でコマンドを実行する
ログを見るだけでは不十分な場合があります。サーバーにSSH接続するように、問題を診断するために実行中のコンテナ内でコマンドを実行する必要があるかもしれません。
kubectl execを使うと、コンテナ内でコマンドを実行したり、bashやshなどのシェルを直接起動したりできます。
kubectl exec -it my-app-pod -- /bin/bashPort-Forwardでローカルアクセスする
Serviceに到達できないと考えられる場合や、外部に公開せずローカルでテストしたい場合は、kubectl port-forwardが役立ちます。
ローカルマシンからクラスター内のPodまたはServiceへの安全なトンネルを作成し、localhost経由でアクセスできるようにします。
kubectl port-forward service/my-web-service 8080:80Serviceの問題を診断する
Service経由でアプリケーションに到達できない場合は、次の2点を確認します。
- Service Selector: Podのラベルと正しく一致していますか。
- Endpoints: Serviceにアクティブなエンドポイント(実行中のPod)はありますか。
kubectl get svcとkubectl get epを使って確認します。
kubectl get svc my-web-service
kubectl get ep my-web-serviceよくある問題に対処する
Podでよく起きる2つの問題を見てみましょう。
CrashLoopBackOff: コンテナが起動とクラッシュを繰り返しています。エラーを確認するにはkubectl logsを使います。ImagePullBackOff: Kubernetesがコンテナイメージを取得できません。イメージ名、タグ、レジストリへのアクセスを確認します。
kubectl describe podを使うと、多くの場合、「Events」セクションで最初の原因を確認できます。
デバッグへの挑戦
data-processor-xyzという名前のPodがCrashLoopBackOff状態になっていることに気付きました。クラッシュの原因を調査する必要があります。
直近の原因を診断するために、最初に実行すべき最も重要な2つのコマンドは次のうちどれですか。
振り返り: デバッグを極める
お疲れさまでした。主要なkubectlコマンドを使ってPodとServiceをデバッグする方法を学びました。
- 詳細なリソース情報とイベントには
kubectl describeを使います。 - コンテナ内で何が起きているかを確認するには
kubectl logsを使います。 - 対話的なトラブルシューティングには
kubectl execを使います。 - Serviceにローカルからアクセスするには
kubectl port-forwardを使います。
これらのツールは、Kubernetesアプリケーションを安定して動作させるために不可欠です。練習を続けてください。
よくある質問
「PodとServiceのデバッグ」レッスンは無料ですか?
はい。「PodとServiceのデバッグ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「PodとServiceのデバッグ」で何を学びますか?
kubectlコマンドやその他のツールを使って、正常に動作しないPodや接続の問題を効果的にデバッグします。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「PodとServiceのデバッグ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- よくある問題の診断
- PodとServiceのデバッグ
- 本番環境のベストプラクティスとヒント
- リソースクォータとリミットレンジ