작성일: 2024년 3월 21일
일반적으로 자주 사용하는 명령은 kubectl cheat sheet를 보는 것을 추천 !
https://kubernetes.io/docs/reference/kubectl/cheatsheet/
Pod 이름 가져오기
$ kubectl get pod -l app=myapp -o jsonpath='{.items[0].metadata.name}'
myapp-6c68579c55-xk6cm
Pod 내부에서 bash shell command 수행하기
Script 중간에 kubectl 명령을 이용하는 경우에
아래 예제처럼 --output=jsonpath 옵션을 활용하면 편하면서 복잡한 로직을 만들 수 있다.
##
## jsonpath를 이용하면, 복잡한 script를 작성할 때 편하다.
##
$ kubectl exec -it -n myns $(kubectl get -n nrf pod -l app=myapp --output=jsonpath="{.items[0].metadata.name}") -c mybox -- bash
Service 리소스의 Public IP address (EXTERNAL-IP) 값 가져오기
jsonpath 옵션을 사용해서 IP Address를 추출하기 전에
아래 명령 예제와 같이 JSON 포맷으로 전체 내용을 출력해본다.
이 전체 JSON 출력 내용을 보면, 내가 추출하고 싶은 Item의 JSON Path를 짐작할 수 있다.
예를 들어, Service resource의 IP "193.173.24.21" 값을 추출하고 싶다면
.status.loadBalancer.ingress 경로로 JSONPATH를 지정하면 된다.
$ kubectl get -n myns svc mysvc -o json
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
... 중간 생략 ...
},
"status": {
"loadBalancer": {
"ingress": [
{
"ip": "193.173.24.21"
}
]
}
}
}
$
위 JSON 전체 내용을 보고, JSONPATH를 확인 후 아래 명령을 입력한다.
$ kubectl get -n myns svc mysvc --output=jsonpath="{.status.loadBalancer.ingress[0].ip}"
193.173.24.21
$