Label과 Selector

    728x90

    Labels

    • Kubernetes의 각 object에 대해 필요에 따라 label attach 
      • ex. env: dev / app: nginx
    • metadata section 하위에 label이라는 이름의 field 생성 후 기입
      • 원하는 만큼 label attach 가능
    metadata:
      labels:
        env: dev
        app: nginx
    • ex) label이 있는 pod를 선택하기 위해 kubectl get po --selector app=App1과 같이 --selector 파라미터를 사용하여 filtering함

     

    Selectors

    Selector는 각 Kubernets Object들을 filtering하는데 사용

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80

     

    • Kubernetes object는 내부적으로 label과 selector를 사용하여 서로 다른 object를 함께 연결함
      • Deployment의 경우
        • metadata section 하위의 label field는 Deployment 자체의 label로 Deployment를 찾는 다른 object를 구성하는 경우에 사용됨
        • spec section 하위의 template field의 label은 pod에 구성된 label임
        • pod와 Deployment을 연결하기 위해 spec section 하위에 selector field 생성
          • 올바르게 일치하는 경우 single label이 적합
          • label은 같으나 기능이 다른 다른 pod가 있을 수 있다면 2개의 label을 명시해야 함
      • Service의 경우
        • selector를 사용하여 ReplicaSets의 manifest file 내 pod에 설정된 label을 일치시킴

     

    Annotations

    label과 selector가 object를 그룹화하고 선택하기 위해 사용되는 반면, annotation은 정보 제공 목적으로 다른 세부 정보를 기록하는 데 사용됨

    apiVersion: v1
    kind: Pod
    metadata:
      name: annotations-demo
      annotations:
        imageregistry: "https://hub.docker.com/"
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

     

    • 이름, 버전, 빌드 정보 등과 같은 도구에 대한 세부 정보나 일종의 통합 목적으로 사용될 수 있는 연락처, 세부 정보, 전화 번호, email ID 등이 이에 해당됨
    반응형

    댓글