Kubernetes 스테이트풀셋(StatefulSet)의 정의 및 사용방법
※ 본 내용은 「컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 - 길벗」를 참고하여 작성하였습니다.
쿠버네티스를 사용하다보면 파드가 만들어지는 이름과 순서를 예측해야 할 때가 있습니다.
주로 마스터-슬레이브 구조 시스템(Redis, Zookeeper, Cassandra, MongoDB 등)에서 필요합니다.
스테이트풀셋(StatefulSet)은 volumeClaimTemplates기능을 사용해 PVC를 자동으로 생성할 수 있고,
각 파드가 순서대로 생성되기 때문에 고정된 이름, 볼륨, 설정 등을 가질 수 있습니다.
아래 오브젝트 스펙을 실행하면 순서대로 파드가 생성됩니다.
kubectl apply -f ./nfs-pvc-sts.yaml
# nfs-pvc-sts.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nfs-pvc-sts
spec:
replicas: 4
serviceName: sts-svc-domain #statefulset need it
selector:
matchLabels:
app: nfs-pvc-sts
template:
metadata:
labels:
app: nfs-pvc-sts
spec:
containers:
- name: audit-trail
image: sysnet4admin/audit-trail
volumeMounts:
- name: nfs-vol # same name of volumes's name
mountPath: /audit
volumes:
- name: nfs-vol
persistentVolumeClaim:
claimName: nfs-pvc
생성한 스테이트풀셋에 expose를 바로 실행하면 에러가 발생(expose는 스테이트풀셋 미지원)하므로,
별도 파일로 로드밸런서 서비스를 작성, 실행해아 합니다.
kubectl apply -f ./nfs-pvc-sts-svc.yaml
# nfs-pvc-sts-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: nfs-pvc-sts-svc
spec:
selector:
app: nfs-pvc-sts
ports:
- port: 80
type: LoadBalancer
위 코드를 통해 스테이트풀셋을 노출시킬 수 있습니다.
아래와 같이 접속을 확인할 수 있습니다.
아래 코드를 통해 파드에 접속하고, /audit -l로 새로 접속한 파드의 정보가 추가되었는지 확인합니다.
kubectl exec -it nfs-pvc-sts-0 -- /bin/bash
스테이트풀셋 삭제는 kubectl delete statefulset <스테이트풀셋명> 으로 할 수 있습니다.
kubectl delete statefulset <스테이트풀셋명>
kubectl delete statefulset nfs-pvc-sts
반응형
'Data Engineering > docker, kubernetes(k8s)' 카테고리의 다른 글
Docker 네트워크 요청의 출발지와 목적지 및 전달과정 (0) | 2024.12.24 |
---|---|
Docker 볼륨, 바인드 마운트 개념 및 실행 (0) | 2024.12.23 |
Kubernetes LoadBalancer _ On-premise 기반 로드밸런서 (MetalLB), HPA (1) | 2024.12.20 |
Kubernetes 서비스의 개념과 인그레스 (0) | 2024.12.19 |
Kubernetes 노드/파드 운영을 위한 명령어(생성, 변경, 삭제, replica, cordon, drain) (1) | 2024.12.18 |
댓글