소개
이 랩에서는 Kubernetes 리소스에 메타데이터 주석을 추가하거나 수정하는 데 사용되는 강력한 도구인 kubectl annotate 명령어를 살펴보겠습니다. 주석은 키 - 값 쌍 형식으로 Kubernetes 리소스에 임의의 메타데이터를 첨부하는 데 사용되며, Kubernetes 시스템 자체에서 사용하지 않을 수 있지만 외부 도구나 프로세스에서 활용할 수 있는 리소스에 대한 추가 정보를 저장하는 데 사용할 수 있습니다.
이 랩에서는 간단한 예시부터 시작하여 kubectl annotate 명령어의 보다 복잡한 사용 사례로 점차 이동하면서 다양한 시나리오에서 이 명령어의 다재다능함과 유용성을 보여드리겠습니다.
사전 요구 사항
- Kubernetes 개념 및 명령어에 대한 기본적인 이해.
kubectl이 설치 및 구성된 Kubernetes 클러스터 설정.
Minikube 클러스터 시작
리소스를 생성하기 전에 실행 중인 Kubernetes 클러스터가 필요합니다. Minikube 는 로컬 머신에서 실행되는 경량 Kubernetes 환경입니다.
작업 디렉토리로 이동:
터미널을 열고 기본 프로젝트 폴더로 이동합니다.
cd /home/labex/projectMinikube 시작:
Kubernetes 클러스터를 초기화하기 위해 Minikube 를 시작합니다.
minikube start- 이 명령어는 로컬 머신에 단일 노드 Kubernetes 클러스터를 설정합니다.
- Minikube 는 시스템 성능에 따라 시작하는 데 몇 분 정도 걸릴 수 있습니다.
Minikube 가 실행 중인지 확인:
Minikube 클러스터의 상태를 확인합니다.
minikube statuskubelet및apiserver와 같은 구성 요소가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 에 주석을 다는 간단한 예시로 시작합니다.
/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
kubectl annotate명령을 사용하여 Pod 에 주석을 추가합니다.
kubectl annotate pod my-pod my-annotation-key=my-annotation-value
- 주석이 Pod 에 추가되었는지 확인합니다.
kubectl describe pod my-pod | grep Annotations
출력에서 my-annotation-key 주석과 my-annotation-value 값을 확인할 수 있습니다.
여러 키 - 값 쌍으로 Pod 에 주석 추가
이 단계에서는 kubectl annotate 명령을 사용하여 Pod 에 여러 주석을 추가하는 방법을 살펴봅니다.
kubectl annotate명령을 사용하여 Pod 에 여러 주석을 추가합니다.
kubectl annotate pod my-pod my-annotation-key-1=my-annotation-value-1 my-annotation-key-2=my-annotation-value-2
- 주석이 Pod 에 추가되었는지 확인합니다.
kubectl describe pod my-pod | grep my-annotation-key
출력에서 my-annotation-key-1 및 my-annotation-key-2 주석과 해당 값을 모두 확인할 수 있습니다.
기존 주석 업데이트
이 단계에서는 kubectl annotate 명령을 사용하여 Pod 의 기존 주석을 업데이트하는 방법을 배웁니다.
kubectl annotate명령을 사용하여 Pod 의 기존 주석 값을 업데이트합니다.
kubectl annotate pod my-pod my-annotation-key-1=new-value --overwrite=true
- 주석이 Pod 에서 업데이트되었는지 확인합니다.
kubectl describe pod my-pod | grep my-annotation-key-1
출력에서 my-annotation-key-1의 업데이트된 값을 확인할 수 있습니다.
주석 삭제
이 단계에서는 kubectl annotate 명령을 사용하여 Pod 에서 주석을 제거하는 방법을 살펴봅니다.
--overwrite플래그와 함께kubectl annotate명령을 사용하여 Pod 에서 주석을 제거합니다.
kubectl annotate pod my-pod my-annotation-key-2- ## Note the trailing dash
- 주석이 Pod 에서 제거되었는지 확인합니다.
kubectl describe pod my-pod | grep my-annotation-key-2
출력에서 my-annotation-key-2 주석을 볼 수 없어야 합니다.
다른 리소스에 주석 추가
이 단계에서는 kubectl annotate 명령을 사용하여 Deployment 와 같은 다른 리소스에 주석을 추가하는 방법을 살펴봅니다.
/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
kubectl annotate명령을 사용하여 Deployment 에 주석을 추가합니다.
kubectl annotate deployment my-deployment my-annotation-key=my-annotation-value
- 주석이 Deployment 에 추가되었는지 확인합니다.
kubectl describe deployment my-deployment
출력에서 my-annotation-key 주석과 값 my-annotation-value를 확인할 수 있습니다.
요약
이 랩에서는 kubectl annotate 명령을 사용하여 Kubernetes 리소스에 주석을 추가, 업데이트 및 제거하는 방법을 배웠습니다. 단일 및 다중 키 - 값 쌍으로 Pod 에 주석을 추가하는 간단한 예제로 시작하여 기존 주석을 업데이트하고 Deployment 와 같은 다른 리소스에 주석을 추가하는 등 더 고급 사용 사례를 살펴보았습니다. 주석은 Kubernetes 리소스에 추가 메타데이터를 연결하고 외부 도구나 프로세스에 유용한 정보를 제공하는 강력한 도구가 될 수 있습니다.


