클라우드 네이티브 애플리케이션 부트캠프 알림

티스토리 뷰

 

 

4. K8s Resources > 데이터 저장공간(Storage): Volume

4.1 데이터 저장공간(Storage): VolumeVolume이란 데이터 저장 공간인 Storage를 의미합니다. Storage...

blog.naver.com

※ Chrome에서 이미지가 깨지면 다른 브라우저를 이용하세요. 

 

위 글에서는 NFS서버로 IBM Cloud의 File storage를 이용했는데, NFS서버를 VM에 설치하여 이용하는 방법도 설명하겠습니다.

 

NFS서버 만들기

아래 글을 참조하여 OS맞게 설치하십시오.

happycloud-lee.tistory.com/46?category=832247

 

NFS서버 만들기

1. ubuntu https://hiondal.blog.me/221624709742 NFS서버 만들기 k8s에서 Volume으로 사용할 수 있는 종류는 아래와 같이 매우 많습니다. 그 중에 많이 사용하는 volume ty... blog.naver.com 2. centos NFS서버..

happycloud-lee.tistory.com

만약에 NFS서버를 사용할 VM을 telnet으로 접근 못하는 경우(예: IKS, AKS 등 이용 시)는 client설정은 할 필요 없습니다.

PV 만들기

$ mkdir -p ~/voletest
$ cd ~/voltest
$ vi pv.yaml 
# metadata.name, metadata.labels, spec.storageClassName, spec.capacity.storage, 
# spec.accessModes, spec.persistentVolumeReclaimPolicy, spec.nfs는 적절히 변경

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-vol
  labels:
    type: nfs
spec:
  storageClassName: standard
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Delete
  nfs:
    server: 169.56.76.4
    path: /nfs

kubectl이 너무 길어 alias를 만듭니다. 
$ which kubectl
/usr/local/bin/kubectl
$ alias /usr/local/bin/kubectl /usr/local/bin/k

namespace 'demo'만들고, 현재 namespace를 변경합니다. 
$ k create ns demo
$ k config set-context $(k config current-context) --namespace demo

pv를 생성
$ k apply pv.yaml
$ k get pv

 

PVC 만들기

$ vim pvc.yaml

# metadata.name, spec.storageClassName, spec.resources.requests.storage, 
# spec.accessModes, spec.selector.matchLabels 수정 필요

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  storageClassName: standard
  resources:
    requests:
      storage: 5Gi
  accessModes:
    - ReadWriteMany
  selector:
    matchLabels:
      type: nfs
      
 $ k apply -f pvc.yaml
 $ k get pvc
 NAME      STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
nfs-pvc   Bound    nfs-vol   5Gi        RWX            standard       23m

 

테스트

아래와 같이 test용 pod를 생성합니다.

$ vi voltest.yaml

apiVersion: v1
kind: Pod
metadata:
  name: voltest-nfs
spec:
  containers:
    - name: users
      image: ondalk8s/users-img
      volumeMounts:
        - name: tmp-vol
          mountPath: /tmp
  volumes:
    - name: tmp-vol
      persistentVolumeClaim:
        claimName: nfs-pvc
        
$ k apply -f voltest.yaml
$ k get pod
NAME          READY   STATUS    RESTARTS   AGE
voltest-nfs   1/1     Running   0          21m


 

위 container는 NFS서버의 /nfs디렉토리를 container내부의 /tmp디렉토리로 마운트 합니다.

container내부를 들어가서 /tmp폴더에 파일을 생성합니다.

그리고, nfs서버를 접근하여 /nfs디렉토리에 동일한 파일이 있는지 확인합니다.

container에 파일 생성

$ k exec -it voltest-nfs sh
# cd /tmp
# touch file1
# exit

NFS서버 접근
$ ssh root@169.56.76.4
...
$ cd /nfs
$ ls -al
total 8
drwxr-xr-x.  2 root root 4096 Aug 30 21:23 .
dr-xr-xr-x. 19 root root 4096 Aug 30 20:32 ..
-rw-r--r--.  1 root root    0 Aug 30 21:23 file1

 

댓글

클라우드 네이티브 애플리케이션 부트캠프 알림