Kubernetes
デバッグアシスタント
ターゲット Pod の隣に一時的なデバッグ Pod を起動し、ネットワーク、DNS、ファイルシステムの問題を診断。
v4.8.0 で追加されました。デバッグアシスタントを使用して、ターゲットPodの隣に一時的なデバッグPodを起動し、デバッグツールがプリインストールされたシェルを開きます。
デバッグアシスタントを使用する場合
- ターゲットイメージがdistrolessやscratchなどのミニマルイメージで、シェルがない場合。
tcpdump、dig、curl、ncなどのツールがターゲットイメージに含まれていない場合。- マウントされたボリュームやPodのネットワーク名前空間を、Pod自体に触れることなく調査する必要がある場合。
CrashLoopBackOffをデバッグしていて、Podがkubectl execで十分な時間稼働しない場合。
デバッグPodを起動する
ターゲットPodを選択する
PodsまたはWorkloadsから、調査したいPodでデバッグを選択します。
共有オプションを設定する
プロセス名前空間、ネットワーク名前空間、マウントされたボリュームを共有するかどうかを選択します。
デバッグPodのReady状態を待つ
DockermanはPodを作成し、ターミナルを開く前にReady状態になるのを待ちます。
埋め込みターミナルで操作する
デバッグPodはDockermanのターミナルタブで開きます。
デバッグプリセット
Dockermanには、一般的なランタイム向けにデバッグポートとプロトコルを事前設定する3つの組み込みプリセットが用意されています:
| プリセット | ポート | プロトコル |
|---|---|---|
| Node.js | 9229 | Inspector |
| Go (Delve) | 2345 | DAP |
| Python (debugpy) | 5678 | DAP |
デバッグPod起動時にプリセットを選択すると、手動のポート設定をスキップできます。
デバッグPodの中身
| ツール | 用途 |
|---|---|
bash, sh | シェル |
ps, top, htop | プロセス調査 |
netstat, ss | 接続状態 |
tcpdump | パケットキャプチャ |
curl, wget | HTTPプロービング |
dig, nslookup | DNS解決 |
nc | 生のTCPおよびUDPチェック |
vim, less | ファイル調査 |
strace | カーネルが許可する場合のシステムコールトレース |
一般的なデバッグワークフロー
クリーンアップ
デバッグPodは一時的なものです。ターミナルタブを閉じるか、シェルを終了すると、Dockermanが自動的にクリーンアップします。