Json Path
- '$' 은 expression이 default로 root object로부터 시작하기 때문에 선택사항이다.
- 결과값은 String() function으로 반환된다.
- JSONPath expressions 안에서 text를 인용하려면 " " 를 사용한다.
- Node list 추출
controlplane ~ ➜ kubectl get nodes -o=jsonpath='{.items[*].metadata.name}'
controlplane node01
$ kubectl get nodes -o=jsonpath='{.items[*].metadata.name}{"\n"}{.items[*].status.capacity.cpu}'
controlplane node01
16 16
- os version 추출 (osImage)
controlplane ~ ➜ kubectl get nodes -o=jsonpath='{.items[*].status.nodeInfo.osImage}'
Ubuntu 22.04.5 LTS Ubuntu 22.04.4 LTS
- config에서 user name 가져오기
controlplane ~ ➜ kubectl config view --kubeconfig=/root/my-kube-config
apiVersion: v1
clusters:
- cluster:
certificate-authority: /etc/kubernetes/pki/ca.crt
server: KUBE_ADDRESS
name: development
- cluster:
certificate-authority: /etc/kubernetes/pki/ca.crt
server: KUBE_ADDRESS
name: kubernetes-on-aws
- cluster:
certificate-authority: /etc/kubernetes/pki/ca.crt
server: KUBE_ADDRESS
name: production
- cluster:
certificate-authority: /etc/kubernetes/pki/ca.crt
server: KUBE_ADDRESS
name: test-cluster-1
contexts:
- context:
cluster: kubernetes-on-aws
user: aws-user
name: aws-user@kubernetes-on-aws
- context:
cluster: test-cluster-1
user: dev-user
name: research
- context:
cluster: development
user: test-user
name: test-user@development
- context:
cluster: production
user: test-user
name: test-user@production
current-context: test-user@development
kind: Config
preferences: {}
users:
- name: aws-user
user:
client-certificate: /etc/kubernetes/pki/users/aws-user/aws-user.crt
client-key: /etc/kubernetes/pki/users/aws-user/aws-user.key
- name: dev-user
user:
client-certificate: /etc/kubernetes/pki/users/dev-user/developer-user.crt
client-key: /etc/kubernetes/pki/users/dev-user/dev-user.key
- name: test-user
user:
client-certificate: /etc/kubernetes/pki/users/test-user/test-user.crt
client-key: /etc/kubernetes/pki/users/test-user/test-user.key
controlplane ~ ➜ kubectl config view --kubeconfig=/root/my-kube-config -o=jsonpath='{.users[*].name}'
aws-user dev-user test-user
controlplane ~ ➜ kubectl get pv --sort-by=.spec.capacity.storage
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE
pv-log-4 40Mi RWX Retain Available <unset> 38m
pv-log-1 100Mi RWX Retain Available <unset> 38m
pv-log-2 200Mi RWX Retain Available <unset> 38m
pv-log-3 300Mi RWX Retain Available <unset> 38m
- Loops - Range
$ kubectl get nodes -o=jsonpath='{range .items[*]}{.metadata.name} {"\t"} {.status.capacity.cpu}{"\n"}{end}'
controlplane 16
node01 16
- Custom Columns
- -o=custom-columns=<COLUMN NAME>:<JSON PATH>
- -o=custom-columns=NODE:.metadata.name
$ kubectl get pv --sort-by=.spec.capacity.storage -o=custom-columns=NAME:.metadata.name,CAPACITY:.spec.capacity.storage
NAME CAPACITY
pv-log-4 40Mi
pv-log-1 100Mi
pv-log-2 200Mi
pv-log-3 300Mi
- Function
- ?() : filter
- @: Current object
$ kubectl config view --kubeconfig=my-kube-config -o jsonpath="{.contexts[?(@.context.user=='aws-user')].name}"
aws-user@kubernetes-on-aws
- 더 많은 예시 - 참고: https://kubernetes.io/docs/reference/kubectl/jsonpath/
$ kubectl get pods -o json
$ kubectl get pods -o=jsonpath='{@}'
$ kubectl get pods -o=jsonpath='{.items[0]}'
$ kubectl get pods -o=jsonpath='{.items[0].metadata.name}'
$ kubectl get pods -o=jsonpath="{.items[*]['metadata.name', 'status.capacity']}"
$ kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.startTime}{"\n"}{end}'
$ kubectl get pods -o=jsonpath='{.items[0].metadata.labels.kubernetes\.io/hostname}'
반응형
'Container > Kubernetes' 카테고리의 다른 글
[K8S] Network & CNI (0) | 2025.02.06 |
---|---|
[K8S] Deploy a Kubernetes Cluster using Kubeadm (0) | 2025.02.06 |
[K8S] Network Policy (0) | 2025.02.04 |
[K8S] Security Context (0) | 2025.02.03 |
[K8S] Image Security (0) | 2025.02.03 |