StatefulSet 스케일링하기
StatefulSet 스케일링하기 (Scale a StatefulSet)
이 작업은 StatefulSet을 스케일링하는 방법을 보여 줘요. StatefulSet 스케일링은 레플리카 수를 늘리거나 줄이는 것을 말해요.
출처: 문서
본문
시작하기 전에
- StatefulSet은 쿠버네티스 버전 1.5 이상에서만 사용할 수 있어요. 쿠버네티스 버전을 확인하려면
kubectl version을 실행하세요. - 모든 상태 유지 애플리케이션이 깔끔하게 스케일링되는 것은 아니에요. StatefulSet을 스케일링할지 확신이 없다면 추가 정보를 위해 StatefulSet 개념 또는 StatefulSet 튜토리얼을 참고하세요.
- 상태 유지 애플리케이션 클러스터가 완전히 정상이라고 확신할 때만 스케일링을 수행해야 해요.
StatefulSet 스케일링하기
kubectl로 StatefulSet 스케일링하기
먼저 스케일링할 StatefulSet을 찾아요.
kubectl get statefulsets <stateful-set-name>
StatefulSet의 레플리카 수를 변경해요.
kubectl scale statefulsets <stateful-set-name> --replicas=<new-replicas>
StatefulSet에 제자리 업데이트하기
또는 StatefulSet에 제자리(in-place) 업데이트를 할 수도 있어요.
StatefulSet이 처음에 kubectl apply로 생성됐다면, StatefulSet 매니페스트의 .spec.replicas를 업데이트한 뒤 kubectl apply를 실행하세요.
kubectl apply -f <stateful-set-file-updated>
그렇지 않으면 kubectl edit으로 그 필드를 편집하세요.
kubectl edit statefulsets <stateful-set-name>
또는 kubectl patch를 사용하세요.
kubectl patch statefulsets <stateful-set-name> -p '{"spec":{"replicas":<new-replicas>}}'
문제 해결 (Troubleshooting)
스케일 다운이 제대로 동작하지 않음
관리하는 상태 유지 파드 중 하나라도 비정상(unhealthy)이면 StatefulSet을 스케일 다운할 수 없어요. 스케일 다운은 그 상태 유지 파드들이 실행 중이 되고 준비(ready)된 후에만 이뤄져요.
spec.replicas > 1이면 쿠버네티스는 비정상 파드의 원인을 판단할 수 없어요. 그것은 영구적인 결함 또는 일시적인 결함의 결과일 수 있어요. 일시적인 결함은 업그레이드나 유지보수로 인한 재시작으로 발생할 수 있어요.
파드가 영구적인 결함으로 비정상이라면, 결함을 고치지 않고 스케일링하면 StatefulSet 구성원이 올바르게 기능하는 데 필요한 최소 레플리카 수 아래로 떨어지는 상태로 이어질 수 있어요. 이로 인해 StatefulSet이 사용 불가능해질 수 있어요.
파드가 일시적인 결함으로 비정상이고 다시 사용 가능해질 수 있다면, 그 일시적 오류가 스케일 업/다운 작업을 방해할 수 있어요. 일부 분산 데이터베이스는 노드가 동시에 조인하고 떠날 때 문제가 생겨요. 이런 경우에는 애플리케이션 수준에서 스케일링 작업을 신중하게 생각하고, 상태 유지 애플리케이션 클러스터가 완전히 정상이라고 확신할 때만 스케일링을 수행하는 것이 좋아요.
더 알아보기 (Learn more)
- StatefulSet 삭제에 대해 더 배워 보세요.