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

쿠버네티스 Kubernetes 스테이트풀셋 1

두뚜 2021. 7. 20. 18:21

https://thenewstack.io/how-to-treat-your-kubernetes-clusters-like-cattle-not-pets/

 

How to Treat Your Kubernetes Clusters Like Cattle, Not Pets - The New Stack

The Cloud Native Computing Foundation sponsored this post. Michael Dell, founder, chairman and CEO of Dell Technologies, defined cloud not as a place, but “as a way of doing IT.” As IT becomes more and more central to what every company does, underst

thenewstack.io

 

# 불변의 인프라, 가변의 인프라

 

불변의 인프라

- 시간이 지남에 따라서 컨터이너 이미지에 변경사항이 일어나지 않는다

- 추가적으로 데이터가 생성이 되지 않는다

- 컨테이너와 같은 형태

- 교체하기 쉽다 (코드가 바뀌어야한다면 새로운 코드를 포함하고 있는 이미지를 만들어 이미지 교체만 하면된다)

- 컨테이너에 문제가 생기면 새로운 컨테이너를 만든다

- 가축 다루듯이 다룬다

 

변하는 인프라

-  운영체제를 업그레이드 해야한다 (VM, 베어메탈)

- 시간이 지남에 따라서 이미지가 변한다

- 고유한 상태를 가지고 있기떄문에 교체하기 쉽지 않다 (1:1로 교체 불가능)

- 바뀐내용을 저장하지 않으면 바뀐 내용이 다 없어지기 떄문에 기존의 이미지로 교체하기 쉽지 않다

- 상태라는것이 존재

- 애완동물처럼 다룬다

# 기존 컨트롤러의 문제점 (레플리케이션 컨트롤러, 레플리카셋)

각 별도의 볼륨을 사용 할 수 있는 방법이 없다. 분리된 저장소 볼륨을 사용하지 못하고, 파드의 고유한 상태 저장 불가

 

→ 파드마다 각각 다른 스토리지를 사용해 각각 다른 상태를 유지하기 위해 스테이트풀셋 리소스 이용

# 스테이트풀셋 (펫셋)

컨테이너 애플리케이션 상태를 관리하는데 사용하는 컨트롤러 (파드 배포, 복제본 제공,스케일링)

반려동물처럼 고유한 형태 고유한 이름 순서가 있다

 

# 파드의 배포

- 레플리카셋처럼 복제본을 제공하고 스케일링 한다

- 파드에 순서가 있다 , 기존에는 파드가 한꺼번에 생성 되었지만 스테이트풀셋에서는 파드가 순차적으로 생성 되고 삭제 된다

 

# 파드의 순서

기존에는 파드가 한꺼번에 생성 되었지만 스테이트풀셋에서는 파드가 순차적으로 생성 되고 삭제 된다

 

# 파드의 고유성

- 해당되는애가 죽으면 똑같은 새로운애 만들어진다

- 똑같은 네트워크, 또같은 스토리지(볼륨)에 연결 할 수 있다

- 이름에 숫자가 붙여진다 (0부터 차례대로)

 

# 주의 사항

- 파드에 사용할 스토리지는 PVC를 통해서만 가능 (미리 PV를 생성해 놓거나, StorageClass를 사용해 동적 프로비저닝 사용)

- 데이터의 안전을 보장하기 위해 스테이트풀셋을 삭제하거나 파드를 삭제하더라도 볼륨은 삭제되지 않음

- 파드의 고유한 네트워크 신원을 제공하기 위해 헤드리스 서비스가 필요

 

 

 

#  스테이트풀셋의 파드 이름

스테이트풀셋의 각 파드 이름은 컨트ㄹ러의 이름에 0부터 시작하는 색인이 붙는다

 

- 파드의 이름 형식

스테이트풀셋이름 - 숫자

ex) mysts-0 , mysts-1

 

- 스테이트풀셋의 파드 DNS 주소

파드 이름 . {Gorvernind_Service_Domain} . 네임스페이스 . svc . cluster . local

ex) mysts-0.mysts.default.svc.cluster.local

{Gorvernind_Service_Domain}은 statefulset.spec.serviceName에 선언하며 해당필드에 헤드리스 서비스의 이름 지정

 

 

# 스테이트풀셋의 스토리지 볼륨

- 고유한 파드가 만들어지고, 고유한 PVC가 만들어지면 스테이트풀셋이 관리한다

- statefulset.spec.volumeClaimTemplates 필드에 선언하며, 미리 PV를 준비하거나 StorageClass통해 PV를 생성한다

- 파드가 삭제되더라도 해당 볼륨은 안정적인 데이터 보존을 위해 자동으로 삭제되지 않는다

 

 

# 스테이트풀셋의 스케일링

- 3개의 복제본이 있는 스테이트풀셋 파드 : 0 → 1 → 2 순서대로 생성한다

- 파드를 스케일아웃 하기 전 기존 파드는 Running 및 Ready 상태여야 한다

- 파드가 스케일인에 의해 삭제 시 역순으로 삭제한다

 

 

#  헤드리스 서비스

 .spec.clusterIP를 None으로 설정해 헤드리스 서비스로 구성한다