반응형
{
"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 |