2021.05기준 Gitlab 설치 시 PersistentVoluem 지정 기능 미지원 → 동적 프로비저닝 활성화
온프레미스 환경에서 동적 프로비저닝을 위한 사전 작업으로 NFS 설치 및 동적 프로비저닝 테스트
NFS(Network File System) 공유된 원격 호스트의 파일을 로컬에서 사용할 수 있도록 개발된 파일 시스템
NFS 서버
- 192.168.90.14
Client 서버
- 192.168.90.14
- 192.168.90.17
- 192.168.90.18
- 192.168.90.19
sudo apt-get update
sudo apt-get upgrade -y
# 라이브러리 설치
sudo apt-get install nfs-common nfs-kernel-server rpcbind -y
# 공유할 디렉토리 생성
sudo mkdir -p /data/nfs
# Client 정보 수정
sudo vi /etc/exports
/data/nfs 192.168.90.14(rw,sync,no_subtree_check,no_root_squash)
/data/nfs 192.168.90.17(rw,sync,no_subtree_check,no_root_squash)
/data/nfs 192.168.90.18(rw,sync,no_subtree_check,no_root_squash)
/data/nfs 192.168.90.19(rw,sync,no_subtree_check,no_root_squash)
# 재시작
sudo service nfs-kernel-server restart
sudo service rpcbind restart
sudo exportfs –a
sudo apt-get install nfs-common -y
# 테스트
sudo mkdir /ttt
sudo mount -t nfs 192.168.90.14:/data/nfs /ttt
kubectl create ns nfs
sudo mkdir -p /nfsprovider
cd /nfsprovider
sudo git clone https://github.com/kubernetes-incubator/external-storage.git
cd external-storage/nfs-client/deploy
# rbac.yaml 및 deployment.yaml내의 namespace를 모두 ‘nfs’로 변경하고 적용
NAMESPACE=nfs
sudo sed -i'' "s/namespace:.*/namespace: $NAMESPACE/g" rbac.yaml
sudo sed -i'' "s/namespace:.*/namespace: $NAMESPACE/g" deployment.yaml
kubectl apply –f rbac.yaml
# service account 'nfs-client-provisioner'에게 hostmount-anyuid SCC적용
kubectl create clusterrolebinding crb_nfs_default --clusterrole=cluster-admin --serviceaccount=nfs:default
StorageClass 및 NFS-Provisioner 수정
아래와 같이 생성된 것을 확인
추가 작업(Master Node)
KEP-1164: Deprecate and Remove SelfLink로 인한 문제 발생
참고 사이트 (해당 방법으로 오류 해결)
참고
온달의 해피클라우드/NFS서버 설치와 NFS Dynamic Provisioning 설정
Can Do It
brb