SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

イラストではじめるKubernetes

イラストではじめる「Kubernetesで本番運用」~可観測性のあるシステムの実現と、さまざまな障害への備え方

イラストではじめるKubernetes 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

障害調査の仕方

 Kubernetes、あるいはコンテナを利用してサービスを本番運用している時と物理/仮想マシンで運用している時では障害調査方法がかなり違ってきます。

 ここでは障害調査の導入として、kubectlを使った調査方法を簡単に説明していきます。

Podが起動していない! まずは何をすれば良い?

 kubectl get podでPodのステータスを確認すると、Runningになっていない。こんなときどうするのか、いくつか方法を紹介します。

Podの詳細を見る

kubectl describe pod 

 まずはPodの詳細をみてみましょう。出力結果の下部にある「Events」に動作していない理由が書かれていることがあります。コンテナイメージのタグを間違えた、のようなケースでは「指定されたイメージが無い」のように書かれていることがあります。

ログを参照する

kubectl logs  

 前節のログで説明した通り、Kubernetes標準のログ収集機能を利用してログを参照することができます。kubectl logsを利用することでPodのログを参照することができます。Deploymentなどを利用して複数Podを起動した場合、kubectl logs -l name=myLabelのように、ラベルで複数のPodを指定した方が便利なこともあるでしょう。

コンテナ内でshellを実行する

kubectl exec  -c  -- /bin/sh

 コンテナ内に入って調査したい、そんなときに使えるコマンドです。コンテナにログインしてshellを起動するため、そもそもコンテナにshellが入っていない場合は利用できません。そのような環境で調査するためには、次の説明に進んでください。

コンテナにログインしてもデバッグ用ツールが何も入っていない!

 コンテナは起動を早く、そして脆弱性を減らすために、余計なものを入れない方が良いとされています。その結果、いざ障害発生時にコンテナにログインして調査しよう! と思っても、これまで障害調査時に利用しているあらゆるコマンドが入っていない、というケースが多く出てくることでしょう。

 そんなときには以下の方法を試してみてください。

デバッグ用コンテナを起動する

 Kubernetes v1.23からbetaになった機能です。

kubectl debug -it  --image=busybox --target=

 デバッグしたいPod名とコンテナ名を指定し、デバッグ用コンテナを立ち上げます。ここではBusyBoxコンテナイメージを指定していますが、他のコンテナイメージを指定することも可能です。

 詳しくは公式ドキュメントを参照してください。

デバッグ用Podを立ち上げる

 kubectl debugを利用できないバージョンのKubernetesを利用しているような環境ではデバッグ用のPodを立ち上げる方法があります。

 以下のコマンドを利用すると、デバッグ用のPodを立ち上げることができます。

kubectl run busybox –image=busybox:1.28 –rm -it –restart=Never /bin/sh

 ただしこの方法ではあくまで別Podを利用するため、直接デバッグしたいPodのファイルを参照するなどといった操作はできません。エンドポイントをcurlで叩いてみたり、pingコマンドで疎通を確認したりといった用途に有用です。

 ここまで簡単ではありますが、障害調査の仕方を紹介しました。kubectlにはここで紹介しきれないほどの有用なオプションがあるため、kubectl Cheat Sheetを参考にどのようなオプションがあるかみてみることをお勧めします。

 また、公式のドキュメントにPod以外のデバッグTipsが載っています。こちらも適宜参照すると良いでしょう。

次のページ
障害に備える

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
イラストではじめるKubernetes連載記事一覧

もっと読む

この記事の著者

あおい(アオイ)

 大手メーカーにてソフトウェアエンジニアエンジニアを経て2019年7月サイボウズ株式会社にSREとして入社。 現行インフラ基盤上のアプリケーションを新インフラ基盤(Kubernetes)に移行するプロジェクトが主な仕事です。著書は、「まんがではじめるKubernetes」など。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16094 2022/07/05 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング