Kubernetes: Volumes

emptyDir

Volume tipe emptyDir merupakan sebuah shared folder yang hidup dalam sebuah pod. Jika sebuah pod gugur, maka data pada emptyDir juga akan ikut hilang. Namun jika container yang mengalami kegagalan, data pada emptyDir tidak akan hilang.

Yang dapat mengakses shared folder ini adalah container-container di dalam pod tersebut. Volume tipe ini biasanya digunakan untuk 1. File sharing antara container dalam sebuah pod. 2. Memory disk (tmpfs) yang dapat diakses oleh host.

apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  containers:
  - name: web
    image: nginx
    volumeMounts:
    - mountPath: /app
      name: emptydir-vol

  - name: db
    image: redis
    volumeMounts:
    - mountPath: /app
      name: emptydir-vol

  volumes:
  - name: emptydir-vol
#    emptyDir: {}
    emptyDir:
      medium: Memory
      sizeLimit: 1Gi

hostPath

Volume tipe hostPath merupakan sebuah shared folder yang hidup dalam sebuah node. Shared folder dan isinya akan tetap bisa di akses setelah pod-nya gugur.

Yang dapat mengakes shared folder ini adalah container-container dari pod yang hidup di dalam node tersebut. Pod yang memiliki tugas yang sama tetapi hidup di node yang berbeda, tidak dapat mengakses shared folder dari node lainnya.

apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
  - name: web
    image: nginx
    volumeMounts:
    - mountPath: /app
      name: hostpath-vol

  volumes:
  - name: hostpath-vol
    hostPath:
      path: /app
---
apiVersion: v1
kind: Pod
metadata:
  name: pod2
spec:
  containers:
  - name: web
    image: nginx
    volumeMounts:
    - mountPath: /app
      name: hostpath-vol

  volumes:
  - name: hostpath-vol
    hostPath:
      path: /app

NFS

apt update
apt install nfs-common
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  containers:
  - name: web
    image: nginx
    volumeMounts:
    - mountPath: /app
      name: nfs-vol
  volumes:
  - name: nfs-vol
    nfs:
      server: <your-nfs-ip-address>
      path: <your-nfs-mount-path>

iSCSI

apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  containers:
  - name: web
    image: nginx
    volumeMounts:
    - mountPath: /app
      name: iscsi-vol
  volumes:
  - name: iscsi-vol
    iscsi:
      targetPortal: <your-portal-ip-address>
      iqn: <your-iqn>
      lun: <lun-number> # 0, 1, ...
      fsType: ext4
      readOnly: true # Set to 'false' if read and write
    

References:


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *