공부/CKA
[CKA] kubectl JSON Path 사용법
작은소행성
2023. 5. 23. 18:22
JSON이란
JSON 데이터는 객체 {} ,배열 [] 형태를 가진다.
쿠버네티스에서 필요한 정보만 걸러내어 확인할 수 있게 사용한다.
kubectl get <리소스> -o json
kubectl get pods -o jsonpath='{표현식}'
https://kubernetes.io/docs/reference/kubectl/jsonpath/
문법 요소
문법 | 뜻 |
$ | 루트노드, JSON Path의 모든 표현식은 이것으로 시작 |
@ | 현재노드 |
. | 하위노드 |
.. | 중첩된 전체 하위 요소들 |
[] | 배열 인덱스 |
* | 모든 요소와 매칭되는 와이들 카드 |
? (boolean expression) | 조건부 필터 표현식 |
json path 연습문제
1. Get all pod names
$[*].metadata.name
[
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "web-pod-1",
"namespace": "default"
},
"spec": {
"containers": [
{
"image": "nginx:alpine",
"name": "nginx"
}
],
"nodeName": "node01"
}
},
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "web-pod-2",
"namespace": "default"
},
"spec": {
"containers": [
{
"image": "nginx:alpine",
"name": "nginx"
}
],
"nodeName": "node02"
}
},
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "web-pod-3",
"namespace": "default"
},
"spec": {
"containers": [
{
"image": "nginx:alpine",
"name": "nginx"
}
],
"nodeName": "node01"
}
},
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "web-pod-4",
"namespace": "default"
},
"spec": {
"containers": [
{
"image": "nginx:alpine",
"name": "nginx"
}
],
"nodeName": "node01"
}
},
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "db-pod-1",
"namespace": "default"
},
"spec": {
"containers": [
{
"image": "mysql",
"name": "mysql"
}
],
"nodeName": "node01"
}
}
]
## 출력 결과
[
"web-pod-1",
"web-pod-2",
"web-pod-3",
"web-pod-4",
"db-pod-1"
]
2. Get container details
$.spec.containers[0]
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "nginx-pod",
"namespace": "default"
},
"spec": {
"containers": [
{
"image": "nginx:alpine",
"name": "nginx"
}
],
"nodeName": "node01"
}
}
## 출력 결과
[
{
"image": "nginx:alpine",
"name": "nginx"
}
]
반응형