갬미의 성장일기
[Kubernetes] Statefulset 관련 자료 본문
오늘 statefulset 을 활용하여 실습을 하다가 왜 svc 명을 맞춰줘야하는지 어느때 statefulset을 쓰는지 궁금했는데 아주 잘 정리 된 자료를 찾게 되어 기록한다
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=isc0304&logNo=221885403537
--> 스테이트풀셋의 포드 네트워크 ID를 유지하려면 헤드레스 서비스를 작성해야한다
따라서 스테이트풀셋의 yml 파일에 헤드리스 svc를 명시해야 한다
개별 Pod에 대한 디스크 볼륨 관리
- RS 기반의 디스크 볼륨 관리의 문제는 하나의 컨트롤러로 여러개의 Pod에 대한 디스크를 각각 지정해서 관리할 수 없는 문제가 있었는데, StatefulSet의 경우 PVC (Persistent Volume Claim)을 템플릿 형태로 정의하여, Pod 마다 각각 PVC와 PV를 생성하여 관리할 수 있도록 한다.
StatefulSet에 의해 관리되는 Pod가 장애로 인하거나 스케일링 (In/out)으로 인해서 Pod의 수가 늘거나 줄면 그에 연결되는 디스크 볼륨은 어떻게 될까?
예를 들어 아래 그림과 같이 Pod-1,2,3 이 기동되고 있고, 이 Pod들은 StatefulSet에 의해서 관리되고 있다고 가정하자. Pod들은 각각 디스크 볼륨 PV-1,2,3 을 마운트해서 사용하고 있다고 하자.
이때, Pod-3가 스케일인이 되서, 없어지게 되면, Pod는 없어지지면, 디스크 볼륨을 관리하기 위한 PVC-3는 유지 된다. 이는 Pod 가 비정상적으로 종료되었을때 디스크 볼륨의 내용을 유실 없이 유지할 수 있게 해주고, 오토 스케일링이나 메뉴얼로 Pod를 삭제했을때도 동일하게 디스크 볼륨의 내용을 유지하도록 해준다.
그러면 없앴던 Pod가 다시 생성되면 어떻게 될까? Pod가 다시 생성되면, Pod 순서에 맞는 번호로 다시 생성이 되고, 그 번호에 맞는 PVC 볼륨이 그대로 붙게 되서, 다시 Pod 가 생성되어도 기존의 디스크 볼륨을 그대로 유지할 수 있다.
'Algorithm > Troubleshooting' 카테고리의 다른 글
[vmmem] 메모리 점유율 문제 (0) | 2022.04.10 |
---|---|
[tomcat] CentOS 7에 tomcat 9 설치하기 (0) | 2022.04.06 |
[Linux] NFS 관련 참고자료 (0) | 2022.03.24 |
[Docker] nginx 포트포워딩에 대해 깨달은 점,, (0) | 2022.03.12 |
[docker] docker network 관련 명령어 참고 자료 (0) | 2022.03.10 |