이 글은 아래의 시리즈에 의존성을 가진다.
2023.08.27 - [Backend MLOps/On-premise setting] - [k8s] 라즈베리파이 클러스터링 -1
2023.08.17 - [Backend MLOps/On-premise setting] - [k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 1
2023.03.01 - [Backend MLOps/On-premise setting] - [k8s] 쿠버네티스 찍먹 - 1
우선은 nfs를 간략하게 알아보자.
nfs는 Network File System의 약자로
네트워크로 연결된 특정 스토리지를 마치 파일시스템처럼 사용할 수 있게 만들어주는 툴을 말한다.
쿠버네티스의 각 파드의 경우 영구적이지 못한 스토리지를 가지는데
컨테이너의 특성상 마운트된 특정 볼륨이 없는 경우 컨테이너가 내려가는 순간
격리된 스토리지가 사라지기 때문이다.
이를 방지하기 위해서 영구적인 볼륨을 만들고 컨테이너에 마운트 시켜줘야하는데
이전 글들에서 사용한 HostPath 방식은 컨테이너가 올라가는 노드 안에서만 쓸 수 있으므로
클러스터 전체가 사용할 수 있는 볼륨을 구성하려면 네트워크 상에 떠 있는 볼륨을 생성해주어야 한다.
이 역할을 nfs가 수행하게 된다.
1. 우분투서버에 nfs 설치
sudo apt update
sudo apt install nfs-kernel-server
커널이 새로 설치되었으니 재시작을 해서 적용하라는 경고가 뜬다.
재 시작 해 주자.
나는 접근이 용이하도록 그냥 내 계정 아래에 공유할 디렉토리를 생성해 주도록 하겠다.
mkdir -p $HOME/nfs/shared
/etc/exports 로 가서 nfs파일의 접근 권한을 설정해 준다.
기본적으로 이 파일은 아래의 문법을 따른다.
<directory> <host1>(<options>) <host2>(<options>) ...
# <directory> : 공유할 디렉토리
# <host#> : 접근할 수 있게 권한을 부여할 호스트
# <options> : 해당 호스트에게 부여할 권한들
# # rw : Read Write
# # ro : Read Only
# # sync : nfs 서버가 요청받은 사항을 반영할 때까지 클라이언트의 응답을 지연
# # async : 일단 응답하고난 후 요청사항을 기록
# # no_subtree_check : 서브 디렉토리들이 export 되어있는지 확인하는 옵션을 끈다.
# # 보통은 서브디렉토리가 모두 노출되어 있으므로 이 옵션으로 성능을 향상할 수 있다.
# #
# # root_squash / no_root_squash : 루트 사용자로 접근하는 경우 root 그대로 사용할 것인지 아니면 nobody로 사용할 것인지 지정한다.
나는 아래와 같이 설정할 수 있다.
/home/manager/nfs/shared/ 192.168.0.11(rw,sync,no_subtree_check)
/home/manager/nfs/shared/ 192.168.0.12(rw,sync,no_subtree_check)
/home/manager/nfs/shared/ 192.168.0.13(rw,sync,no_subtree_check)
/home/manager/nfs/shared/ 192.168.0.14(rw,sync,no_subtree_check)
변경사항을 적용하고 nfs 서비스를 다시 시작한다.
sudo exportfs -a
sudo systemctl restart nfs-kernel-server
# 부팅시 nfs 활성화
sudo systemctl enable nfs-kernel-server
2. nfs 클라이언트로 간단한 텍스트파일 저장
라즈베리파이로 가서 nfs클라이언트를 설치해 준다.
sudo apt update
sudo apt install nfs-common
마운트 할 디렉토리를 생성해 준다.
mkdir ./nfs-mount/
이제 마운트해준다.
sudo mount <nfs-server-ip>:<nfs-path> ./nfs-mount/
이렇게 클라이언트에서 생성한 파일이
서버에도 생기면
성공이다.
이제 마운트를 풀어준다.
sudo umount ./nfs-mount/
'Backend MLOps > On-premise setting' 카테고리의 다른 글
[MPI] 멀티노드로 병렬연산, 분산컴퓨팅 처리하기 (0) | 2023.09.03 |
---|---|
[k8s] NFS 기반 PersistentVolume 직접 구축하기 - 2 (0) | 2023.09.02 |
[k8s] 라즈베리파이 클러스터링 -4 (0) | 2023.08.30 |
[k8s] 라즈베리파이 클러스터링 -3 (0) | 2023.08.29 |
[k8s] 라즈베리파이 클러스터링 -2 (0) | 2023.08.28 |
댓글