본문 바로가기

Kubernetes - 볼륨 1부 본문

Kubernetes

Kubernetes - 볼륨 1부

Seongjun_You 2023. 12. 21. 21:13

오늘은 볼륨에 대해 실습했다.

 

먼저 emptyDir이다.

얘는 파드 내 컨테이너들끼리 데이터를 공유하기 위해서 볼륨을 사용한다.

최초 볼륨이 생성될 때 내용이 비어있어 emptyDir라는 이름이 생겼다.

이 볼륨은 파드 안에 생성되기 때문에 파드가 재생성되면 데이터가 없어진다.

즉 볼륨에 쓰이는 데이터는 일시적인 사용목적이다.

 

volumes의 이름은 두 개의 컨테이너의 volumeMounts와 매칭시켜준다.

val a = volumes

val b = volumes

같은 느낌으로 생각하니 이해가 빨랐다.

 

html-builder에서 생성된 웹리소스를 공유 디렉터리에 저장하면

nginx가 이를 출력해 주는 형식이다.

 

volumes이 두 개의 컨테이너를 share 해준다는 점을 꼭 기억한다.

 

배포를 하고

ip에 curl을 날리면 만든 날짜가 잘 출력된다.

 

 

다음은 hostPath이다.

이 친구는 더 높은 단계인 노드 단에서의 볼륨으로 쓰인다.

그래서 emptyDir은 파드가 죽으면 볼륨이 죽지만

hostPath는 죽지 않는다.

그러나 만약 파드가 죽어서 다른 노드에 파드가 재생성되면 볼륨이 사용 불가하다.

 

 

/var/log를 hostpath-directory라는 이름으로 /host-log에 mount 시켜준다.

 

 

지금은 운이 좋게 각 노드당 하나씩 배포되었다.

 

워커노드 1번에 배포된 파드에 접속하고 host-log 디렉터리가 생성된 것을 확인할 수가 있다.

 

 

 

노드 1번만 메시지가 출력된다.

 

근데 지금은 운 좋게 노드 하나에 파드 하나씩 배포가 되었지만

꼭 이렇게 된다는 보장은 없다.

 

그래서 데몬 셋을 사용하는 게 더 효과적이라 생각한다.

데몬 셋은 1대1로 전부 배포를 해준다.

 

데몬셋 실습 예제이다.

 

배포하고 똑같이 확인을 해준다.

볼륨이 마운트 된 것을 확인할 수 있다.

 

 

 

다음은 NFS 볼륨이다.

 

/nfs_shared/nfs-vol 디렉터리를 nfs-vol라는 이름으로 /audit에 마운트 시켜준다.

/nfs_shared/nfs-vol는 쉘 스크립트로 만들어줄 것이다.

 

#!/usr/bin/env bash
nfsdir=/nfs_shared/$1

if [ $# -eq 0 ]; then
  echo "usage: nfs-exporter.sh <name>"; exit 0
fi

if [[ ! -d /nfs_shared ]]; then
  mkdir /nfs_shared
fi

if [[ ! -d $nfsdir ]]; then
  mkdir -p $nfsdir
  echo "$nfsdir 192.168.1.0/24(rw,sync,no_root_squash)" >> /etc/exports
  if [[ $(systemctl is-enabled nfs) -eq "disabled" ]]; then
    systemctl enable nfs
  fi
    systemctl restart nfs
fi

디렉터리를 만드는 스크립트이다.

 

배포를 하고 접속해 본다.

 

curl를 해서 /audit에 로그를 남긴다.

다른 파드에 접속해도

해당 로그는 똑같이 남아있다.

즉 audit를 공유한다는 것을 알 수 있다.

 

 

다음은

2부에서 매우 중요한

PV와 PVC에 대해 알아본다.

 

'Kubernetes' 카테고리의 다른 글

Kubernetes - 볼륨 2부  (0) 2023.12.26
Kubernetes - 외부노출방법 2부  (0) 2023.12.12
Kubernetes - 외부노출방법 1부  (0) 2023.12.11
Kubernetes - 배포 종류  (1) 2023.12.09
kubernetes - 명령어  (0) 2023.12.06
Comments