@@ -13,7 +13,7 @@ content_type: task
13
13
14
14
* あなたの{{< glossary_tooltip text="Pod" term_id="pod" >}}は既にスケジュールされ、実行されているはずです。Podがまだ実行されていない場合は、[ Troubleshoot Applications] ( /ja/docs/tasks/debug/debug-application/ ) から始めてください。
15
15
16
- * いくつかの高度なデバッグ手順では、Podがどのノードで動作しているかを知り、そのノードでコマンドを実行するためのシェルアクセス権を持っていることが必要です。` kubectl ` を使用する標準的なデバッグ手順の実行には、そのようなアクセスは必要ではありません。
16
+ * いくつかの高度なデバッグ手順では、Podがどのノードで動作しているかを知り、そのノードでコマンドを実行するためのシェルアクセス権を持っていることが必要です。` kubectl ` を使用する標準的なデバッグ手順の実行には、そのようなアクセスは必要ではありません。
17
17
18
18
19
19
## ` kubectl describe pod ` を使ってpodの詳細を取得
@@ -406,7 +406,7 @@ kubectl logs --previous ${POD_NAME} ${CONTAINER_NAME}
406
406
407
407
# # container execによるデバッグ {#container-exec}
408
408
409
- もし{{< glossary_tooltip text="container image" term_id="image" >}}がデバッグユーティリティを含んでいれば、LinuxやWindows OSのベースイメージからビルドしたイメージのように、`kubectl exec` で特定のコンテナ内でコマンドを実行することが可能です :
409
+ もし{{< glossary_tooltip text="container image" term_id="image" >}}がデバッグユーティリティを含んでいれば、LinuxやWindows OSのベースイメージからビルドしたイメージのように、`kubectl exec`で特定のコンテナ内でコマンドを実行することが可能です :
410
410
411
411
` ` ` shell
412
412
kubectl exec ${POD_NAME} -c ${CONTAINER_NAME} -- ${CMD} ${ARG1} ${ARG2} ... ${ARGN}
@@ -457,11 +457,11 @@ kubectl exec -it ephemeral-demo -- sh
457
457
OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused "exec: \" sh\" : executable file not found in $PATH": unknown
458
458
```
459
459
460
- 代わりに、`kubectl debug` を使ってデバッグ用のコンテナを追加することができます。
460
+ 代わりに、`kubectl debug`を使ってデバッグ用のコンテナを追加することができます。
461
461
引数に`-i`/`--interactive`を指定すると、`kubectl`は自動的にエフェメラルコンテナのコンソールにアタッチされます。
462
462
463
463
```shell
464
- kubectl debug -it ephemeral-demo --image=busybox --target=ephemeral-demo
464
+ kubectl debug -it ephemeral-demo --image=busybox:1.28 --target=ephemeral-demo
465
465
```
466
466
467
467
```
@@ -470,10 +470,10 @@ If you don't see a command prompt, try pressing enter.
470
470
/ #
471
471
```
472
472
473
- このコマンドは新しいbusyboxコンテナを追加し、それにアタッチします。` target ` パラメーターは、他のコンテナのプロセス名前空間をターゲットにします。これは` kubectl run ` が作成するPodで[ プロセス名前空間の共有] ( /ja/docs/tasks/configure-pod-container/share-process-namespace/ ) を有効にしないため、指定する必要があります。
473
+ このコマンドは新しいbusyboxコンテナを追加し、それにアタッチします。` -- target` パラメーターは、他のコンテナのプロセス名前空間をターゲットにします。これは` kubectl run ` が作成するPodで[ プロセス名前空間の共有] ( /ja/docs/tasks/configure-pod-container/share-process-namespace/ ) を有効にしないため、指定する必要があります。
474
474
475
475
{{< note >}}
476
- ` target ` パラメーターは{{< glossary_tooltip text="Container Runtime" term_id="container-runtime" >}}でサポートされている必要があります。サポートされていない場合、エフェメラルコンテナは起動されないか、` ps ` が他のコンテナ内のプロセスを表示しないように孤立したプロセス名前空間を使用して起動されます。
476
+ ` -- target` パラメーターは{{< glossary_tooltip text="Container Runtime" term_id="container-runtime" >}}でサポートされている必要があります。サポートされていない場合、エフェメラルコンテナは起動されないか、` ps ` が他のコンテナ内のプロセスを表示しないように孤立したプロセス名前空間を使用して起動されます。
477
477
{{< /note >}}
478
478
479
479
新しく作成されたエフェメラルコンテナの状態は` kubectl describe ` を使って見ることができます:
@@ -510,15 +510,15 @@ kubectl delete pod ephemeral-demo
510
510
511
511
Podの設定オプションによって、特定の状況でのトラブルシューティングが困難になることがあります。
512
512
例えば、コンテナイメージにシェルが含まれていない場合、またはアプリケーションが起動時にクラッシュした場合は、` kubectl exec ` を実行してトラブルシューティングを行うことができません。
513
- このような状況では、` kubectl debug ` を使用してデバッグを支援するために設定値を変更したPodのコピーを作ることができます。
513
+ このような状況では、` kubectl debug ` を使用してデバッグを支援するために設定値を変更したPodのコピーを作ることができます。
514
514
515
515
### 新しいコンテナを追加しながらPodをコピーします
516
516
517
- 新しいコンテナを追加することは、アプリケーションが動作しているが期待通りの動作をせず、トラブルシューティングユーティリティをPodに追加したい場合に便利な場合があります 。
518
- 例えば、アプリケーションのコンテナイメージは` busybox ` 上にビルドされているが、` busybox ` に含まれていないデバッグユーティリティが必要な場合があります。このシナリオは ` kubectl run ` を使ってシミュレーションすることができます。
517
+ 新しいコンテナを追加することは、アプリケーションは動作しているが期待通りの動作をせず、トラブルシューティングユーティリティをPodに追加したい場合に便利です 。
518
+ 例えば、アプリケーションのコンテナイメージは` busybox ` 上にビルドされているが、` busybox ` に含まれていないデバッグユーティリティが必要な場合があります。このシナリオは` kubectl run ` を使ってシミュレーションすることができます。
519
519
520
520
``` shell
521
- kubectl run myapp --image=busybox --restart=Never -- sleep 1d
521
+ kubectl run myapp --image=busybox:1.28 --restart=Never -- sleep 1d
522
522
```
523
523
524
524
このコマンドを実行すると、` myapp ` のコピーに` myapp-debug ` という名前が付き、デバッグ用の新しいUbuntuコンテナが追加されます。
@@ -538,7 +538,7 @@ root@myapp-debug:/#
538
538
539
539
* ` i ` フラグを指定すると、デフォルトで` kubectl debug ` が新しいコンテナにアタッチされます。これを防ぐには、` --attach=false ` を指定します。セッションが切断された場合は、` kubectl attach ` を使用して再接続することができます。
540
540
541
- * ` share-processes ` を指定すると、Pod 内のコンテナからプロセスを参照することができます 。この仕組みについて詳しくは、[ Pod内のコンテナ間でプロセス名前空間を共有する] ( /ja/docs/tasks/configure-pod-container/share-process-namespace/ ) を参照してください。
541
+ * ` -- share-processes` を指定すると、このPod内のコンテナが、Pod内の他のコンテナのプロセスを参照することができます 。この仕組みについて詳しくは、[ Pod内のコンテナ間でプロセス名前空間を共有する] ( /ja/docs/tasks/configure-pod-container/share-process-namespace/ ) を参照してください。
542
542
{{< /note >}}
543
543
544
544
デバッグが終わったら、Podの後始末をするのを忘れないでください。
@@ -549,14 +549,14 @@ kubectl delete pod myapp myapp-debug
549
549
550
550
### Podのコマンドを変更しながらコピーします
551
551
552
- デバッグフラグを追加するためや、アプリケーションがクラッシュするためなど、コンテナのコマンドを変更すると便利な場合があります 。
552
+ 例えば、デバッグフラグを追加する場合や、アプリケーションがクラッシュしている場合などでは、コンテナのコマンドを変更すると便利なことがあります 。
553
553
アプリケーションのクラッシュをシミュレートするには、` kubectl run ` を使用して、すぐに終了するコンテナを作成します:
554
554
555
555
```
556
- kubectl run --image=busybox myapp -- false
556
+ kubectl run --image=busybox:1.28 myapp -- false
557
557
```
558
558
559
- ` kubectl describe pod myapp ` を使用すると、このコンテナがクラッシュしていることがわかります:
559
+ ` kubectl describe pod myapp ` を使用すると、このコンテナがクラッシュしていることがわかります:
560
560
561
561
```
562
562
Containers:
@@ -586,9 +586,9 @@ If you don't see a command prompt, try pressing enter.
586
586
これで、ファイルシステムのパスのチェックやコンテナコマンドの手動実行などのタスクを実行するために使用できる対話型シェルが完成しました。
587
587
588
588
{{< note >}}
589
- * 特定のコンテナのコマンドを変更するには、そのコンテナ名を` --container ` で指定する必要があり、そうしないと ` kubectl debug ` が代わりに指定したコマンドを実行する新しいコンテナを作成します 。
589
+ * 特定のコンテナのコマンドを変更するには、そのコンテナ名を` --container ` で指定する必要があります。そうしなければ、指定したコマンドを実行するための新しいコンテナを、 ` kubectl debug ` が代わりに作成します 。
590
590
591
- * ` i ` フラグは、デフォルトで ` kubectl debug ` がコンテナにアタッチされるようにします。これを防ぐには、` --attach=false ` を指定します。セッションが切断された場合は、` kubectl attach ` を使用して再接続することができます。
591
+ * ` -i ` フラグは、デフォルトで` kubectl debug ` がコンテナにアタッチされるようにします。これを防ぐには、` --attach=false ` を指定します。セッションが切断された場合は、` kubectl attach ` を使用して再接続することができます。
592
592
{{< /note >}}
593
593
594
594
デバッグが終わったら、Podの後始末をするのを忘れないでください:
@@ -599,12 +599,12 @@ kubectl delete pod myapp myapp-debug
599
599
600
600
### コンテナイメージを変更してPodをコピーします
601
601
602
- 状況によっては、動作不良のPodを通常のプロダクション用のイメージから、デバッグ・ビルドや追加ユーティリティを含むイメージに変更したい場合があります 。
602
+ 状況によっては、動作不良のPodを通常のプロダクション用のコンテナイメージから、デバッグビルドや追加ユーティリティを含むイメージに変更したい場合があります 。
603
603
604
604
例として、` kubectl run ` を使用してPodを作成します:
605
605
606
606
```
607
- kubectl run myapp --image=busybox --restart=Never -- sleep 1d
607
+ kubectl run myapp --image=busybox:1.28 --restart=Never -- sleep 1d
608
608
```
609
609
610
610
ここで、` kubectl debug ` を使用してコピーを作成し、そのコンテナイメージを` ubuntu ` に変更します:
@@ -613,17 +613,18 @@ kubectl run myapp --image=busybox --restart=Never -- sleep 1d
613
613
kubectl debug myapp --copy-to=myapp-debug --set-image=*=ubuntu
614
614
```
615
615
616
- ` set-image ` の構文は、` kubectl set image ` と同じ` container_name=image ` の構文を使用します。` *=ubuntu ` は、全てのコンテナのイメージを` ubuntu ` に変更することを意味します。
616
+ ` -- set-image` の構文は、` kubectl set image ` と同じ` container_name=image ` の構文を使用します。` *=ubuntu ` は、全てのコンテナのイメージを` ubuntu ` に変更することを意味します。
617
617
618
618
デバッグが終わったら、Podの後始末をするのを忘れないでください:
619
619
620
- ``` shell kubectl delete pod myapp myapp-debug
620
+ ``` shell
621
+ kubectl delete pod myapp myapp-debug
621
622
```
622
623
623
624
## ノード上のシェルによるデバッグ {#node-shell-session}
624
625
625
626
いずれの方法でもうまくいかない場合は、Podが動作しているノードを探し出し、ホストの名前空間で動作する特権Podを作成します。
626
- ノード上で ` kubectl debug ` を使って対話型のシェルを作成するには、以下を実行します:
627
+ ノード上で` kubectl debug ` を使って対話型のシェルを作成するには、以下を実行します:
627
628
628
629
``` shell
629
630
kubectl debug node/mynode -it --image=ubuntu
@@ -637,7 +638,7 @@ root@ek8s:/#
637
638
638
639
ノードでデバッグセッションを作成する場合、以下の点に注意してください:
639
640
640
- * ` kubectl debug ` はノードの名前に基づいて新しい Pod の名前を自動的に生成します 。
641
+ * ` kubectl debug ` はノードの名前に基づいて新しいPodの名前を自動的に生成します 。
641
642
* コンテナはホストのIPC、Network、PIDネームスペースで実行されます。
642
643
* ノードのルートファイルシステムは` /host ` にマウントされます。
643
644
0 commit comments