반응형

 

 


작성일: 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

$

 

 

 


 

+ Recent posts