[kubernetes] kubectl explain 명령어


Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리하는 오픈 소스 플랫폼이며, 다양한 환경에서 일관된 애플리케이션 실행을 가능하게 해주는 컨테이너 오케스트레이션 도구입니다.

 

kubectl explain 명령어는 Kubernetes 리소스의 API 정보를 조회하는 데 사용됩니다. Kubernetes에서 관리하는 리소스와 해당 필드에 대한 상세한 정보를 확인할 수 있으며 사용 방법을 파악하기 위해 활용됩니다.

 

kubectl explain 명령어 사용을 알아봅시다

 

 

 


 

명령어 형식

# kubectl explain {리소스} {필드} {옵션}

 

kubectl explain 명령어는 위와 같은 형식을 사용합니다.

 

특정 리소스의 구조와 가능한 필드를 파악하고, 특정 필드가 무엇을 의미하는지 설명을 제공합니다.
리소스의 하위 필드로 점진적으로 탐색할 수 있으며, Kubernetes API 버전에 맞는 최신 정보를 제공합니다.

 

 

 


출력 예시

# kubectl explain pods
KIND:       Pod
VERSION:    v1

DESCRIPTION:
    Pod is a collection of containers that can run on a host. This resource is
    created by clients and scheduled onto hosts.

FIELDS:
  apiVersion    <string>
    ##### 설명 #####

  kind  <string>
    ##### 설명 #####

  metadata      <ObjectMeta>
    ##### 설명 #####

  spec  <PodSpec>
    ##### 설명 #####

  status        <PodStatus>
    ##### 설명 #####

 

출력 필드 설명

  • KIND: 리소스의 유형(Type)을 나타내며 기본적인 배포 단위를 의미합니다.
  • VERSION: Kubernetes API의 버전을 나타내며 버전에 따라 리소스의 구조나 기능이 달라질 수 있습니다.
  • DESCRIPTION: 리소스의 전반적인 설명을 제공하며 목적, 동작 방식, 및 기본 개념을 간략히 설명합니다.
  • FIELDS: 리소스의 세부 필드 목록과 각 필드의 목적 및 설명을 제공하며 필드 이름, 데이터 유형 등을 설명합니다.

 

 


 

추가 옵션

--recursive 옵션을 사용하여 하위 필드 정보 한번에 보기

# kubectl explain pods.spec.containers  --recursive
KIND:       Pod
VERSION:    v1

FIELD: containers <[]Container>


DESCRIPTION:
    ##### 생략 #####

FIELDS:
  args  <[]string>
  command       <[]string>
  env   <[]EnvVar>
    name        <string> -required-
    value       <string>
    valueFrom   <EnvVarSource>
      configMapKeyRef   <ConfigMapKeySelector>
        key     <string> -required-
        name    <string>
        optional        <boolean>
      ##### 생략 #####

 

 

--api-version 옵션을 사용하여 특정 API 버전의 리소스 정보 확인

API 버전에 따라 빌드 정보가 다른 것을 확인할 수 있습니다.

# kubectl explain hpa.spec --api-version=autoscaling/v1

##### 생략 #####
FIELDS:
  maxReplicas   <integer> -required-
    ##### 생략 #####

  minReplicas   <integer>
    ##### 생략 #####

  scaleTargetRef        <CrossVersionObjectReference> -required-
    ##### 생략 #####

  targetCPUUtilizationPercentage        <integer>
    ##### 생략 #####


# kubectl explain hpa.spec --api-version=autoscaling/v2

##### 생략 #####
FIELDS:
  behavior      <HorizontalPodAutoscalerBehavior>
    ##### 생략 #####

  maxReplicas   <integer> -required-
    ##### 생략 #####

  metrics       <[]MetricSpec>
    ##### 생략 #####

  minReplicas   <integer>
    ##### 생략 #####

  scaleTargetRef        <CrossVersionObjectReference> -required-
    ##### 생략 #####

 

 

 

 


활용

kubectl explain 명령어의 가장 큰 활용 방법은 리소스 정의를 이해하고, YAML 파일을 작성하거나 디버깅할 때 매우 유용하다는 것입니다. 특히 리소스의 구조, 필드, 그리고 필드의 올바른 이름과 사용법 등을 상세히 확인할 수 있습니다.

 

필드의 리소스 타입이 <[]string>인지 <string>인지 구분하여 타입에 맞는 구조로 YAML 파일을 작성할 수 있습니다. 또한 하위 필드에 필요한 옵션 및 정보들을 확인하여 리소스를 생성하거나 디버깅할 때 유용하며 YAML 파일에서 오류가 발생했을 때, 잘못된 필드 이름이나 누락된 필드를 찾을 때 사용할 수 있습니다.

 

Kubernetes 공식 문서를 통해서 각 리소스의 필드에 대한 정보를 확인할 수 있지만, kubectl explain 명령어를 통해서도 상세하게 확인할 수 있으며 명령어를 통해 바로 확인할 수 있다는 장점이 있을 것 같습니다.

 

 

 


 

Kubernetes에서 kubectl explain 명령어를 통해 리소스 정의를 이해하고 활용하는 방법을 알아봤습니다.

 

kubectl explain 명령어는 Kubernetes에서 관리하는 리소스와 해당 필드의 구조, 데이터 타입, 그리고 사용 방법을 상세히 확인할 수 있도록 도와줍니다. 이를 통해 YAML 파일 작성 시 참고하거나, 디버깅 및 리소스 학습 시 유용하게 사용할 수 있습니다.

 

특정 리소스의 구조와 필드를 점진적으로 탐색할 수 있으며, --recursive 옵션을 통해 모든 하위 필드 정보를 한 번에 출력하거나, --api-version 옵션을 통해 API 버전에 따른 차이를 확인할 수 있습니다. 특히 필드의 데이터 타입(<[]string>, <string> 등)를 명확히 파악하여 YAML 파일을 올바르게 작성할 수 있고, 공식 문서를 참조하지 않아도 명령어를 통해 바로 리소스 정보를 확인할 수 있다는 장점이 있습니다.

 

지금까지 Kubernetes에서 kubectl explain 명령어의 사용법과 활용 방법에 대해 알아보는 시간을 가졌습니다.

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://kubernetes.io/docs/reference/kubectl/generated/kubectl_explain/

 

 

 

+ Recent posts