YJWANG

Kubernetes PV (NFS) 본문

60.Cloud/80.Kubernetes

Kubernetes PV (NFS)

왕영주 2021. 1. 5. 17:53

k8s PersistentVolume NFS
https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs

prerequisite
사전작업 NFS구성이므로 자세히 설명하진 않겠습니다.
CentOS8.X 기준으로 아래와 같이 NFS 서버를 구성하고 테스트합니다.

당연히 export할 directory는 사전히 생성돼야합니다.

  227  yum -y install nfs-utils.x86_64
  228  systemctl status nfs-server
  229  systemctl status firewalld
  230  getenforce

[root@wyj01_deploy_0 data]# head -v -z /etc/exports
==> /etc/exports <==
/data    *(rw,sync,no_root_squash)

  241  exportfs -v
  242  mount 10.11.90.90:/data /mnt
  243  df -h

pv manifest

[root@master01 pvtest]# cat pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 10.11.90.90
    path: "/data"

pv deploy

[root@master01 pvtest]# kubectl create -f pv.yaml 
persistentvolume/nfs created

[root@master01 pvtest]# kubectl get pv
NAME         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                            STORAGECLASS    REASON   AGE
nfs          10Gi       RWX            Retain           Available                                                             3s

pvc manifest

[root@master01 pvtest]# cat pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  resources:
    requests:
      storage: 1Gi

pvc deploy

[root@master01 pvtest]# kubectl create -f pvc.yaml 
persistentvolumeclaim/jenkins created

[root@master01 pvtest]# kubectl get pvc
NAME      STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
jenkins   Bound    nfs      10Gi       RWX                           3s

[root@master01 pvtest]# kubectl get pv
NAME         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM                            STORAGECLASS    REASON   AGE
nfs          10Gi       RWX            Retain           Bound      default/jenkins                                           2m17s

nfs pv Pod 통해 실습

==> ./pv.yaml <==
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-testdir
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 10.11.90.90
    path: "/data/testdir"

==> ./pv_httpd.yaml <==
apiVersion: v1
kind: Pod
metadata:
  name: pv-test-pod
spec:
  volumes:
    - name: nfs-testdir 
      persistentVolumeClaim:
        claimName: nfs-testdir-claim
  containers:
    - name: pv-test-con
      image: httpd
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/local/apache2/htdocs"
          name: nfs-testdir


==> ./pvc.yaml <==
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-testdir-claim
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  resources:
    requests:
      storage: 5Gi

[root@master01 pvtest]# kubectl exec -it pv-test-pod -- /bin/bash

root@pv-test-pod:/usr/local/apache2# df -h
Filesystem                 Size  Used Avail Use% Mounted on
10.11.90.90:/data/testdir   24G  2.8G   21G  12% /usr/local/apache2/htdocs
반응형