YJWANG

[Kubernetes] Helm Chart로 NFS Provisioner 구성하기 본문

60.Cloud/80.Kubernetes

[Kubernetes] Helm Chart로 NFS Provisioner 구성하기

왕영주 2021. 5. 6. 13:39

ENV


우선 구성할 NFS 서버 정보를 확인합니다. (NFS ver 3 기준으로 작성했습니다 ver4 는 추가 Option을 진행할 필요가 없습니다.)

NFS 서버 정보
x.x.x.x:/test
vers:3

refer to


https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

/etc/kubernetes/manifests/kube-apiserver.yaml 수정

NFS-provisioner 사용 및 default storage class 바인딩을 위해 수정

# vi /etc/kubernetes/manifests/kube-apiserver.yaml
(생략)
spec:
  containers:
  - command:
(생략)
    - --enable-admission-plugins=NodeRestriction,DefaultStorageClass
(생략)    
    - --feature-gates=RemoveSelfLink=false
(생략)

반영 확인

# kubectl describe pod -n kube-system kube-apiserver-euclkeosad01
(생략)
    Command:
      kube-apiserver
(생략)
      --enable-admission-plugins=NodeRestriction,DefaultStorageClass
(생략)
      --feature-gates=RemoveSelfLink=false
(생략)

nfs provisioner 구축


Helm Chart 이용해서 구성

Helm repo 추가

# helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
"nfs-subdir-external-provisioner" has been added to your repositories

# helm repo ls
NAME                            URL
nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/

Install Chart

version이 4이상이면 mountOptions를 작성하지 않아도 됩니다.

# helm install nfs-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
    --set nfs.server=x.x.x.x \
    --set nfs.path=/test \
    --set nfs.mountOptions="{ nfsvers=3,nolock }" \
    --set storageClass.name=nfsprov \
    --set storageClass.defaultClass=true

배포 확인
자동으로 pvc를 구성하므로 bind 정상임을 확인해볼 수 있습니다.

# kubectl get storageclasses.storage.k8s.io
NAME                PROVISIONER                                                     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfsprov (default)   cluster.local/nfs-provisioner-nfs-subdir-external-provisioner   Delete          Immediate           true                   18m

# kubectl get pvc
NAME                                                  STATUS   VOLUME                                               CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc-nfs-provisioner-nfs-subdir-external-provisioner   Bound    pv-nfs-provisioner-nfs-subdir-external-provisioner   10Mi       RWO                           18m

 

혹시 mount.nfs가 없다고 pod describe에 계속 에러가 발생하면

bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.

bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.

worker-node에 /usr/sbin/mount.nfs 파일이 있는지 확인하시고 없으면 필요 패키지를 설치하신 후 다시 진행해보시기 바랍니다.

반응형