Kubernetes에서 StatefulSet를 생성하는 방법
이 페이지에서
- 전제 조건
- 우리가 할 일\n
- Statefulset 만들기
- 결론
StatefulSet에는 고유하고 영구적인 ID와 안정적인 호스트 이름이 있는 Pod 집합이 포함되어 있습니다. 포드 템플릿은 해당 포드에 대한 사양을 포함하는 Statefulset에서 사용되며 포드는 이 사양을 사용하여 생성됩니다. Kubernetes에서 Statefulset를 사용하여 상태 저장 애플리케이션과 클러스터 애플리케이션을 배포할 수 있습니다. 컨테이너 이미지와 볼륨을 포함하는 Pod 사양을 변경하여 StatefulSet를 업데이트할 수 있습니다.
응용 프로그램에 다음 속성이 필요한 경우 StatefulSet를 사용할 수 있습니다.
- 안정적이고 고유한 네트워크 식별자.\n
- 안정적이고 지속적인 스토리지.
- 정렬되고 정상적인 배포 및 확장.\n
- 정렬되고 자동화된 롤링 업데이트.\n
N개의 복제본이 있는 StatefulSet의 경우 Pod가 배포될 때 {0..N-1}부터 순차적으로 생성됩니다. Pod가 삭제되면 역순으로 {N-1..0}부터 종료됩니다.
Statefulset에 대한 자세한 내용을 보려면 여기를 클릭하십시오.
이 기사에서는 Nginx 포드의 복제본으로 Statefulset를 생성합니다. Pod에서 작업을 수행하여 삭제 및 생성 방법을 확인합니다.
전제 조건
<올 스타일=텍스트-정렬:왼쪽>
Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu 18l04 EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.\n
우리가 할 일
<올 스타일=텍스트-정렬:왼쪽>
Statefulset 만들기
파일을 만들고 그 안에 다음 Statefulset 정의를 추가합니다.
apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 3 template: metadata: labels: app: nginx spec: terminationGracePeriodSeconds: 10 containers: - name: nginx image: k8s.gcr.io/nginx-slim:0.8 ports: - containerPort: 80 name: web

이 예에서
nginx
라는 헤드리스 서비스는 네트워크를 제어하는 데 사용됩니다.\n- web이라는 이름의 StatefulSet에는 고유한 포드에서 실행될 nginx 컨테이너의 3개 복제본이 있습니다.\n
- 버전이 slim:0.8인 nginx 이미지는 Nginx를 배포하는 데 사용됩니다.\n
Statefulset을 생성하려면 다음 명령을 실행합니다.

다음 2개의 명령을 실행하여 위 단계에서 생성한 Statefulset 및 Service를 나열합니다.

다음 명령을 사용하여 포드를 가져오고 포드 이름에 접미사로 번호가 있는 포드를 확인합니다.

Statefulset의 전체 세부 정보를 얻으려면 다음 명령을 실행합니다.

이제 포드를 삭제하고 새 포드가 생성된 후에도 이름이 어떻게 유지되는지 살펴보겠습니다.
생성 시 새 포드에 할당되는 이름을 확인하기 위해 2개의 포드를 삭제합니다.

위의 스크린샷에서 Pod를 삭제한 후에도 새로 생성된 Pod의 이름이 같은 것을 볼 수 있습니다.
결론
이 기사에서는 Statefulset을 만들고 작업을 수행하여 세부 정보를 확인했습니다. 또한 포드를 삭제하여 포드 이름이 어떻게 유지되고 삭제 후 새로 생성된 포드에 동일한 이름이 할당되는지 확인했습니다.