LoginSignup
4
4

More than 3 years have passed since last update.

[OpenShift]ノードのデバッグ方法を確認する

Last updated at Posted at 2021-01-21

はじめに

今回はOpenShift(OCP)のノードのデバッグ方法を確認しました。

OpenShift4以降は、各ノードのOSがCoreOSを利用することが推奨になっています。CoreOSはコンテナを動かすために機能を絞ったOSです。そのため、OpenShift4では各ノードに直接ログインして操作することは推奨されていません。(できない?未確認)

OCPの構成確認

以下のバージョン、クラスタです。

$ oc version 
Client Version: 4.5.4
Server Version: 4.5.4
Kubernetes Version: v1.18.3+012b3ec
$ oc get node
NAME       STATUS   ROLES           AGE    VERSION
master01   Ready    master,worker   168d   v1.18.3+012b3ec
master02   Ready    master,worker   168d   v1.18.3+012b3ec
master03   Ready    master,worker   168d   v1.18.3+012b3ec

デバッグ用のコンテナの起動

各ノードに直接ログインせずに、oc debugコマンドでコンテナを起動します。

$ oc debug node/master01
Starting pod/master01-debug ...
To use host binaries, run `chroot /host`
Pod IP: 192.168.50.10
If you don't see a command prompt, try pressing enter.
sh-4.2#

コンテナの構成確認

別ターミナルを開いて、このコンテナの構成を確認します。

$ oc get pod
NAME             READY   STATUS    RESTARTS   AGE
master01-debug   1/1     Running   0          3m41s
$ oc describe pod master01-debug 
Name:         master01-debug
Namespace:    default
Priority:     0
Node:         master01/192.168.50.10
Start Time:   Thu, 21 Jan 2021 09:07:36 -0500
Labels:       <none>
Annotations:  debug.openshift.io/source-container: container-00
              debug.openshift.io/source-resource: /v1, Resource=nodes/master01
Status:       Running
IP:           192.168.50.10
IPs:
  IP:  192.168.50.10
Containers:
  container-00:
    Container ID:  cri-o://1654e12ab1bcc40c9b8b7b6b94ce0c5f73152aff31c384786c1b15d3074e1756
    Image:         quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:a60f5a4429d512c7bc8e438ba949b54583d16147e23d30aef9aaa836efa76783
    Image ID:      quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:a60f5a4429d512c7bc8e438ba949b54583d16147e23d30aef9aaa836efa76783
    Port:          <none>
    Host Port:     <none>
    Command:
      /bin/sh
    State:          Running
      Started:      Thu, 21 Jan 2021 09:07:37 -0500
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /host from host (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-p8rss (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  host:
    Type:          HostPath (bare host directory volume)
    Path:          /
    HostPathType:  Directory
  default-token-p8rss:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-p8rss
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason   Age   From               Message
  ----    ------   ----  ----               -------
  Normal  Pulled   12s   kubelet, master01  Container image "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:a60f5a4429d512c7bc8e438ba949b54583d16147e23d30aef9aaa836efa76783" already present on machine
  Normal  Created  12s   kubelet, master01  Created container container-00
  Normal  Started  12s   kubelet, master01  Started container container-00

ポイントはVolumesとMountsですね。
HostPathで"/"がコンテナの/hostにマウントされています。

コンテナ上での操作

コンテナ起動時のメッセージにもありますが、chroot /hostでchrootシェルを起動します。

sh-4.2# chroot /host
sh-4.4# ls -l
total 18
lrwxrwxrwx.   3 root root    7 Jul 14  2020 bin -> usr/bin
drwxr-xr-x.   8 root root 1024 Aug  5 18:22 boot
drwxr-xr-x.  19 root root 3040 Jan 21 12:56 dev
drwxr-xr-x.  89 root root 8192 Jan 21 12:56 etc
lrwxrwxrwx.   3 root root    8 Jul 14  2020 home -> var/home
lrwxrwxrwx.   3 root root    7 Jul 14  2020 lib -> usr/lib
lrwxrwxrwx.   3 root root    9 Jul 14  2020 lib64 -> usr/lib64
lrwxrwxrwx.   3 root root    9 Jul 14  2020 media -> run/media
lrwxrwxrwx.   3 root root    7 Jul 14  2020 mnt -> var/mnt
lrwxrwxrwx.   3 root root    7 Jul 14  2020 opt -> var/opt
lrwxrwxrwx.   3 root root   14 Jul 14  2020 ostree -> sysroot/ostree
dr-xr-xr-x. 414 root root    0 Jan 21 12:56 proc
lrwxrwxrwx.   3 root root   12 Jul 14  2020 root -> var/roothome
drwxr-xr-x.  44 root root 1120 Jan 21 12:56 run
lrwxrwxrwx.   3 root root    8 Jul 14  2020 sbin -> usr/sbin
lrwxrwxrwx.   3 root root    7 Jul 14  2020 srv -> var/srv
dr-xr-xr-x.  13 root root    0 Jan 21 12:56 sys
drwxr-xr-x.   4 root root   66 Jul 14  2020 sysroot
drwxrwxrwt.   8 root root  160 Jan 21 13:59 tmp
drwxr-xr-x.  12 root root  155 Jan  1  1970 usr
drwxr-xr-x.  24 root root 4096 Aug  5 18:22 var

OSのバージョンも確認できます。

sh-4.4# cat /etc/redhat-release 
Red Hat Enterprise Linux CoreOS release 4.5

kubeletやcri-oも確認できます。

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 Thu 2021-01-21 12:56:22 UTC; 1h 5min ago
  Process: 1491 ExecStartPre=/bin/rm -f /var/lib/kubelet/cpu_manager_state (code=exited, status=0/SUCCESS)
  Process: 1489 ExecStartPre=/bin/mkdir --parents /etc/kubernetes/manifests (code=exited, status=0/SUCCESS)
 Main PID: 1493 (kubelet)
    Tasks: 40 (limit: 102120)
   Memory: 616.3M
      CPU: 7min 12.504s
   CGroup: /system.slice/kubelet.service
           └─1493 kubelet --config=/etc/kubernetes/kubelet.conf --bootstrap-kubeconfig=/etc/kubernetes/kubeconf>
sh-4.4# systemctl status cri-o
● crio.service - MCO environment configuration
   Loaded: loaded (/usr/lib/systemd/system/crio.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/crio.service.d
           └─10-mco-default-env.conf
   Active: active (running) since Thu 2021-01-21 12:56:15 UTC; 1h 6min ago
     Docs: https://github.com/cri-o/cri-o
 Main PID: 1444 (crio)
    Tasks: 26
   Memory: 744.5M
      CPU: 7min 55.758s
   CGroup: /system.slice/crio.service
           ├─  1444 /usr/bin/crio --enable-metrics=true --metrics-port=9537
           └─258722 [runc]

このデバッグコンテナはログアウトすると削除されます。また、一定時間何も操作しないと知らぬ間にログアウトされています。測ってはいませんが、5分くらいでログアウトされてました。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4