• Xcp-ng(Xen) 서버에 NAS 서버 구축


  • Local Repository 로 사용 할 Storage 할당 (NAS 용으로 사용할 디스크 할당)

  • 디스크 마운트

$ fdisk -l // 위에서 할당한 Local SR 디스크 명 확인
$ fdisk "위에서 확인한 디스크 명" // ex) /dev/xvdb , 해당 디스크 명의 파티션 관리

$ Command (m for help ) : n // add a new partition
$ Select (default p): p
$ Partition number (1-4, default 1):
$ First sector (2048-209715199, default 2048):
$ Using default value 2048
$ Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
$ Using default value 209715199
$ Partition 1 of type Linux and of size 100 GiB is set

$ Command (m for help ) : w

$ fdisk -l // 파티션 확인

Device Boot Start End Blocks Id System
"파티션명" 2048 209715199 104856576 83 Linux

$ mkfs.
$ mkfs.xfs "파티션 명"

$ mkdir /nas // 디렉토리 생성

$ mount "파티션명" "디렉토리명" // ex) mount /dev/xvdb1 /nas

$ vi /etc/fstab

/dev/mapper/centos-root / xfs defaults 0 0
UUID=a8534391-169c-4f5c-824f-1e061475c80b /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/xvdb1 /nas xfs defaults 0 0 // 추가 입력!

$ df -Th // 확인


  • NFS 패키지 설치 및 설정

# nfs 패키지 설치 여부 확인
$ rpm -qa | grep nfs

# yum 명령어로 nfs 패키지 설치
$ yum install nfs-utils nfs-utils-lib -y

# nfs로 nas 서비스할 디렉토리에 대한 설정
$ vi /etc/exports
/nas 192.168.1.* (rw,all_squash,sync)

# other 그룹에 write 권한 추가
$ chmod o+w /nas

# nfs 서비스 수행
$ systemctl start nfs-server

### OS 재시작 시 nfs-server 서비스 구동
systemctl enable --now nfs-server

  • 각 k8s 가 설치된 노드에서 NAS 마운트

# showmount 미설치 시 yum 명령어로 설치
$ yum install showmount -y

# NFS 서버에서 NAS 서비스 중인지 확인
$ showmount -e sag-nfs-node
$ mkdir /nas
$ mount -t nfs sag-nfs-node:/nas /nas
$ vi /etc/fstab
sag-nfs-node:/nas /nas nfs defaults 0 0

  • Docker 설치

$ yum install -y yum-utils device-mapper-persistent-data lvm2

$ yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

$ yum update -y && yum install -y docker-ce docker-ce-cli containerd.io


  • Docker Registry 를 활용한 Local Private Repository 구성
    • Docker Hub 에서는 Private 의 경우 하나의 이미지만 등록이 가능, Organization 의 경우 비용을 지불해야 하므로 Private Registry를 구축하여 사용
    • 내부 Private Cloud 환경에 적용 가능한 Docker Private 저장소 구축

## Docker registry image 가져오기
$ docker pull registry:latest

## 정상 생성되었는지 확인
$ docker images registry

## Local Volume 연결 (/nas 디렉토리에 연결)
$ docker run --name MyPrivate-Docker -v /nas:/var/lib/registry/docker/registry/v2 -d -p 5000:5000 registry


  • Docker push 오류 시
    • "server gave HTTP response to HTTPS client"
$ vi /etc/docker/daemon.json
{
"insecure-registries": ["레파지토리가 구축된 서버의 IP:5000"]
}

$ systemctl restart docker

Download PDF