This article was translated from Japanese by AI and may contain inaccuracies. For the most accurate content, please refer to the original Japanese version.
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