본문 바로가기

Infra/쿠버네티스 입문

쿠버네티스 입문 (8) - 퍼시스턴트

728x90
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongodb
spec:
  selector:
    matchLabels:
      app: mongodb
  replicas: 1
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      containers:
      - name: mongodb
        image: mongo:3.6.5-jessie
        volumeMounts:
          - name: mongodb-persistent-storage
            mountPath: /data/db
      volumes:
        - name: mongodb-persistent-storage
          persistentVolumeClaim:
            claimName: mongo-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: fleetman-mongodb
spec:
  selector:
    app: mongodb
  ports:
    - name: mongoport
      port: 27017
  type: ClusterIP

- 몽고 디비 이미지를 가져와서 내 호스트 컴퓨터에 있는 도커와 마운트를 했다.

- 여기서 퍼시스턴트 볼륨을 이용해서 만드는 것이 핵심인데, 나중에 에저나 클라우드로 이관할 때 편하게 할 수 있다.

 

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mongo-pvc
spec:
  storageClassName: mylocalstorage
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-storage
spec:
  storageClassName: mylocalstorage
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/some new/directory/structure/"
    type: DirectoryOrCreate

- 하드 용량도 정할 수 있고, 단일 파드인지 복수 파드인지도 세팅이 가능하다. 그리고 이 볼륨은 스토리지 클래스로 매핑되기 때문에 Claim과 볼륨 다 지정해줘야 한다.

300x250