関連記事

【Kubernetes】ConfigMap/SecretでPodの環境変数設定
2022.01.08

【Kubernetes】ResourceQuotaでリソース制限
2022.01.13

Kubernetesクラスタざっくり解説
2021.10.11

【Kubernetes】これから始めるkustomize
2021.12.07




kubectl getとjqコマンドを活用して、リソースの情報を抽出して取得する方法について解説していきます。
jqコマンドとは、JSON形式から値を取り出したり、集計したりできるコマンドです。
Redirecting to jqlang.github.io
下記でインストールできます。
1brew install jq下記がjqコマンドの例です。|(パイプ)やsort_byなどの関数を使うことができます。
1jq '.[] | .name'
2jq 'sort_by(.foo)'マニュアルは下記になります。
Redirecting to jqlang.github.io
kubectl getとjqを使うことでさまざまな処理をしながら情報を出力できます。
1kubectl get pod -o json | jq '.item[].metadata.name'JSON形式で出力する方法は下記で紹介しています。

【Kubernetes】YAML形式とJSON形式でオブジェクトを取得
:::affiliate-message 本ページはAmazonアフィリエイトのリンクを含みます。
シンプルなフィルタリングなどであれば、kubectlだけで処理することもできます。
1kubectl get pod <pod name> -o jsonpath="{.spec.containers[*].name}"実際にkubectl getとjqを利用した例を紹介します。
@tsvとすると同じ行に並べて出力できます。(tsv形式)
1kubectl get pod -o json | jq -r '.items[] | [.metadata.name, .status.podIP] | @tsv'1❯ kubectl get pod -o json | jq -r '.items[] | [.metadata.name, .status.podIP] | @tsv'
2myapp-599c74f9fd-g2lz4 10.1.2.109
3myapp-599c74f9fd-m8kmt 10.1.2.110
4myapp-599c74f9fd-nxwkr 10.1.2.111selectなどの関数を活用することでさまざまなフィルタリングができます。
1kubectl get pod -o json | jq -r '.items[] | select(.status.containerStatuses[].ready==false) | .metadata.name'1❯ kubectl get pod -o json | jq -r '.items[] | select(.status.containerStatuses[].ready==false) | .metadata.name'
2myapp-599c74f9fd-5cc7j
3myapp-599c74f9fd-dx2cn
4myapp-599c74f9fd-g2lz4
5myapp-599c74f9fd-m8kmt
6myapp-599c74f9fd-qpt5z1kubectl get pod -o json | jq -r '.items[] |"\(.metadata.namespace)/\(.metadata.name)"'1❯ kubectl get pod -o json | jq -r '.items[] |"\(.metadata.namespace)/\(.metadata.name)"'
2default/myapp-599c74f9fd-5cc7j
3default/myapp-599c74f9fd-dx2cn
4default/myapp-599c74f9fd-qpt5z1kubectl get pod -o json | jq -r '.items[] | {ns:.metadata.namespace, name:.metadata.name,image:.spec.containers[].image}'1❯ kubectl get pod -o json | jq -r '.items[] | {ns:.metadata.namespace, name:.metadata.name,image:.spec.containers[].image}'
2{
3 "ns": "default",
4 "name": "myapp-599c74f9fd-5cc7j",
5 "image": "nginx"
6}
7{
8 "ns": "default",
9 "name": "myapp-599c74f9fd-dx2cn",
10 "image": "nginx"
11}
12{
13 "ns": "default",
14 "name": "myapp-599c74f9fd-qpt5z",
15 "image": "nginx"
16}1kubectl get pod -o json | jq -r '.items[] | .metadata.name + " \n Container name: " + .spec.containers[].name + " \n Req. RAM: " + .spec.containers[].resources.requests.memory + " \n Lim. RAM: " + .spec.containers[].resources.limits.memory + " \n Req. CPU: " + .spec.containers[].resources.requests.cpu + " \n Lim. CPU: " + .spec.containers[].resources.limits.cpu'1❯ kubectl get pod -o json | jq -r '.items[] | .metadata.name + " \n Container name: " + .spec.containers[].name + " \n Req. RAM: " + .spec.containers[].resources.requests.memory + " \n Lim. RAM: " + .spec.containers[].resources.limits.memory + " \n Req. CPU: " + .spec.containers[].resources.requests.cpu + " \n Lim. CPU: " + .spec.containers[].resources.limits.cpu'
2myapp-5769655597-jvkcd
3 Container name: web-container
4 Req. RAM: 64Mi
5 Lim. RAM: 128Mi
6 Req. CPU: 250m
7 Lim. CPU: 500m
8myapp-5769655597-pg6kh
9 Container name: web-container
10 Req. RAM: 64Mi
11 Lim. RAM: 128Mi
12 Req. CPU: 250m
13 Lim. CPU: 500m
14myapp-5769655597-q9htl
15 Container name: web-container
16 Req. RAM: 64Mi
17 Lim. RAM: 128Mi
18 Req. CPU: 250m
19 Lim. CPU: 500m