Section 3-1. Labels, Selectors
udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.
Section03. Scheduling
Labels
- 시스템에 수많은 파드가 생길 경우 그것들을 조직화하는 메커니즘이 필요하다. 파드에서 개별적으로 작업하는 것이 아닌 조직화(라벨링)를 통해 특정 그룹에 속한 모든 파드를 단일 작업으로 실행할 수 있다.
- 라벨은 파드와 같은 리소스에 첨부하는 키/값 쌍이다. 라벨은 리소스의 특성을 식별하는데 사용될 수 있다
Labels를 정의하는 방법
- 라벨은 metadata.labels 밑에 들어간다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
apiVersion: v1
kind: Pod
metadata:
name:
simple-webapp
labels:
app: App1 # 두개의 라벨이 파드에
function: Front-end # 정의되어 있다.
spec:
containers:
- name: simple-webapp
image: simple-webapp
ports:
- containerPort: 8080
ReplicaSet을 통해 Labels를 정의하는 방법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name:
simple-webapp
labels: # ReplicaSet 자체에 정의된 라벨
app: App1
function: Front-end
spec:
replicas: 3
selector:
matchLabels: # ReplicaSet이 파드를 찾을 때 매칭하는 라벨
app: App1
template:
metadata:
labels:
app: App1 # 파드에 정의된 라벨
function: Front-end
spec:
- name: simple-webapp
image: simple-webapp
Label 사용하여 파드 조회하는 방법
- kubectl get po 명령에 –show-labels 옵션 사용하여 파드와 그 파드에 해당하는 라벨을 확인할 수 있다.
1
kubectl get po --show-labels
- 모든 라벨을 나열하지 않고 특정 라벨에 대해서만 보고싶을 경우 -L 스위치를 사용해 라벨을 지정하고 각 라벨을 지정한 열에 표시할 수 있다.
1
kubectl get po -L <특정 라벨 1>,<특정 라벨 2>
기존 파드에 라벨 생성 및 수정하는 방법
- 라벨을 기존 파드에 추가 및 수정할 수도 있다.
- 기존 라벨을 변경할 때는 –overwrite 옵션을 사용한다.
1
2
3
4
5
# 추가
kubectl label po <파드> <라벨>
# 수정
kubectl label po <파드> <변경할 라벨> --overwrite
Selectors
- 리소스에 부여된 라벨을 기반으로 검색할 수 있는 개념이다. 사용자는 라벨 셀렉터를 이용하여 리소스를 식별할 수 있다.
- 라벨 셀렉터를 이용하여 검색하는 방법은 두가지가 있다.
- 특정 키의 유무로 라벨 검색
- 특정 키와 값의 유무로 라벨 검색
Selector 사용하여 파드 조회하는 방법
1
kubectl get pods --selector app=App1
- Label이 app=App1에 해당하는 파드가 조회된다.
Annotation
- 리소스에 메타데이터를 할당할 수 있는 주석과 비슷한 개념이다.
- 정보 수집 목적으로 이름, 버전, 빌드 정보같은 다른 세부 사항을 기록하는데 사용된다.
1
2
3
4
5
6
7
8
9
10
11
12
apiVersion: v1
kind: Pod
metadata:
name: annotations-nasa
annotations:
imageregistry: "https://hub.docker.com/"
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
This post is licensed under CC BY 4.0 by the author.