Kubernetes/Udemy - CKAD with Tests

Storage in Stateful sets

비번변경 2021. 9. 4. 22:11

pv/pvc 흐름
출처 : https://blog.knoldus.com/how-to-create-pv-and-pvc-in-kubernetes/

관리자는 PV로 볼륨을 생성한 뒤, 사용자는 PVC로 포드 내에서 볼륨을 사용할 수 있다.

또는 스토리지 클래스를 정의하여 provisioner를 이용해 볼륨을 자동으로 프로비저닝할 수 있다.

 

Stateful Set

yaml 형식의 정의 파일에서 같은 PVC를 설정하면, Stateful Set에서 생성한 모든 포드가 같은 볼륨을 사용한다.

여러 포드 또는 애플리케이션의 여러 인스턴스가 같은 스토리지를 공유하고 접근하는 경우에 해당한다.

 

하지만 각 포드에 별도의 볼륨이 필요한 경우, 즉 데이터 공유를 하지 않는 경우에는 각 포드에 로컬 스토리지가 필요하다.

 

volumeClaimTemplete

배열이기 때문에 여러 템플릿을 지정할 수 있다.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  replicas: 3
  selector:
    matchLabels:
      app: mysql
  templete:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: data-volume
  volumeClaimTempletes:
  - matadata:
    name: data-volume
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: google-storage
      resources:
        requests:
          storage: 500Mi

Stateful set이 생성되면 첫번째 포드가 생성되고, 포드가 생성되는 동안 PVC가 스토리지 클래스에 연결된다. 스토리지 클래스는 볼륨을 프로비저닝한 다음 PV를 생성하고, PV를 볼륨과 연결한 뒤 PVC를 PV에 바인딩한다.

그리고 다음 포드가 생성된다.

 

포드가 삭제되는 경우,

노드에 재생성이 스케쥴링된다. PVC 또는 연결된 볼륨은 자동 삭제하지 않으며 새 포드에 연결된다.

statefulset pvc

728x90