모음/[쿠버네티스 인 액션]

[쿠버네티스 인 액션] 3장. 파드 : 쿠버네티스에서 컨테이너 실행 - 레이블을 이용한 파드 구성/어노테이션/쿠버네티스 네임스페이스

ttoance 2024. 8. 30. 06:23

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

kubectl get po --show-labels

 


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 ns

 

kubectl get po --namespace kube-system

kubectl get po --namespace kube-system

 

 

1) 네임 스페이스 생성 

- 파일 작성 

kubernetes-in-action/Chapter03/custom-namespace.yaml at master · luksa/kubernetes-in-action (github.com)

 

kubernetes-in-action/Chapter03/custom-namespace.yaml at master · luksa/kubernetes-in-action

Code from the Kubernetes in Action book. Contribute to luksa/kubernetes-in-action development by creating an account on GitHub.

github.com

kubectl create -f custom-namespace.yaml

 

- kubectl create namespace 명령어 

kubectl create namespace custom-namespace

 

 

2) 다른 네임스페이스의 오브젝트 관리 

kubectl create -f kubia-manual.yaml -n custom-namespace

kubectl get po --all-namespaces

kubia-manual 이 custom-namespace, default 네임스페이스 2곳에 존재하는 것을 알 수 있다. 

 

반응형