23. Scheduling - Labels and Selectors

2024. 10. 27. 22:24·Kubernetes
이 글은 아래 자료를 참고하여 작성되었습니다.

Udemy [Certified Kubernetes Administrator (CKA) with Practice Tests]

 

1. Labels과 Selectors란?

  • 레이블(labels): 객체에 부착된 속성으로, 클래스, 종류, 색상 등의 정보를 포함. 여러 객체를 그룹화하고 식별하는 데 사용된다.
  • 셀렉터(selectors): 특정 레이블 조건을 기반으로 객체를 필터링하는 도구. 레이블을 통해 정의된 속성을 바탕으로 특정 객체들을 선택 할 수 있다.
  • 일반적인 사용 예:
    • YouTube 비디오에 태그를 추가해 관련 비디오를 그룹화하고 쉽게 찾을 수 있도록 함
    • 온라인 상점에서 제품에 레이블을 추가하여 색상, 종류, 가격대 등을 기준으로 필터링 가능

 

2. Kubernetes에서 Labels과 Selectors의 사용

  1. Kubernetes 객체
    • Kubernetes에서 다양한 유형의 객체(Pod, Service, ReplicaSet, Deployment 등)를 생성할 수 있다
    • 시간이 지나면서 클러스터에 많은 수의 객체가 쌓이기 때문에, 이를 효율적으로 관리할 필요가 있음
  2. 레이블을 통한 객체 그룹화
    • 레이블은 Kubernetes의 모든 객체(Pod, Service, ReplicaSet, Deployment 등)에 부착할 수 있다.
    • 객체를 그룹화하고 필터링하는 데 사용된다.
    • 애플리케이션 이름, 환경(예: 'dev', 'prod'), 기능 등을 정의하여 특정 객체를 쉽게 찾고 관리할 수 있다
  3. 셀렉터를 통한 필터링
    • 셀렉터는 특정 레이블 조건에 따라 객체를 필터링하는 도구이다.
    • kubectl 명령어와 함께 셀렉터를 사용하여 특정 조건에 맞는 객체들을 선택할 수 있다.
  4. 셀렉터의 유형
    • Equality-based Selectors: 특정 레이블의 값과 일치하거나 일치하지 않는 객체를 선택
      (ex kubectl get pods --selector app=nginx
    • Set-based Selectors: 레이블의 값이 특정 집합에 속하는지 여부로 객체를 선택
      (ex
      kubectl get pods --selector 'environment in (dev, test)')

 

3. Kubernetes에서의 Labels와 Selectors 사용 예시

레이블과 셀렉터는 Kubernetes 내부적으로 객체 간의 관계를 설정하는 데 사용된다.
  1. Pod에 레이블 지정
    • Pod 정의 파일의 metadata 섹션에 labels 추가 (키-값 형식)
    • kubectl get pods --selector 명령어로 레이블 조건에 맞는 Pod 선택
  2. ReplicaSet과 Pod 연결
    • Pod에 레이블 추가 후, ReplicaSet 정의 파일의 셀렉터를 사용해 Pod 그룹화
    • ReplicaSet 정의 파일의 템플릿 섹션에 Pod 레이블 정의
    • ReplicaSet 스펙의 셀렉터 필드를 사용해 Pod와 일치하도록 설정
  3. 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
'Kubernetes' 카테고리의 다른 글
  • 24. Scheduling - Taints & Tolerations
  • 22. Scheduling - Manual Scheduling
  • 21. Core Concepts - Kube Proxy
  • 20. Core Concepts - Kubelet
SerenaDev
SerenaDev
나의 기술블로그 입니다.
  • SerenaDev
    나의 기술블로그
    SerenaDev
    • 분류 전체보기 (33)
      • FastAPI (1)
      • Iceberg (6)
      • Kubernetes (24)
      • ETC (1)
      • 독서 (1)
  • hELLO· Designed By정상우.v4.10.0
SerenaDev
23. Scheduling - Labels and Selectors
상단으로

티스토리툴바