이 글은 아래 자료를 참고하여 작성되었습니다.
Udemy [Certified Kubernetes Administrator (CKA) with Practice Tests]
1. Labels과 Selectors란?
- 레이블(labels): 객체에 부착된 속성으로, 클래스, 종류, 색상 등의 정보를 포함. 여러 객체를 그룹화하고 식별하는 데 사용된다.
- 셀렉터(selectors): 특정 레이블 조건을 기반으로 객체를 필터링하는 도구. 레이블을 통해 정의된 속성을 바탕으로 특정 객체들을 선택 할 수 있다.
- 일반적인 사용 예:
- YouTube 비디오에 태그를 추가해 관련 비디오를 그룹화하고 쉽게 찾을 수 있도록 함
- 온라인 상점에서 제품에 레이블을 추가하여 색상, 종류, 가격대 등을 기준으로 필터링 가능
2. Kubernetes에서 Labels과 Selectors의 사용
- Kubernetes 객체
- Kubernetes에서 다양한 유형의 객체(Pod, Service, ReplicaSet, Deployment 등)를 생성할 수 있다
- 시간이 지나면서 클러스터에 많은 수의 객체가 쌓이기 때문에, 이를 효율적으로 관리할 필요가 있음
- 레이블을 통한 객체 그룹화
- 레이블은 Kubernetes의 모든 객체(Pod, Service, ReplicaSet, Deployment 등)에 부착할 수 있다.
- 객체를 그룹화하고 필터링하는 데 사용된다.
- 애플리케이션 이름, 환경(예: 'dev', 'prod'), 기능 등을 정의하여 특정 객체를 쉽게 찾고 관리할 수 있다
- 셀렉터를 통한 필터링
- 셀렉터는 특정 레이블 조건에 따라 객체를 필터링하는 도구이다.
- kubectl 명령어와 함께 셀렉터를 사용하여 특정 조건에 맞는 객체들을 선택할 수 있다.
- 셀렉터의 유형
- Equality-based Selectors: 특정 레이블의 값과 일치하거나 일치하지 않는 객체를 선택
(exkubectl get pods --selector app=nginx
- Set-based Selectors: 레이블의 값이 특정 집합에 속하는지 여부로 객체를 선택
(exkubectl get pods --selector 'environment in (dev, test)'
)
- Equality-based Selectors: 특정 레이블의 값과 일치하거나 일치하지 않는 객체를 선택
3. Kubernetes에서의 Labels와 Selectors 사용 예시
레이블과 셀렉터는 Kubernetes 내부적으로 객체 간의 관계를 설정하는 데 사용된다.
- Pod에 레이블 지정
- Pod 정의 파일의 metadata 섹션에 labels 추가 (키-값 형식)
- kubectl get pods --selector 명령어로 레이블 조건에 맞는 Pod 선택
- ReplicaSet과 Pod 연결
- Pod에 레이블 추가 후, ReplicaSet 정의 파일의 셀렉터를 사용해 Pod 그룹화
- ReplicaSet 정의 파일의 템플릿 섹션에 Pod 레이블 정의
- ReplicaSet 스펙의 셀렉터 필드를 사용해 Pod와 일치하도록 설정
- Service와 Pod 연결
- 서비스 정의 파일의 셀렉터가 ReplicaSet의 Pod 레이블과 일치하는 Pod 연결
- 셀렉터를 통해 트래픽이 특정 레이블을 가진 Pod로 전달되도록 설정
4. Annotations이란?
- Kubernetes 객체에 대한 부가적인 정보를 기록하기 위한 속성으로 객체의 동작에는 영향을 미치지 않는다.
- 주요 목적: 관리 및 참조를 위해 객체에 대한 메타데이터를 추가하는 데 사용된다. 예를 들어, 사람이 이해할 수 있는 설명이나 운영에 필요한 추가 정보를 제공한다.
- 사용 예:
- 툴 이름 및 버전: 객체가 사용 중인 도구의 이름과 버전 정보 기록
- 빌드 정보: 빌드 날짜나 빌드 번호 등 객체의 빌드 관련 정보 추가
- 연락처 정보: 유지보수 담당자의 연락처(이메일, 전화번호 등) 추가
- 기타 설명: 객체에 대한 설명이나 변경 이력 등 기록
5. selector를 사용하여 객체 조회해보기
# --selector or -l 옵션을 통해 필터링 가능
kubectl get pods --selector app=nginx
kubectl get pods -l app=nginx
# 여러 labels에 대해 필터링이 필요하면 ","로 연결
kubectl get pods --selector app=nginx,tier=front-end
# 해당되는 객체의 개수를 알고 싶으면 wc -l 사용
kubectl get pods --selector app=nginx --no-headers | wc -l
'Kubernetes' 카테고리의 다른 글
24. Scheduling - Taints & Tolerations (1) | 2024.11.24 |
---|---|
22. Scheduling - Manual Scheduling (0) | 2024.10.27 |
21. Core Concepts - Kube Proxy (1) | 2024.09.25 |
20. Core Concepts - Kubelet (3) | 2024.09.25 |
19. Core Concepts - Kube Scheduler (0) | 2024.09.25 |