본문 바로가기

엔지니어

Kubernetes : 영구 저장소 설정

Docker 컨테이너 단체 이용시뿐만 아니라 데이터의 영속성은 외부 스토리지가 필요합니다.
이 예에서는 다음과 같이 3 개의 호스트를 사용하여 Kubernetes 클러스터를 구성하고 있습니다.
예를 들어, Master 노드에서 NFS 서버를 시작하고 Pod에서 외부 저장 장치로 사용할 수 있도록 설정합니다.
----------- + --------------------------- + ---------- ---------------- + ------------
| | |
eth0 | 10.0.0.30 eth0 | 10.0.0.51 eth0 | 10.0.0.52

  • ---------- + ----------- + ----------- + ---------- + - ---------- + ---------- +
    | [dlp.srv.world] | | [node01.srv.world] | | [node02.srv.world] |
    | Master Node | | Worker Node | | Worker Node |
    | NFS Server | | | | |
  • ---------------------- + ---------------------- + - --------------------- +

[1]여기를 참고 Master 노드에서 NFS 서버를 가동시켜 둡니다 .
또한, 본 예에서는 [/ var / lib / nfs-share] 디렉토리를 공유 디렉토리로 설정합니다.
[2] Master 노드에서 PV (Persistent Volume) 개체 및 PVC (Persistent Volume Claim) 객체를 정의해야합니다.

PV 정의 파일 작성

[root @ dlp ~] # vi nfs-pv.yml
apiVersion : v1
kind : PersistentVolume
metadata :

모든 PV 이름

name : nfs-pv
spec :
capacity :
# 스토리지의 크기
storage : 10Gi
accessModes :
# 액세스 모드 : ReadWriteMany (다중 노드 RW) ReadWriteOnce (단일 노드 RW) ReadOnlyMany (다중 노드 R)
- ReadWriteMany
persistentVolumeReclaimPolicy :
# Pod가 종료 한 후에도 데이터를 남겨주세요
Retain
nfs :
# NFS 서버의 정의
path : / var / lib / nfs-share
server : 10.0.0.30
readOnly : false

[root @ dlp ~] # kubectl create -f nfs-pv.yml
persistentvolume "nfs-pv"created
[root @ dlp ~] #kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
nfs-pv 10Gi RWX Retain Bound default / nfs-pvc 2d

PVC 정의 파일 작성

[root @ dlp ~] # vi nfs-pvc.yml
apiVersion : v1
kind : PersistentVolumeClaim
metadata :

모든 PVC 이름

name : nfs-pvc
spec :
accessModes :

액세스 모드 : ReadWriteMany (다중 노드 RW) ReadWriteOnce (단일 노드 RW) ReadOnlyMany (다중 노드 R)

  • ReadWriteMany
    resources :
    requests :

    이용하고자하는 스토리지의 크기

    storage : 1Gi

[root @ dlp ~] # kubectl create -f nfs-pvc.yml
persistentvolumeclaim "nfs-pvc"created
[root @ dlp ~] #kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
nfs-pvc Bound nfs-pv 10Gi RWX 2d
[3] 미리 정의 된 PVC를 사용하여 Pod를 만듭니다.
[root @ dlp ~] # vi nginx-nfs.yml
apiVersion : v1
kind : Pod
metadata :

모든 Pod 이름

name : nginx-nfs
labels :
name : nginx-nfs
spec :
containers :
- name : nginx-nfs
image : fedora / nginx
ports :
- name : web
containerPort : 80
volumeMounts :
- name : nfs-share
# 컨테이너 내에서 NFS를 마운트 위치
mountPath : / usr / share / nginx / html
volumes :
- name : nfs-share
persistentVolumeClaim :
# 사전에 작성한 PVC 이름
claimName : nfs-pvc

[root @ dlp ~] # kubectl create -f nginx-nfs.yml
pod "nginx-nfs"created

설정 한 NFS 공유 영역에 테스트 파일 생성

[root @ dlp ~] # echo 'NFS Persistent Storage Test'> /var/lib/nfs-share/index.html
[root @ dlp ~] # kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
nginx-nfs 1/1 Running 0 3m 10.244.1.10 node01.srv.world

액세스 확인

[root @ dlp ~] # curl 10.244.1.10
NFS Persistent Storage Test

'엔지니어' 카테고리의 다른 글

GlusterFS 6 : 설치  (0) 2019.11.29
Podman : 설치  (0) 2019.11.29
Kubernetes : 영구 저장소 설정  (0) 2019.11.28
Kubernetes : Kubeadm : Worker 노드 설정  (0) 2019.11.28
Kubernetes : Kubeadm : Master 노드 설정  (0) 2019.11.28
Kubernetes : Kubeadm : 설치  (0) 2019.11.28