본문 바로가기
CKA

[Udemy CKA - Core Concepts] Labels and Selectors

by 2won2 2024. 8. 22.

 

Labels and Selectors

 

  • 리소스들을 식별하고 관리
  • Labels
    • metadata 아래에 작성
    • 리소스에 부여되는 키-값 쌍으로, 리소스를 식별하고 그룹화하는 데 사용
    • ReplicaSet의 Yaml 파일에서 template 아래의 labels는 pod의 label
      • metadata의 label이 ReplicaSet의 label
apiVersion: v1
kind:
metadata:
  name:
  labels:
    app: frontend
    env: production
spec:

 

  • Selectors
    • spec 아래에 작성
apiVersion: v1
kind: Service
metadata:
  name:
spec:
  selector:
    app: frontend
  ports:
  - protocol:
    port:
    targetPort:

 

 

 

Practice

  • Pod label 확인
    • kubectl get pods --show-labels
  • env가 dev인 Pod는 몇개인가?
    • kubectl get pods --selector env=dev OR kubectl get pods -l env=dev
    • -l : --selector의 짧은 형태
    • kubectl get pods -l env=dev | wc -l
    • wc -l : wordcount, 텍스트 파일이나 명령어의 출력 결과에서 단어, 줄, 또는 문자 수를 세는 데 사용
    • | 기호 : 한 명령어의 출력을 다른 명령어의 입력으로 전달할 때 사용(첫 번째 명령어의 출력을 두 번째 명령어로 전달)
    • 세어지는 label은 7개이지만, wc로 한 경우 8개 나옴. 이 경우는 header도 추가돼서 나온 것이므로, 헤더를 제거해야 정확한 갯수를 구할 수 있음
    • kubectl get po -l env=dev --no-headers | wc -l



  • prod 라벨을 가진 POD, ReplicaSet 등 다른 오브젝트의 개수 구하기
    • kubectl get all -l env=prod
  • env가 prod이고, bu가 finance이며, tier가 frontend인 Pod 구하기
    • kubectl get po -l env=prod,bu=finance,tier=frontend
    • kubectl get po --show-labels의 결괏값에서 찾기

 

  • 정의된 replicaset-definition-1.yaml를 가지고 Replicaset을 만들기
    • matchLabels와 template의 labels에 있는 tier 라벨이 동일해야 함
    • ReplicaSet은 지정된 라벨에 일치하는 POD들을 관리하기 때문에
    • ReplicaSet은 matchLabels에 지정된 라벨을 기준으로 해당 라벨을 가진 POD들을 관리
  •  
 

수정전

 

수정후