샤인의 IT (막 적는) 메모장

[Kubernetes 기본 정리] Label & Annotation (Object Field Selector 추가) 본문

Container/Kubernetes 기본

[Kubernetes 기본 정리] Label & Annotation (Object Field Selector 추가)

신샤인 2022. 1. 7. 12:27
반응형

Label

Label은 Object에 첨부된 키와 값의 쌍이다.

 

Object의 특성을 식별하는 사용하지만 시스템에 직접적인 의미는 없다.

 

유효한 Label값

63자 이하, 시작과 끝은 영숫자, '-', '_', '.'  사용 가능

...
metadata:
  name: my-pod
  labels:
    app: my-app
spec:
...

 

 

 

Annotation

Annotation은 임의의 비-식별 메타데이터를 오브젝트에 첨부할 수 있다.

키와 값은 문자열이어야 하며 각각 기록할 수 있는 정보들은 다르게 사용할 수 있다.

예를 들어

빌드 정보, 릴리스 날짜, 타임스탬프, Git 정보, 디버깅 정보 등등.. 개발자가 추가할 수 도 있고 다른 오픈소스에서도 해당 어노테이션을 통하여 설정정보를 입력하기도 한다.

(Annotation이 굳이 확인 정보만 들어가는 것은 아님!)

...
metadata:
  name: my-pod
  annotations:
    imageregistry: "https://hub.docker.com"
...

 

Field Selector

오브젝트의 필드값에 따라 쿠버네티스 리소스를 선택하기 위해 사용함

필드셀렉터는 리소스 필터 역할을 함

#오브젝트 필드 계층 구조를 순서대로 정의한다.

#YAML 파일 내 status.phase 값이 Running인 파드를 확인하기 위해 K8s API 요청
kubectl get pods --field-selector status.phase=Running

#연산을 이용할 수 있다. ('=', '==', '!=') =와 ==는 동일하다.
#default 네임스페이스를 제외한 모든 서비스를 확인
kubectl get service --all-namespaces --field-selector metadata.namespace!=default

#연계하여 사용 가능(기본 AND 연산)
#Running 상태가 아니며 restartPolicy가 Always로 설정된 파드를 확인
kubectl get pod --field-selector=status.phase!=Running,spec.restartPolicy=Always
반응형
Comments