Kubernetes - 볼륨 1부 본문
오늘은 볼륨에 대해 실습했다.
먼저 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 |