본문 바로가기
Kubernetes

Kubernetes : Statefulset/Headless 개념

by SE_123 2023. 8. 12.

쿠버네티스에서 Statefulset/Headless 개념은 자기만의 스토리지를 필요하는 분산 데이터 저장소에 적합합니다 .

01. Statefulset

1) Statefulset 개념

  • stateful: 관계의 상태를 유지하는 것(ex.TCP)
  • stateless: 관계의 상태를 유지하지 않는것( 저장x)(ex.UDP,Http)

Statefulset(↔ replicaset,deployment) : 쿠버네티스 pod 신원(파드이름,네트워크신원, 스토리지 관계)의 관계를 유지 설정 해주는 리소스

→ 애플리케이션의 안정적인 상태를 가지게 한다. 

2) Statefulset에서의 안전한 상태(↔deployment,replicaset)

파드 이름

  • replicaset은 파드가 삭제되면 새로운 이름으로 파드가 생성 된다.
  • statfulset은 파드이름이 {파드이름}-0부터 시작한다.
  • statfulset은 삭제한 파드는 삭제되었던 파드이름 그대로 생성한다.

네트워크 신원

  • replicaset의 hostname은 랜덤 값이면서 파드가 재실행될때마다 변경 된다.
  • statefulset은 파드가 재실행되어도 호스트네임이 같다.
    • • hostname 이름 규칙: $(statefulset name)-$(ordinal)
  • statefulset은 SRV 레코드가 설정
    • 파드마다 고유한 서브도메인(변경되지 않음)
    • 서브도메인은 쿠버네티스 서비스리소스 도메인(headless)을 가리킨다.
    • 서브도메인 이름 규칙: $(podname).$(servicename)

스토리지 관계

  • replicaset는 파드수가 증가하면 모든 파드가 동일한 pvc를 바라본다.
  • statefulset는 파드가 증가하면, 각 파드는 자기만의 pvc만든다.(재부팅시 동일)

 

02.Headless 서비스

1) Headless 개념

클라이언트가 원하는 파드로 접근 가능하도록 하는 서비스(네트워크 구성)

  • 쿠버네티스 서비스: 1개 이상 파드에게 네트워크를 랜덤으로 분산시키는 역할
  • 변하지 않는 파드 접근 주소가 필요(Statfulset-각 파드마다 고유한 네트워크 신원 보유)
  • A파드로 가고 싶으면 A파드로, B파드로 가고 싶으면 B파드로 접근 가능
  • clusterIP가 없음(→ clusterIP의 값을 None 으로 생성하면 생성가능)

2)headless서비스와 statefulset연동

사용자는 headless서비스를 이용하여 statefulset 파드를 선택해서 접근 가능

  • 파드 접근주소: <pod이름>.<headless클러스터 도메인주소>
  • headless서비스는 파드의 srv레코드를 이용하여 파드를 구별

 

 

 

반응형