Kubernetes Annotate 명령어

KubernetesBeginner
지금 연습하기

소개

이 랩에서는 Kubernetes 리소스에 메타데이터 주석을 추가하거나 수정하는 데 사용되는 강력한 도구인 kubectl annotate 명령어를 살펴보겠습니다. 주석은 키 - 값 쌍 형식으로 Kubernetes 리소스에 임의의 메타데이터를 첨부하는 데 사용되며, Kubernetes 시스템 자체에서 사용하지 않을 수 있지만 외부 도구나 프로세스에서 활용할 수 있는 리소스에 대한 추가 정보를 저장하는 데 사용할 수 있습니다.

이 랩에서는 간단한 예시부터 시작하여 kubectl annotate 명령어의 보다 복잡한 사용 사례로 점차 이동하면서 다양한 시나리오에서 이 명령어의 다재다능함과 유용성을 보여드리겠습니다.

사전 요구 사항

  • Kubernetes 개념 및 명령어에 대한 기본적인 이해.
  • kubectl이 설치 및 구성된 Kubernetes 클러스터 설정.

Minikube 클러스터 시작

리소스를 생성하기 전에 실행 중인 Kubernetes 클러스터가 필요합니다. Minikube 는 로컬 머신에서 실행되는 경량 Kubernetes 환경입니다.

  1. 작업 디렉토리로 이동:

    터미널을 열고 기본 프로젝트 폴더로 이동합니다.

    cd /home/labex/project
  2. Minikube 시작:

    Kubernetes 클러스터를 초기화하기 위해 Minikube 를 시작합니다.

    minikube start
    • 이 명령어는 로컬 머신에 단일 노드 Kubernetes 클러스터를 설정합니다.
    • Minikube 는 시스템 성능에 따라 시작하는 데 몇 분 정도 걸릴 수 있습니다.
  3. Minikube 가 실행 중인지 확인:

    Minikube 클러스터의 상태를 확인합니다.

    minikube status
    • kubeletapiserver와 같은 구성 요소가 Running으로 나열되어 있는지 확인합니다.
    • 클러스터가 실행 중이지 않으면 minikube start를 다시 실행합니다.

Minikube 를 시작하는 데 문제가 발생하면 필요에 따라 minikube delete를 사용하여 환경을 재설정하십시오.

kubectl annotate 명령어 탐색

kubectl annotate 명령어는 Kubernetes 리소스의 주석을 업데이트하거나 제거하는 데 사용됩니다. 주석은 임의의 문자열 또는 구조화된 JSON 을 포함할 수 있는 메타데이터를 저장하는 키 - 값 쌍입니다. 주석은 도구 및 확장이 자체 데이터를 저장하는 데 유용합니다.

kubectl annotate에 사용할 수 있는 옵션을 보려면 다음 명령을 실행하십시오.

kubectl annotate -h

다음 출력을 볼 수 있습니다.

하나 이상의 리소스에 대한 주석을 업데이트합니다.

모든 Kubernetes 객체는 객체와 함께 주석으로 추가 데이터를 저장하는 기능을 지원합니다. 주석은
레이블보다 클 수 있고 구조화된 JSON 과 같은 임의의 문자열 값을 포함할 수 있는 키/값 쌍입니다. 도구 및
시스템 확장은 주석을 사용하여 자체 데이터를 저장할 수 있습니다.

--overwrite 가 설정되지 않으면 이미 존재하는 주석을 설정하려고 하면 실패합니다. --resource-version 이
지정되었고 서버의 현재 리소스 버전과 일치하지 않으면 명령이 실패합니다.

지원되는 리소스의 전체 목록은 "kubectl api-resources"를 사용하십시오.

예시:
  ## 'foo' pod 를 'description' 주석과 'my frontend' 값으로 업데이트합니다.
  ## 동일한 주석이 여러 번 설정된 경우 마지막 값만 적용됩니다.
  kubectl annotate pods foo description='my frontend'

  ## "pod.json"에서 유형 및 이름으로 식별된 pod 를 업데이트합니다.
  kubectl annotate -f pod.json description='my frontend'

  ## 'foo' pod 를 'description' 주석과 'my frontend running nginx' 값으로 업데이트하여 기존 값을 덮어씁니다.
  kubectl annotate --overwrite pods foo description='my frontend running nginx'

  ## 네임스페이스의 모든 pod 를 업데이트합니다.
  kubectl annotate pods --all description='my frontend running nginx'

  ## 리소스가 버전 1 에서 변경되지 않은 경우에만 'foo' pod 를 업데이트합니다.
  kubectl annotate pods foo description='my frontend running nginx' --resource-version=1

  ## 'description'이라는 주석이 있으면 제거하여 'foo' pod 를 업데이트합니다.
  ## --overwrite 플래그가 필요하지 않습니다.
  kubectl annotate pods foo description-

단일 키 - 값 쌍으로 Pod 에 주석 추가

이 단계에서는 kubectl annotate 명령을 사용하여 단일 키 - 값 쌍으로 Pod 에 주석을 다는 간단한 예시로 시작합니다.

  1. /home/labex/project 디렉토리에 pod.yaml이라는 파일을 만들고 다음 내용을 입력합니다.
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: nginx
      image: nginx

다음 명령으로 Pod 를 생성합니다.

kubectl apply -f pod.yaml
  1. kubectl annotate 명령을 사용하여 Pod 에 주석을 추가합니다.
kubectl annotate pod my-pod my-annotation-key=my-annotation-value
  1. 주석이 Pod 에 추가되었는지 확인합니다.
kubectl describe pod my-pod | grep Annotations

출력에서 my-annotation-key 주석과 my-annotation-value 값을 확인할 수 있습니다.

여러 키 - 값 쌍으로 Pod 에 주석 추가

이 단계에서는 kubectl annotate 명령을 사용하여 Pod 에 여러 주석을 추가하는 방법을 살펴봅니다.

  1. kubectl annotate 명령을 사용하여 Pod 에 여러 주석을 추가합니다.
kubectl annotate pod my-pod my-annotation-key-1=my-annotation-value-1 my-annotation-key-2=my-annotation-value-2
  1. 주석이 Pod 에 추가되었는지 확인합니다.
kubectl describe pod my-pod | grep my-annotation-key

출력에서 my-annotation-key-1my-annotation-key-2 주석과 해당 값을 모두 확인할 수 있습니다.

기존 주석 업데이트

이 단계에서는 kubectl annotate 명령을 사용하여 Pod 의 기존 주석을 업데이트하는 방법을 배웁니다.

  1. kubectl annotate 명령을 사용하여 Pod 의 기존 주석 값을 업데이트합니다.
kubectl annotate pod my-pod my-annotation-key-1=new-value --overwrite=true
  1. 주석이 Pod 에서 업데이트되었는지 확인합니다.
kubectl describe pod my-pod | grep my-annotation-key-1

출력에서 my-annotation-key-1의 업데이트된 값을 확인할 수 있습니다.

주석 삭제

이 단계에서는 kubectl annotate 명령을 사용하여 Pod 에서 주석을 제거하는 방법을 살펴봅니다.

  1. --overwrite 플래그와 함께 kubectl annotate 명령을 사용하여 Pod 에서 주석을 제거합니다.
kubectl annotate pod my-pod my-annotation-key-2- ## Note the trailing dash
  1. 주석이 Pod 에서 제거되었는지 확인합니다.
kubectl describe pod my-pod | grep my-annotation-key-2

출력에서 my-annotation-key-2 주석을 볼 수 없어야 합니다.

다른 리소스에 주석 추가

이 단계에서는 kubectl annotate 명령을 사용하여 Deployment 와 같은 다른 리소스에 주석을 추가하는 방법을 살펴봅니다.

  1. /home/labex/project 디렉토리에 다음 내용으로 deployment.yaml이라는 파일을 생성합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: nginx
          image: nginx

다음 명령으로 Deployment 를 생성합니다.

kubectl apply -f deployment.yaml
  1. kubectl annotate 명령을 사용하여 Deployment 에 주석을 추가합니다.
kubectl annotate deployment my-deployment my-annotation-key=my-annotation-value
  1. 주석이 Deployment 에 추가되었는지 확인합니다.
kubectl describe deployment my-deployment

출력에서 my-annotation-key 주석과 값 my-annotation-value를 확인할 수 있습니다.

요약

이 랩에서는 kubectl annotate 명령을 사용하여 Kubernetes 리소스에 주석을 추가, 업데이트 및 제거하는 방법을 배웠습니다. 단일 및 다중 키 - 값 쌍으로 Pod 에 주석을 추가하는 간단한 예제로 시작하여 기존 주석을 업데이트하고 Deployment 와 같은 다른 리소스에 주석을 추가하는 등 더 고급 사용 사례를 살펴보았습니다. 주석은 Kubernetes 리소스에 추가 메타데이터를 연결하고 외부 도구나 프로세스에 유용한 정보를 제공하는 강력한 도구가 될 수 있습니다.