본문 바로가기

Cloud/Kubernetes

NFS를 볼륨으로 사용하는 Pod 만들기 (2)

- StorageClass 생성하지 않아도 된다.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
spec:
  capacity:
    storage: 1Gi
    #  storageClassName: X
  persistentVolumeReclaimPolicy: Retain
  accessModes:
  - ReadWriteOnce
  nfs:
    server: 192.X.X.X
    path: '/nfs'
    readOnly: false

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nfs-pvc
spec:
        #  storageClassName: X
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

StorageClassName 주지않아도 된다.

root@test:~/nfs-test# kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM                            STORAGECLASS      REASON   AGE
nfs-pv                                     1Gi        RWO            Retain           Bound      default/nfs-pvc                                             11m

root@test:~/nfs-test# kubectl get pvc
NAME      STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
nfs-pvc   Bound    nfs-pv   1Gi        RWO                           11m

바운드가 잘 된 것을 확인할 수 있다. 포드에 연결할 때에는 아래와 같이 사용한다.

apiVersion: v1
kind: Pod
metadata:
  name: test
  labels:
    app: test
spec:
  volumes:
  - name: nfs-pvc
    persistentVolumeClaim:
      claimName: nfs-pvc
  containers:
  - image: centos:6.5
    imagePullPolicy: IfNotPresent
    name: test
    volumeMounts:
    - mountPath: /var/www/html
      name: nfs-pvc

php 깔린 centos가 있어서 mount해주었다. 포드에 들어가서 파일 생성 이후 연결을 확인한다.

root@test:~/nfs-test# kubectl exec -it test bash
[root@test /]# cd /var/www/html/
[root@test html]# ls
a.txt  hello.php
[root@test html]# touch b.txt
[root@test html]# ls
a.txt  b.txt  hello.php
[root@test html]# exit
exit
root@test:~/nfs-test# cd /nfs
root@test:/nfs# ls
a.txt  b.txt  hello.php

 

짜잔~

1은 K8S가 nfs 를 관리하지 못하는데 얘는 알아서 더 좋다.