쿠버네티스에서 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레코드를 이용하여 파드를 구별
반응형
'Kubernetes' 카테고리의 다른 글
'쿠버네티스에 레디스 캐시 클러스터 구축기' 카카오 테크 내용 정리 (0) | 2023.08.12 |
---|---|
MySQL on Kubernetes 카카오 강연 내용 정리 (0) | 2023.08.12 |
Kubernetes : mysql-operator 개념 (0) | 2023.08.12 |
Kubernetes: 스토리지/네트워크 (0) | 2023.08.10 |