반응형
{
"asdf": "bsdf",
"csdf": [
{
"dsdf": "esdf",
"fsdf": "gsdf"
},
{
"hsdf": "isdf",
"jsdf": "ksdf"
}
]
}
여기에서 "gsdf"를 추출하는 JSON Path: $.csdf[0].fsdf
Criteria
[1, 2, 10, 476, 388, 3287]
- 에서 40 이상인 수만 추출하기:
$[?(@ >= 40)]
$
: root element. root element상의 list이므로 거기에[]
?()
: check if@
: each element
- 에서
40, 476
이 아닌 수만 추출하기:$[?( @ nin [40, 476])]
Wildcard
Lists
["Apple", "Google", "Coca-Cola", "Samsung", "Amazon"]
- 에서
["Apple", "Coca-Cola"]
출력하기:$[0, 2]
- 에서
["Apple", "Google", "Coca-Cola"]
출력하기:$[0:3]
- 3이라는 데 주의
for(int i=0; i<3; i++)
같은 것
- 에서
["Apple", "Coca-Cola", "Amazon"]
출력하기:$[0:6:2]
- 뒤의 2는 Step by 2 (2칸씩 뛰어넘기)
for(int i=0; i<6; i+=2)
같은 것
- 에서
["Amazon"]
출력하기:$[-1]
- 일부 implementation에서는
$[-1:]
으로 해야 작동하는 경우가 있음
- 일부 implementation에서는
Kubectl에서 사용하는 JSON Path
kubectl은 대량의 데이터를 탐색할 때 JSON Path를 사용할 수 있는 옵션을 제공한다.
- 애초에 kubectl이 kube-apiserver에서 받아 오는 반환값 자체가 JSON 형식이다
- 사용할 kubectl 명령어 확보 (예를 들어
kubectl get pods
) - 해당 kubectl 명령어를 JSON으로 출력 (`kubectl get pods -o json)
- 필요한 정보를 뽑아낼 JSON Path 쿼리 작성
- kubectl에 JSON Path과 함께 명령 (`kubectl get pods -o=jsonpath='{.items[0].spec.containers[0].image})
- 여러 JSON Path 쿼리를 함께 사용할 수 있다
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
--sort-by=.status.capcity.cpu
같이 JSON Path를 이용해 결과물을 소팅하는 것이 가능하다
심화: JSON Path와 Range 사용
(CKA 자격 수준에서는 필요한 내용은 아니다)
대충 이런 pseudocode를 생각해보자
foreach N in nodes {
print (N.metadata.name + "\\t" + N.status.capaicty.cpu + "\\n";
}
/\* 출력결과:
master 4
node01 4
\*/
이것은 kubectl의 JSON Path 표현으로는 이렇게 나타낼 수 있다
'{range .items\[\*\]}
{.metadata.name}{"\\t"}{.status.capcity.cpu}{"\\n"}
{end}'
심화: Custom Column 옵션
-o=custom-columns=NODE:.metadata.name,CPU:.status.capacity.cpu
NODE CPU
master 4
node01 4
반응형
'콤퓨우터 > 필기: KodeKloud CKA 강의' 카테고리의 다른 글
252-261. Troubleshooting (0) | 2024.05.17 |
---|---|
241. etcd in HA (0) | 2024.05.17 |
230. Ingress (0) | 2024.05.17 |
226-227. DNS and CoreDNS in Kubernetes (0) | 2024.05.17 |
223. Service Networking (0) | 2024.05.17 |