happyso
study with happyso
happyso
전체 방문자
오늘
어제
  • 분류 전체보기 (302)
    • GIT (3)
    • 컴퓨터 기본 개념 (29)
    • 알고리즘 (125)
      • 알고리즘 문제 (115)
      • 알고리즘 개념 (10)
    • Go (2)
    • 클라우드 (54)
      • DevOps (4)
      • Kubernetes(쿠버네티스) (33)
      • AWS (6)
      • CKA (8)
    • 리눅스(Linux) (18)
      • 컨테이너(Container) (8)
    • Front (22)
      • JavaScript (2)
      • React (20)
    • Python (21)
      • Python 웹 크롤링 (11)
      • Django (7)
      • MachineLearning (3)
    • 데이터베이스 (6)
      • MariaDB (2)
      • MongoDB (4)
    • C언어 (5)
    • Trouble Shooting (2)
    • 네트워크 (8)
      • CCNA (5)
    • 보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • apply
  • replace
  • Patch
  • 15
  • kubernetes
  • 18
  • edit

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
happyso

study with happyso

클라우드/Kubernetes(쿠버네티스)

[쿠버네티스] 레이블과 애너테이션

2021. 6. 9. 00:30

레이블, 애너테이션 이란?

레이블과 애너테이션은 쿠버네티스에서 자원들의 메타데이터를 관리하는 데 사용한다.
레이블은 셀렉터와 함께 특정 레이블이 있는 자원들을 선택할 때 주로 사용한다.
애너테이션은 주석 성격의 메타데이터를 기록하는 데 사용한다.

레이블은 쿠버네티스 클러스터 안에서 사용자가 오브젝트를 생성할 때 해당 오브젝트를 구분하는 용도이다. 사용자가 임의로 원하는 값을 지정해서 사용한다.
애너테이션은 레이블처럼 사용자가 원하는 값을 설정하기보다 쿠버네티스 시스템에서 필요한 정보들을 표시하는 데 사용한다.

레이블

  • 키-값 쌍으로 구성
  • 사용자가 클러스터 안에서 오브젝트를 만들 때 메타데이터로 설정할 수 있다.
  • 레이블이 생성된 다음에도 언제든지 수정할 수 있다.
  • 레이블의 키는 쿠버네티스 안에서 컨트롤러들이 파드를 관리할 때 자신이 관리해야 할 파드를 구분하는 역할
  • 쿠버네티스는 레이블만으로 관리 대상을 구분하므로 특정 컨트롤러가 만든 파드라도 레이블을 변경하면 인식할 수 없다.
  • 컨트롤러와 파드를 느슨하게 결합하는 특징 때문에 쿠버네티스가 파드들을 관리할 때 유연성이 있다.
  • 노드에도 레이블을 설정할 수 있으므로 클러스터 안 노드들을 레이블로 구분한 다음 특정 레이블이 있는 노드에만 자원을 할당해 실행하는 것도 가능
  • 레이블 규칙
    • 63 글자를 넘지 않아야함
    • 시작과 끝 문자는 알파벳 대소문자 및 숫자여야함
    • 중간에는 대시(-), 밑줄(_), 점(.), 숫자 등이 올 수 있음
  • 특정 레이블을 선택할 때는 레이블 셀렉터를 사용한다.
    • 등호기반, 집합기반
  • 등호기반 셀렉터
    • 같은지(==) 다른지(!=)를 구분하는 연산자를 사용할 수 있다.
  • 집합기반 셀렉터
    • 여러 개 값을 조건으로 설정한 다음 해당 키가 있는 레이블값이 조건에 속하는지(in), 아닌지(not in)를 확인한다.

애너테이션

  • 레이블과 마찬가지로 키-값 쌍으로 구성
  • 레이블처럼 사용자가 설정할 수 있다.
  • 쿠버네티스 시스템이 필요한 정보들을 담았으며, 쿠버네티스 클라이언트나 라이브러리가 자원을 관리하는 데 활용한다.
  • 그래서 애너테이션의 키는 쿠버네티스 시스템이 인식할 수 있는 값을 사용한다.
  • 인그레스에서 필요한 설정을 애너테이션으로 정의할 수 있다.
  • ingress-nginx같은 인그레스 컨트롤러는 애너테이션으로 사용자가 직접 nginx에 필요한 설정들을 정의할 수 있다.
  • 그 외 사용자에게 필요한 정보들을 메모하는 용도로도 사용할 수 있다.
  • 릴리즈 정보, 로깅, 모니터링에 필요한 정보들, 하다못해 오브젝트의 담당자 정보나 비상 연락처를 적어둘 수도 있다.

레이블을 이용한 카나리 배포

  • 배포 방법에는 롤링업데이트, 블루/그린, 카나리등 여러 가지 방법이 있다.
  • 롤링업데이트
    • 배포된 전체 파드를 한꺼번에 교체하는 것이 아니라 일정 개수씩 교체하면서 배포한다.
    • 디플로이먼트의 기본 배포 방법
  • 블루/그린
    • 기존에 실행된 파드 개수와 같은 개수의 신규 파드를 모두 실행한 후 신규 파드가 정상적으로 실행됐는지 확인한다.
    • 그 후 트래픽을 한꺼번에 신규 파드 쪽으로 옮긴다.
    • 이것 역시 디플로이먼트를 이용할 수 있다.
  • 카나리
    • 옛날 광부들이 광산에 유독가스가 있는지 확인하려고 가스에 민감한 카나리아와 함께 광산에 들어간 사실에서 아이디어를 얻은 배포 방법
    • 신규 파드를 배포할 때 한꺼번에 앱 컨테이너 전체를 교체하지 않는다.
    • 기존 버전을 유지한 채로 일부 버전만 신규 파드로 교체한다.
    • 버그나 이상은 없는지, 사용자 반응은 어떤지 확인할 때 유용하다.
  • 쿠버네티스의 기본 디플로이먼트는 디플로이먼트에 속한 파드들을 하나씩이든 한꺼번이든 모두 교체하는 방식이므로 카나리 방법으로 배포하기에는 어려움이 있을 수 있다.
  • 하지만 레이블을 이용하면 쿠버네티스에서도 카나리 방법으로 배포할 수 있다.

'클라우드 > Kubernetes(쿠버네티스)' 카테고리의 다른 글

[쿠버네티스] 시크릿  (0) 2021.06.11
[쿠버네티스] 컨피그맵  (0) 2021.06.09
[쿠버네티스] 인그레스  (0) 2021.06.08
[쿠버네티스] 서비스  (0) 2021.06.07
[쿠버네티스] 컨트롤러(데몬세트, 스테이트풀세트, 잡, 크론잡)  (0) 2021.06.06
    '클라우드/Kubernetes(쿠버네티스)' 카테고리의 다른 글
    • [쿠버네티스] 시크릿
    • [쿠버네티스] 컨피그맵
    • [쿠버네티스] 인그레스
    • [쿠버네티스] 서비스
    happyso
    happyso

    티스토리툴바