마운트
Virtual Machine 인스턴스와 Kubernetes Engine의 볼륨에 File Storage 인스턴스를 마운트하여 사용할 수 있습니다.
Virtual Machine 인스턴스에 마운트하기
Virtual Machine 인스턴스에 마운트하는 방법은 다음과 같습니다.
Virtual Machine 인스턴스에 연결하기
- 
카카오클라우드 콘솔 > Beyond Compute Service > Virtual Machine 메뉴로 이동합니다. 
- 
인스턴스 메뉴에서 마운트 할 인스턴스의 [⋮] 버튼 > SSH 연결을 선택합니다. 
- 
SSH 연결 팝업창에서 [복사] 버튼을 클릭해 실행 명령어를 복사합니다. 
- 
실행 명령어를 사용해 인스턴스에 연결합니다. SSH를 사용한 인스턴스 연결에 대한 자세한 설명은 Virtual Machine > 인스턴스 생성 및 연결을 참고하시기 바랍니다. 
NFS 패키지 설치하기
- 
인스턴스의 OS를 확인한 후, 다음 명령어에 따라 NFS 패키지를 설치합니다. - CentOS 명령어
- Ubuntu 명령어
 CentOSsudo yum install -y nfs-utilsUbuntusudo apt-get install nfs-commonNFS 패키지가 설치되어 있지 않을 경우 아래와 같은 에러가 발생합니다. 에러가 발생할 시 NFS 패키지 설치하기를 참고하여 패키지를 설치하시기 바랍니다. NFS 패키지 설치 안 된 경우의 에러sudo: unable to resolve host for[Virtual Machine instance name]
 mount: /home/deploy/nfs-mount: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.
- 
설치가 성공적으로 완료되었는지 확인합니다. 
NFS 마운트하기
- 
Virtual Machine 인스턴스에 접속하여 NFS 마운트 디렉터리를 생성합니다. NFS 마운트 디렉터리mkdir {마운트 디렉터리 이름 생성}
- 
마운트 디렉터리의 생성 여부를 확인하기 위한 명령어를 입력합니다. 마운트 디렉터리의 생성 여부 확인 명령어ls -la
- 
다음과 같이 nfs-mount 디렉터리가 생성된 것을 확인합니다. 디렉터리 생성 확인drwxr-xr-x 2 deploy deploy 4096 Dec 13 06:17 nfs-mount
- 
인스턴스 상세 정보에서 확인할 수 있는 마운트 정보(마운트 포인트)와 생성한 마운트 디렉터리를 마운트 명령어와 함께 입력합니다. 마운트 명령어sudo mount -t nfs {File Storage 인스턴스 프라이빗 IP}:/{파일 공유 이름} {생성한 마운트 디렉터리}
- 
마운트 여부를 확인하기 위한 명령어를 입력합니다. 마운트 확인 명령어mount
- 
다음과 같이 마운트가 성공적으로 완료되었는지 확인합니다. 마운트 확인11.111.11.111:/share_storage on /home/deploy/nfs-mount type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.183.51.186,local_lock=none,addr=11.111.11.111)
NFS 마운트 해제하기
NFS 마운트 연결 해제 명령어는 다음과 같습니다.
umount {생성한 마운트 디렉터리}
Kubernetes Engine에 마운트하기
Kubernetes Engine에서 File Storage 인스턴스를 마운트하는 방법은 다음과 같습니다.
NFS 접근 허용하기
- 
Kubernetes Engine의 Worker Node의 IP를 확인하기 위한 명령어를 입력합니다. Worker Node의 IP 확인 명령어kubectl --kubeconfig={kube_config} get nodes -o wide
- 
아래와 같이 Worker Node의 IP를 확인합니다.  Worker Node IP 확인 Worker Node IP 확인
- 
File Storage 접근 제어 설정에서 Worker Node의 IP를 설정합니다. - File Storage > 인스턴스 메뉴 > 네트워크 탭 > 접근 제어 설정에서 허용된 프라이빗 IP 주소에 Worker Node IP를 설정합니다.
 
PV 생성하기
- 
PV(Persistent Volume) 생성을 위한 yaml 파일을 생성합니다. yaml 파일 생성apiVersion: v1
 kind: PersistentVolume
 metadata:
 name: pv-nfs-share-storage
 spec:
 capacity:
 storage: 1Gi
 accessModes:
 - ReadWriteMany
 nfs:
 server: IP 입력
 path: /{파일 공유 이름}
 storageClassName: "nfs-share-storage"
- 
생성한 PV yaml 파일을 Kubernetes Engine에 적용합니다. PV yaml 파일을 Kubernetes Engine에 적용kubectl --kubeconfig={kube_config} apply -f nfs-pv.yaml
- 
적용 여부를 확인합니다. PV yaml 파일을 Kubernetes Engine에 적용 확인 명령어kubectl --kubeconfig={kube_config} get pv
- 
다음과 같이 적용된 것을 확인할 수 있습니다.  PV 적용 여부 확인 PV 적용 여부 확인
PVC 생성하기
- 
Persistent Volume을 포함하는 PVC(Persistent Volume Claim) yaml 파일을 생성합니다. PVC yaml 파일 생성apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
 name: pvc-nfs-share-storage
 spec:
 storageClassName: "nfs-share-storage"
 accessModes:
 - ReadWriteMany
 resources:
 requests:
 storage: 1Gi
- 
PVC yaml 파일을 Kubernetes Engine에 적용합니다. PVC yaml 파일을 Kubernetes Engine에 적용kubectl --kubeconfig={kube_config} apply -f nfs-pvc.yaml
- 
적용 여부를 확인하기 위한 명령어를 입력합니다. PVC yaml 파일을 Kubernetes Engine에 적용 확인 명령어kubectl --kubeconfig={kube_config} get pvc
- 
다음과 같이 적용된 것을 확인할 수 있습니다.  PV 적용 여부 확인 PV 적용 여부 확인
Deployment 생성하기
- 
Kubernetes Engine에 배포되는 Pod에 Persistent Volume Claim을 마운트하기 위해서 Deployment yaml 파일을 생성합니다. Deployment yaml 파일 생성apiVersion: apps/v1
 kind: Deployment
 metadata:
 name: {Deployment 이름}
 spec:
 selector:
 matchLabels:
 app: {Label 이름}
 replicas: 2
 template:
 metadata:
 labels:
 app: {Label 이름}
 spec:
 containers:
 - name: master
 image: {사용자 컨테이너 URL}
 ports:
 - containerPort: 77
 volumeMounts:
 - mountPath: /data/share-storage
 name: pvc-volume
 volumes:
 - name: pvc-volume
 persistentVolumeClaim:
 claimName: pvc-nfs-share-storage
- 
Deployment yaml 파일을 Kubernetes Engine에 적용합니다. Deployment yaml 파일을 Kubernetes Engine에 적용kubectl --kubeconfig={kube_config} apply -f deployment.yaml
- 
적용 여부를 확인하기 위한 명령어를 입력합니다. Deployment yaml 파일을 Kubernetes Engine에 적용 확인 명령어kubectl --kubeconfig={kube_config} get deployments
- 
다음과 같이 적용된 것을 확인합니다. Deployment yaml 파일을 Kubernetes Engine에 적용 확인NAME READY UP-TO-DATE AVAILABLE AGE
 nginx-demo 2/2 2 2 1d
- 
Deployment에 의해 생성된 Pod를 확인하기 위한 명령어를 입력합니다. Pod 확인 명령어kubectl --kubeconfig={kube_config} get pods
- 
생성한 Pod를 확인합니다. Pod 확인NAME READY STATUS RESTARTS AGE
 nginx-demo- 1/1 Running 0 1d
 nginx-demo- 1/1 Running 0 1d
마운트 여부 확인하기
- 
생성한 Pod에 접속합니다. Pod 접속kubectl --kubeconfig={kube_config} exec -it pod name /bin/bash
- 
마운트 확인 명령어를 입력합니다. 마운트 확인 명령어$ mount
- 
마운트가 완료된 것을 확인합니다. 마운트 확인ip:/share_storage on /data/share-storage type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=ip,local_lock=none,addr=ip)