ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • k8s - Volume
    스마트팩토리 개발자 교육(23.05.08 ~ 23.10.27)7/Kubernetes 2023. 9. 26. 18:27

    Volume

    - 저장소를 공유하여 데이터를 사용하도록 한다

    - 데이터 저장을 위해 사용된다

    - pod가 삭제되어도 사라지지 않도록 한다

     

    1. emptyDir

    - pod 생성시 공유폴더를 만들어 준다

    - ***pod가 사라지면 파일에 저장된 내용도 사라진다

     

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-volume-1
    spec:
      containers:
      - name: container1
        image: kubetm/init
        volumeMounts:
        - name: empty-dir
          mountPath: /mount1
      - name: container2
        image: kubetm/init
        volumeMounts:
        - name: empty-dir
          mountPath: /mount2
      volumes:
      - name : empty-dir
        emptyDir: {}

    container1에 저장된 test.txt 파일

    container2에도 보이는 text.txt파일

    pod 삭제

    삭제된 파일

    2. hostPath

    - 노드를 지정하여 파일을 공유 받도록 한다

    - nodeSelector가 없으면 k8s 상황에 따라 다른 노드에 만들어 질 수 있다

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-volume-3
    spec:
      nodeSelector:
        kubernetes.io/hostname: node1 #공유 받을 노드이름
      containers:
      - name: container
        image: kubetm/init
        volumeMounts:
        - name: host-path
          mountPath: /mount1
      volumes:
      - name : host-path
        hostPath:
          path: /node-v
          type: DirectoryOrCreate

    pod-volume-3 의 container에서 test.txt파일을 만든다

    pod-volume-4 의 container에서 test.txt파일 확인한다

    3. PVC / PV

    - 외부 저장소에 있는 저장소를 지정하여 저장소 공유를 한다

    - pvc 로 외부 저장소의 storage를 나누고 accessModes 로 저장소 형식을 지정한다

    - pv에서 나눠진 pvc의 형태에 맞춰 만들다

    - pod는 pv에 맞춰 저장소를 공유 받는다

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-03
    spec:
      capacity:
        storage: 2G
      accessModes:
      - ReadWriteOnce
      local:
        path: /node-v
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - {key: kubernetes.io/hostname, operator: In, values: [k8s-node1]}
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-01
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1G
      storageClassName: ""
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-volume-3
    spec:
      containers:
      - name: container
        image: kubetm/init
        volumeMounts:
        - name: pvc-pv
          mountPath: /mount3
      volumes:
      - name : pvc-pv
        persistentVolumeClaim:
          claimName: pvc-01

    '스마트팩토리 개발자 교육(23.05.08 ~ 23.10.27)7 > Kubernetes' 카테고리의 다른 글

    k8s - namespace  (0) 2023.09.27
    k8s - configMap  (0) 2023.09.26
    k8s - service  (0) 2023.09.26
    k8s - pod  (0) 2023.09.26
    k8s : 특징  (0) 2023.09.22

    댓글

Designed by Tistory.