반응형
1. 레이블 소개
1) 파드와 모든 다른 쿠버네티스 리소스를 조직화할 수 있는 기능으로,
2) 리소스에 첨부하는 키-쌍 값으로, 레이블 셀렉터를 사용해 리소스 선택할 때 활용
3) 마이크로서비스 예제
- app : 파드가 속한 애플리케이션. 구성 요소 혹은 마이크로서비스 지정
- rel : 파드에서 실행 중인 애플리케이션이 안정, 베타 혹은 카나리 릴리스인지 보여줌.
2. 파드 생성할 때 레이블 지정
apiVersion: v1
kind: Pod
metadata:
name: kubia-manual-v2
labels:
creation_method: maual
env: prod
spec:
containers:
- name: kubia
image: sootoance/kubia
ports:
- containerPort: 8080
protocol: TCP
kubectl create -f kubia-manual-wirh-labels.yaml
kubectl get po --show-labels
kubectl get po -L creation_method,env
3. 기존 파드 레이블 수정
kubectl label po kubia-manual creation_method=manual
kubectl label po kubia-manual-v2 env=debug --overwrite
4. 레이블 셀렉터
1) 레이블 셀렉터 기준
- 특정한 키를 포함하거나 포함하지 않는 레이블
- 특정한 키와 값을 가진 레이블
- 특정한 키를 갖고 있지만, 다른 값을 가진 레이블
2) 셀렉터 예시
kubectl get po -l creation_method=manual
kubectl get po -l env
kubectl get po -l '!env' -- env 레이블 가지고 있지 않은 파드
-- env in (prod, debug)
-- env no in (prod,debug)
kubectl get po -l 'env in (prod, debug)'
5. 특정 노드에 파드 스케쥴링
kubectl label node gke-kubia-85f6-node-0rrx gpu=true
모든 쿠버네티스 오브젝트에 리이블을 붙일 수 있기 때문에 노드에 gpu=true 레이블을 부착하고
nodeSelector 필드 추가해서 파드를 생성할때, 스케줄러는 gpu=true 레이블을 가지고 있는 노드에서 설정
apiVersion: v1
kind: Pod
metadata:
name: kubia-gpu
labels:
creation_method: maual
env: prod
spec:
nodeSelector:
gpu: "true"
containers:
- image: sootoance/kubia
name: kubia
6. 파드에 어노테이션 달기
1) 어노테이션
- 레이블과 거의 비슷하지만 식별 정보를 갖지 않음
- 유용하게 사용되는 경우는 파드나 다른 API 오브젝트에 설명을 추가하는 경우임
2) 어노테이션 추가 및 수정
kubectl annotate pod kubia-manual mycompany.com/someannotation="foo bor"
kubectl describe pod kubia-manual
7. 쿠버네티스 네임스페이스
kubectl get ns
kubectl get po --namespace kube-system
1) 네임 스페이스 생성
- 파일 작성
kubectl create -f custom-namespace.yaml
- kubectl create namespace 명령어
kubectl create namespace custom-namespace
2) 다른 네임스페이스의 오브젝트 관리
kubectl create -f kubia-manual.yaml -n custom-namespace
kubia-manual 이 custom-namespace, default 네임스페이스 2곳에 존재하는 것을 알 수 있다.
반응형