kubernets

kubectl JSONpath

kubectlはアウトプットの形式としてJSONPathをサポートしています。

JSON Path

kubectl はアウトプットの形式として JSONPath をサポートしています。

kubectl get pods -o=jsonpath='{ .items[0].spec.containers[0].image }' 

次の Node の定義に対する jsonpath の出力結果を確認します。

{
  "apiVersion": "v1",
  "items": [
    {
      "apiVersion": "v1",
      "kind": "Node",
      "metadata": [{
        "name": "master"
      }],
      "status": {
        "capacity": {
          "cpu": "4"
        },
        "nodeInfo": {
          "architecture": "amd64",
          "operationgSystem": "linux"
        }
      }
    },
    {
      "apiVersion": "v1",
      "kind": "Node",
      "metadata": [{
        "name": "node01"
      }],
      "status": {
        "capacity": {
          "cpu": "4"
        },
        "nodeInfo": {
          "architecture": "amd64",
          "operationgSystem": "linux"
        }
      }
    },
  ]
}
$ kubectl get nodes -o=jsonpath='{.itmes[*].metadata.name}'
master node01
$ kubectl get nodes -o=jsonpath='{.items[*].status.nodeInfo.architecture}'
amd64 amd64
$ kubectl get nodes -o=jsonpath='{.items[*].metadata.name} {.items[*].status.capacity.cpu}'
master node01 4 4

{"\n"} で改行を {"\t"} でタブを出力できます。

$ kubectl get nodes -o=jsonpath='{.items[*].metadata.name} {"\n"} {.items[*].status.capacity.cpu}'
master node01 
4 4
kubectl get nodes -o=jsonpath='{range .items[*]} {.metadata.name} {"\t"} {.status.capaticy.cpu {"\n"} {end}'
  • カスタムカラム

カスタムカラムは、コンマ区切りされたカスタムカラムのリストを指定してテーブルを表示します。

kubectl get nodes -o=custom-columns=<COLUMN NAME>:<JSON PATH>
kubectl get nodes -o=custom-columns=NODE:.metadata.name
NODE
master
node-1
  • ソート
kubectl get nodes --sort-by=.metadata.name
NAME   STATUS ROLES  AGE VERSION
master Ready  master 5m  v1.11.3
node01 Ready  <none> 5m  v1.11.3

Contributors

> GitHub で修正を提案する
この記事をシェアする
はてなブックマークに追加

関連記事