마운트 하기
File Storage 인스턴스에 마운트 하여 사용할 수 있습니다. Virtual Machine 인스턴스에 마운트 하는 방법과 Kubernetes Engine에 볼륨을 마운트 하는 두 가지 방법으로 구성됩니다. File Storage 서비스에서 File Storage 인스턴스에 마운트 하는 방법은 다음과 같습니다.
Virtual Machine 인스턴스에 마운트 하기
Virtual Machine 인스턴스에 마운트 하는 방법은 다음과 같습니다.
Virtual Machine 인스턴스에 연결하기
- 카카오 i 클라우드 콘솔에서 Virtual Machine 메뉴를 선택합니다.
- 마운트 할 Virtual Machine 인스턴스의 [더보기] 아이콘에서 SSH 연결을 클릭합니다.
-
SSH 연결 팝업창에서 [복사] 버튼을 클릭해 실행 명령어를 복사합니다.
이미지 SSH 연결
- 실행 명령어를 사용해 인스턴스에 연결합니다.
- SSH를 사용한 인스턴스 연결에 대한 자세한 내용은 Virtual Machine > 인스턴스 생성 및 연결하기 문서를 참고하시기 바랍니다.
NFS 패키지 설치하기
-
인스턴스의 OS를 확인한 후, 다음 명령어에 따라 NFS 패키지를 설치합니다.
코드 예제 CentOS 명령어
sudo yum install -y nfs-utils
코드 예제 Ubuntu 명령어
sudo apt-get install nfs-common
NFS 패키지가 설치되어 있지 않을 경우 아래와 같은 에러가 발생합니다. 에러가 발생할 시 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 마운트 연결 해제 명령어는 다음과 같습니다.
코드 예제 NFS 마운트 연결 해제 명령어
umount {생성한 마운트 디렉터리}
Kubernetes Engine에 마운트 하기
Kubenetes 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 확인
-
File Storage Create/Update API를 이용하여 Worker Node의 IP를 추가합니다.
코드 예제 추가 완료 시 메시지 또는 화면
# Create File Storage InstancePOST /v1/{project-id}/instances{"name": "filestorage-instance", "description": "description", "zone": "kr-central-1-a", "storage_class": "BASIC", "storage_size": 5, "network": "network-id", "subnet": "subnet-id", "file_share":{"name": "share_storage", "allow_all": false, "allow_cidrs": ["10.183.51.242/32", "10.183.50.164/32","10.183.50.173/32 # worker node 의 IP 주소"]}} # Update File Storage InstancePOST /v1/{project-id}/instances/{instance-id}{"description": "description", "storage_size": 5, "file_share": {"name": "share_storage", "allow_all": false, "allow_cidrs": ["10.183.51.242/32", "10.183.50.164/32","10.183.50.173/32 # 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 적용 여부 확인
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 적용 여부 확인
Deployment 생성하기
-
Kubernetes Engine에 배포되는 Pod에 Persistent Volume Claim을 마운트 하기 위해서 Deployment yaml 파일을 생성합니다.
코드 예제 Deployment yaml 파일 생성
apiVersion: apps/v1 kind: Deployment metadata: name: test-name spec: selector: matchLabels: app: test-name replicas: 2 template: metadata: labels: app: test-name spec: containers: - name: master image: mock.test.io/test 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)