feat: translate kubectl-node-debug.md into Japanese

pull/45088/head
Junya Okabe 2024-02-12 03:29:50 +09:00
parent 95ca85963c
commit 57becfedaa
1 changed files with 102 additions and 0 deletions

View File

@ -0,0 +1,102 @@
---
title: Kubectlを用いたKubernetesードのデバッグ
content_type: task
min-kubernetes-server-version: 1.20
---
<!-- overview -->
このページでは、Kubernetesクラスター上で動作している[ノード](/ja/docs/concepts/architecture/nodes/)を`kubectl debug`コマンドを使用してデバッグする方法について説明します。
## {{% heading "prerequisites" %}}
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
Podを作成し、それらの新しいPodを任意のードに割り当てる権限が必要です。
また、ホストのファイルシステムにアクセスするPodを作成する権限も必要です。
<!-- steps -->
## `kubectl debug node`を用いてノードをデバッグする
`kubectl debug node`コマンドを使用して、トラブルシューティングしたいードにPodをデプロイします。
このコマンドは、SSH接続を使用してードにアクセスできないシナリオで役に立ちます。
Podが作成されると、そのPodはード上で対話型シェルを開きます。
mynodeという名前のード上で対話型シェルを作成するには、次のように実行します。
```shell
kubectl debug node/mynode -it --image=ubuntu
```
```console
ードmynode上に、コンテナデバッガーを持つデバッグ用Pod、node-debugger-mynode-pdx84を作成します。
コマンドプロンプトが表示されない場合は、エンターキーを押してみてください。
root@mynode:/#
```
デバッグコマンドは、情報を収集し、問題をトラブルシューティングするのに役立ちます。
使用する可能性のあるコマンドには、`ip`、`ifconfig`、`nc`、`ping`、`ps`などがあります。
また、`mtr`、`tcpdump`、`curl`などの他のツールもそれぞれのパッケージマネージャーからインストールすることができます。
{{< note >}}
デバッグコマンドは、デバッグ用のPodが使用しているイメージに基づいて異なる場合があり、これらのコマンドをインストールする必要があるかもしれません。
{{< /note >}}
デバッグ用のPodは、Pod内の`/host`にマウントされたノードのルートファイルシステムにアクセスできます。
kubeletをファイルシステムのネームスペースで実行している場合、デバッグ用のPodはそのネームスペースのルートを見ることになり、ード全体のルートではありません。
典型的なLinuxードの場合、関連するログを見つけるために以下のパスを確認できます。
`/host/var/log/kubelet.log`
: ノード上でコンテナを実行する責任がある`kubelet`からのログです。
`/host/var/log/kube-proxy.log`
: サービスのエンドポイントへのトラフィックを指示する責任がある`kube-proxy`からのログです。
`/host/var/log/containerd.log`
: ノード上で実行されている`containerd`プロセスからのログです。
`/host/var/log/syslog`
: システムに関する一般的なメッセージや情報です。
`/host/var/log/kern.log`
: カーネルログです。
ノード上でデバッグセッションを作成する際には、以下の点を考慮してください。
* `kubectl debug`は、新しいPodの名前をードの名前に基づいて自動的に生成します。
* ノードのルートファイルシステムは`/host`にマウントされます。
* コンテナはホストのIPC、ネットワーク、PID Namespaceで実行されますが、Podは特権を持っていません。
これは、一部のプロセス情報の読み取りが失敗する可能性があることを意味します。
その情報へのアクセスはスーパーユーザーに制限されているためです。
例えば、`chroot /host`は失敗します。
特権Podが必要な場合は、手動で作成してください。
## {{% heading "cleanup" %}}
デバッグ用のPodの使用が終了したら、それを削除してください。
```shell
kubectl get pods
```
```none
NAME READY STATUS RESTARTS AGE
node-debugger-mynode-pdx84 0/1 Completed 0 8m1s
```
```shell
# Podの名前は適宜変更してください
kubectl delete pod node-debugger-mynode-pdx84 --now
```
```none
pod "node-debugger-mynode-pdx84" deleted
```
{{< note >}}
ノードがダウンしている場合(ネットワークから切断されている、kubeletが停止して再起動しないなど)、`kubectl debug node`コマンドは機能しません。
その場合は、[ダウンあるいは到達不能なノードのデバッグ](/ja/docs/tasks/debug/debug-cluster/#example-debugging-a-down-unreachable-node)を確認してください。
{{< /note >}}