레플리카셋은 파드 템플릿에서 파드의 복제본을 생성한다.
레플리카셋이 파드 복제본을 생성할 때 파드의 이름 및 ip주소만 다를 뿐, 나머지는 모두 똑같은 파드를 생성한다.
만약 파드가 PVC를 참조한다면?
→ 이 역시 가능하다면 똑같은 PVC를 연결하게 된다. 해당 PVC는 특정한 하나의 PV에 연결되어 있다.
즉, 항상 똑같은 볼륨에 연결한다.
여러 파드를 각각 별도로 관리
각각 파드를 다른 볼륨 및 PVC를 참조하는 파드를 생성하는 방법
→ 그러나 노드나 패드의 문제 발생시 모든 대응은 수동으로 해야하므로 적절한 해결책이 아님
여러 컨트롤러 구성
1을 해결하기위해 각각 컨트롤러를 구성, 각각의 컨틀롤러가 각각의 PVC를 사용하는 방식
→ 노드의 문제나 파드의 장애에 대비할 수 있지만, 각각의 레플리카셋은 별개의 리소스로 서로 연동되지 않는 레플리카셋을 운영해야한다는 단점 존재.
규모를 늘리려면 별도의 레플리카셋을 생성해야한다.
하나의 컨트롤러와 볼륨 디렉토리 분리
2를 해결하기 위해 하나의 컨트롤러만 운영하고, 각 파드가 하나의 PVC를 사용하는 대신 별도의 디렉터리를 마운트하는 방법
하나의 레플리카셋은 하나의 파드 템플릿을 사용하기 때문에 같은 볼륨을 연결
만약 가능하다면 각 파드가 별도의 디렉터리에 별도의 데이터를 사용할 수 있도록 할 수 있다.
→ 일반적으로 가능하지 않을 뿐만 아니라, 가능하다 하더라도 수동으로 관리해주어야함.
대부분의 스토리지는 RWO만 가능
레플리케이션 컨트롤러나 레플리카셋이 관리 하는 파드
가축은 죽거나 병에 걸리면 필요시 다른 가축을 사서 교체할 수 있다.
→ 교체된 가축은 기존의 가축과 이름도 다르고(랜덤하게 결정됨), 행동(IP)도 다름
⇒ 레플리케이션 컨트롤러나 레플리카셋은 상태를 저장하지 않는 Stateless이므로 항상 실행하는 파드의 정보가 똑같을 필요X
가축은 별도의 스토리지 따로 써야함, 기존의 스토리지는 안됨, 같은 스토리지 쓸 수 밖에 없음
StatefulSet이 관리하는 파드
애완동물은 죽으면 다른 애완동물로 교체 불가능
→ 애완동물을 대체하려면 생김새, 행동이 원래 애완동물과 같아야한다.
⇒ StatefulSet은 문제가 생긴 파드와 똑같은 파드로 대체(이름, IP가 같음)