Docker & Kubernetes/쿠버네티스

kubernetes pod에서 특정 데이터만 추출하기(json 형식)

miracle21 2024. 12. 27. 13:45
반응형

 

 

 

예를 들어 kubernetes에서 돌고있는 pod의 특정 정보를 뽑아내야 한다고 하자.

 

 

 

추출할 정보 예시:

1. deployment로 배포한 pod의 deployment 이름

2. 배포한 pod의 개수(replica)

3. 컨테이너 각각의 이름, 리소스

 

kubectl get deployments -o json | jq -c '
  .items[] |  
  {
    name: .metadata.name, 
    newReplicaSet: .status.replicas, 
    containers: [
      .spec.template.spec.containers[] | 
      {name, resources: .resources}
    ]
  }
'

 

필요한 필드값을 명시하면 된다.

 

 

 

결괴 예시:

web deployment로 만들어진 pod는 6개, pod 안의 컨테이너는 각각 nginx와 web-service 라는 이미지로 만들어졌으며 리소스는 다음과 같다.

was deployment로 만들어진 pod는 2개, pod 안의 컨테이너는 각각 tomcat과 was-service 라는 이미지로 만들어졌으며 리소스는 다음과 같다.

{"name":"web","newReplicaSet":6,"containers":[{"name":"nginx","resources":{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"100m","memory":"100Mi"}}},{"name":"web-server","resources":{"limits":{"cpu":"1","memory":"1000Mi"},"requests":{"cpu":"100m","memory":"500Mi"}}}]}
{"name":"was","newReplicaSet":2,"containers":[{"name":"tomcat","resources":{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"100m","memory":"100Mi"}}},{"name":"was-server","resources":{"limits":{"cpu":"1","memory":"1000Mi"},"requests":{"cpu":"100m","memory":"500Mi"}}}]}

 

 

 

 

이런식으로 필요한 정보만 추출할 수 있다.

 

 

 

만약 한 줄로 출력하기를 원하지 않는다면  -c 옵션을 제외하면 된다.

 

kubectl get deployments -o json | jq

 

반응형