GKE의 StatefulSet 정보

이 페이지에서는 Google Kubernetes Engine(GKE)에서 StatefulSet 객체를 사용하는 방법을 설명합니다. 또한 스테이트풀(Stateful) 애플리케이션 배포에 대해서도 설명합니다.

StatefulSet 정보

StatefulSet는 예약된 위치와 관계없이 GKE가 유지보수하는 고유한 영구 ID 및 안정적인 호스트 이름이 포함된 일련의 포드를 나타냅니다. 모든 특정 StatefulSet 포드의 상태 정보 및 기타 복원력이 우수한 데이터는 StatefulSet의 각 포드와 연결된 영구 볼륨에서 유지관리됩니다. StatefulSet 포드는 언제든지 다시 시작할 수 있습니다.

스테이트리스(Stateless) 애플리케이션에는 배포를 사용하세요.

StatefulSet는 GKE 및 Kubernetes에서 유사하게 작동합니다. 이 문서에서는 GKE 관련 고려사항을 설명합니다. StatefulSet의 작동 방식을 알아보려면 StatefulSet에 대한 Kubernetes 문서를 참조하세요.

StatefulSet의 네트워킹 계획

StatefulSet는 PersistentVolume 및 고유한 네트워크 ID(호스트 이름) 형식으로 영구 스토리지를 제공합니다. 다음 표에서는 애플리케이션 운영자가 StatefulSet를 구성할 때 알아야 할 주의사항을 포함되어 있습니다.

네트워킹 주의사항 설명 권장사항
고정 IP 주소 대신 GKE 서비스

포드 복제본에는 고유한 서수 색인이 있고, 복제본당 볼륨과 네트워크 ID(호스트 이름)가 지원되지만, GKE가 포드를 다시 예약하거나 삭제하면 복제본에 할당된 IP 주소가 변경될 수 있습니다.

네트워킹 문제를 완화하려면 아키텍처에서 Kubernetes 서비스 리소스를 사용해야 합니다. 자세한 내용은 Kubernetes 서비스 유형을 참조하세요.

헤드리스 서비스

초기화되면 StatefulSet는 일치하는 헤드리스 서비스와 페어링됩니다.

서비스의 `metadata.name`이 StatefulSet의 serviceName 필드와 일치하는지 확인하세요. 이렇게 하면 애플리케이션의 각 포드를 고유하고 잘 정의된 네트워크 주소로 처리할 수 있습니다. 또한 헤드리스 서비스는 StatefulSet의 각 복제본에 대해 다중 IP 레코드를 제공하므로 전체 피어 검색이 가능합니다.

피어 검색

스테이트풀(Stateful) 애플리케이션이 완전한 가용성으로 기능하려면 최소 복제본 수(쿼럼)가 필요합니다.

포드가 비정상 종료되거나 다시 예약되거나 삭제될 수 있으므로 StatefulSet의 각 복제본은 쿼럼을 종료하고 다시 조인할 수 있어야 합니다. 피어링이 필요한 애플리케이션에는 Kubernetes의 헤드리스 서비스를 통해 다른 피어를 검색할 수 있는 기능이 있어야 합니다.

준비 프로브 및 활성 프로브를 기반으로 하는 상태 점검

해당하는 경우 애플리케이션이 준비, 활성, 시작 프로브를 적절하게 구성해야 합니다. 각 프로브의 제한 시간은 애플리케이션 요구사항에 따라 달라집니다.

준비 프로브의 경우 다음 권장사항에 따라 트래픽을 처리할 준비가 되면 애플리케이션을 준비 상태로 표시합니다.

  • 활성 프로브: 활성 프로브를 사용하여 컨테이너가 정상인지 여부를 알릴 수 있습니다. 예를 들어 데이터베이스 복제본은 활성 프로브를 사용하여 교착 상태 등에서 GKE가 복제본을 다시 시작해야 함을 나타낼 수 있습니다.
  • 준비 프로브: 준비 프로브를 사용하여 복제본이 트래픽 처리를 일시적으로 사용하지 못하도록 삭제할 수 있습니다. 예를 들어 백업을 수행해야 하는 데이터베이스 복제본이 있는 경우 준비 프로브를 사용하여 요청 수신을 일시적으로 중지할 수 있습니다.
  • 시작 프로브: 장기 실행 초기화가 완료될 때까지 시작 프로브를 사용하여 상태 점검을 지연시킬 수 있습니다. 예를 들어 데이터베이스 복제본이 있는 경우 시작 프로브를 사용하여 디스크에서 저장된 데이터가 초기화될 때까지 기다릴 수 있습니다.

프로브에 대한 자세한 내용은 활성, 준비, 시작 프로브 구성을 참조하세요.

StatefulSet 작업

GKE 클러스터에 StatefulSet를 배포하고 상호작용하는 방법은 StatefulSet 기본 사항에 대한 Kubernetes 문서를 참조하세요.

다음 단계