스테이트풀셋(StatefulSet) 확장하기
이 작업은 스테이트풀셋을 확장하는 방법을 보여준다. 스테이트풀셋 확장은 레플리카 수를 늘리거나 줄이는 것을 의미한다.
시작하기 전에
스테이트풀셋은 쿠버네티스 버전 1.5 이상에서만 사용할 수 있다. 쿠버네티스 버전을 확인하려면
kubectl version
을 실행한다.모든 스테이트풀 애플리케이션이 제대로 확장되는 것은 아니다. 스테이트풀셋을 확장할지 여부가 확실하지 않은 경우에 자세한 내용은 스테이트풀셋 또는 스테이트풀셋 튜토리얼을 참조한다.
스테이트풀 애플리케이션 클러스터가 완전히 정상이라고 확신할 때만 확장을 수행해야 한다.
스테이트풀셋 확장하기
kubectl을 사용하여 스테이트풀셋 확장
먼저 확장하려는 스테이트풀셋을 찾는다.
kubectl get statefulsets <stateful-set-name>
스테이트풀셋의 레플리카 수를 변경한다.
kubectl scale statefulsets <stateful-set-name> --replicas=<new-replicas>
스테이트풀셋 인플레이스(in-place) 업데이트
대안으로 스테이트풀셋에 인플레이스 업데이트를 수행할 수 있다.
스테이트풀셋이 처음에 kubectl apply
로 생성된 경우,
스테이트풀셋 매니페스트의 .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>}}'
트러블슈팅
축소가 제대로 작동하지 않음
스테이트풀셋에서 관리하는 스테이트풀 파드가 비정상인 경우에는 스테이트풀셋을 축소할 수 없다. 축소는 스테이트풀 파드가 실행되고 준비된 후에만 발생한다.
spec.replicas > 1인 경우 쿠버네티스는 비정상 파드의 원인을 결정할 수 없다. 영구적인 오류 또는 일시적인 오류의 결과일 수 있다. 일시적인 오류는 업그레이드 또는 유지 관리에 필요한 재시작으로 인해 발생할 수 있다.
영구적인 오류로 인해 파드가 비정상인 경우 오류를 수정하지 않고 확장하면 스테이트풀셋 멤버십이 올바르게 작동하는 데 필요한 특정 최소 레플리카 수 아래로 떨어지는 상태로 이어질 수 있다. 이로 인해 스테이트풀셋을 사용할 수 없게 될 수 있다.
일시적인 오류로 인해 파드가 비정상 상태이고 파드를 다시 사용할 수 있게 되면 일시적인 오류가 확장 또는 축소 작업을 방해할 수 있다. 일부 분산 데이터베이스에는 노드가 동시에 가입 및 탈퇴할 때 문제가 있다. 이러한 경우 애플리케이션 수준에서 확장 작업에 대해 추론하고 스테이트풀 애플리케이션 클러스터가 완전히 정상이라고 확신할 때만 확장을 수행하는 것이 좋다.
다음 내용
- 스테이트풀셋 삭제하기에 대해 더 배워보기