(O+P)ut

アウトプット



(O+P)ut

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

【Kubernetes】custom-columnsで自在に情報を出力する

スポンサーリンク

はじめに

kubectlコマンドのオプションにて-o custom-columns=HOGE:...で任意の列を出力することが可能です。
本記事ではjqコマンドと比較しながらcustom-columnsを利用して特定の値を抜き出してみます。

環境情報
  • kubectl v1.15.5

想定環境

$ kubectl get pod
NAME                     READY   STATUS      RESTARTS   AGE
busybox                  0/1     Completed   0          XX
nginx-554b9c67f9-vr294   1/1     Running     0          XX

事前準備

以下コマンドで全ての情報が表示されます。

$ kubectl get pod busybox -o=json

例えばspec.containersあたりを抜き出せば以下のようになっているので

"spec": {
        "containers": [
            {
                "image": "busybox",
                "imagePullPolicy": "IfNotPresent",
                "name": "busybox",
                "resources": {},
                "stdin": true,
                "stdinOnce": true,
                "terminationMessagePath": "/dev/termination-log",
                "terminationMessagePolicy": "File",
                "tty": true,
                "volumeMounts": [
                    {
                        "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount",
                        "name": "default-token-6jdsx",
                        "readOnly": true
                    }
                ]
            }
        ],

以下のようにjqコマンドで抜き出せば指定した値が確認できます。

$ kubectl get pod busybox -o=json | jq .spec.containers[0].image
"busybox"

ちなみにimageは複数持つことができるので[0]で要素を指定しています。そこを実施しないと以下のようになり値が返ってきません。

$ kubectl get pod busybox -o=json | jq .spec.containers.image
assertion "cb == jq_util_input_next_input_cb" failed: file "/usr/src/ports/jq/jq-1.6-1.x86_64/src/jq-1.6/src/util.c", line 371, function: jq_util_input_get_position

custom-columnsを利用する

jqコマンドで当たりをつけることができれば構文に従って該当情報を取得できます。

$ kubectl get pod busybox -o custom-columns=IMAGE[0]:spec.containers[0].image
IMAGE[0]
busybox

全てのPodを一気に確認することも可能で

$ kubectl get pod -o custom-columns=IMAGE[0]:spec.containers[0].image
IMAGE[0]
busybox
nginx

カンマ区切りで値を追加することも可能です。

$ kubectl get pod -o custom-columns=IMAGE[0]:spec.containers[0].image,PODIP:status.podIP
IMAGE[0]   PODIP
busybox    10.1.2.85
nginx      10.1.2.214

終わりに

jqコマンドでもitems[0]やitems[1]と数字を変えることで複数の情報を取得できますが、kubectlのオプションで一気に情報を出力する際は便利です。

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