(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【OpenShift】oc debug nodeを利用してNode上で任意のコマンドを実行する

スポンサーリンク

はじめに

Openshiftではoc debug nodeを利用すること任意のノードでシェルプロンプトを開くことができます。
本記事は同コマンドの解説と実際にkubeletのステータスを確認する手順について記載しました。

環境情報
  • OpenShift Container Platform 4

oc debug nodeの仕組み

oc debug node/NODENAMEを行うことで、WorkerNodeの/ディレクトリを/host にマウントしたPodが起動します。

コマンドを実行した結果は以下。

$ oc debug node/test01 --v=3
Starting pod/test01-debug ...
To use host binaries, run `chroot /host`
I0309 01:48:08.264052    3999 reflector.go:175] Starting reflector *v1.Pod (0s) from k8s.io/client-go/tools/watch/informerwatcher.go:146
I0309 01:48:08.264166    3999 reflector.go:211] Listing and watching *v1.Pod from k8s.io/client-go/tools/watch/informerwatcher.go:146
I0309 01:48:09.776863    3999 reflector.go:181] Stopping reflector *v1.Pod (0s) from k8s.io/client-go/tools/watch/informerwatcher.go:146
Pod IP: 192.X.X.X
If you don't see a command prompt, try pressing enter.
sh-4.2#

上にある通りでホスト上の情報を取得するには以下のようにchrootコマンドを実施します。

sh-4.2# chroot /host

これを実施しないとコマンドは通りません。

sh-4.2# systemctl status kubelet
Running in chroot, ignoring request.

ノードのkubeletの動作状況を確認する

ノード名を確認し

$ oc get node
NAME       STATUS   ROLES           AGE    VERSION
test01   Ready    master,worker   xx   v1.18.3+012b3ec

同ノード名でoc debug nodeを打つと以下のように表示されます。ちなみにここでPodIPと表示されるIPはNodeのInternalIPと同一です。

$ oc debug node/test01
Starting pod/test01-debug ...
To use host binaries, run `chroot /host`
Pod IP: 192.X.X.X

chrootを行えば

sh-4.2# chroot /host
sh-4.4# 

Node上でコマンドを打つのと同じ結果が取得できます。

sh-4.4# systemctl status kubelet
● kubelet.service - MCO environment configuration
   Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-mco-default-env.conf
  Active: active (running) since ...
  Process: 1478 ExecStartPre=/bin/rm -f /var/lib/kubelet/cpu_manager_state (code=exited, status>
  Process: 1476 ExecStartPre=/bin/mkdir --parents /etc/kubernetes/manifests (code=exited, statu>
 Main PID: 1480 (kubelet)
    Tasks: 52 (limit: 102120)
   Memory: 369.3M
      CPU: 1min 48.254s
   CGroup: /system.slice/kubelet.service
           └─1480 kubelet --config=/etc/kubernetes/kubelet.conf --bootstrap-kubeconfig=/etc/kub...

終わりに

主にNode上のCRI-Oとkubeletの状況を確認する際に利用するコマンドで、debug上のシェルでcrictil psと打てばKubernetesを通さないコンテナの起動状況を確認できます。

以上、ご参考になれば幸いです。