반응형

Synology의 VM을 Master로 하는 Kubernetes 환경을 구성하고자 한다.

 

이렇게 하고자 하는 목적은 

 

- VM인 만큼 Snapshot을 통한 OS 백업이 간편하여 Master 노드를 안정적으로 운영

- Persistent Volume을 NAS로 구성을 하여 데이터의 안정성을 확보

- Synology를 게이트웨이 역할을 하게 수행하여 서비스에 대한 외부 접근시 보안성을 강화

 

위와 같은 이유로 아래와 같은 설정으로 Kubernetes 환경을 구성하였다.

VM의 구성 사양
가상 디스크의 크기

 

기본 네트워크 사용

 

Ubuntu 20.04.03 server 버전 설치 후 다음의 패키지 설치

sudo apt install ssh
sudo apt install net-tools

 

 

Docker는 최신버전으로 설치

# 기존 설치된 docker가 없으면 아래 명령어는 생략해도 됨
sudo apt-get remove docker docker-engine docker.io containerd runc

# ubuntu package 최신 정보 받아오기
sudo apt-get update
 
# docker 설치를 위한 기본 패키지 설치
sudo apt-get install -y ca-certificates curl gnupg lsb-release


# apt로 내려 받을 수 있게 docker registry 설정
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

# docker 설치
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

# docker 명령어를 편하게 사용하기 위해 sudo 권한 부여 (shell 재시작 필요)
sudo usermod -aG docker $USER 

 

Kubernetes 설치

# 설치하기전 환경 구성
sudo swapoff -a 
sudo sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

# kubernetes registry 등록 
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# kubernetes 설치
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

 

Kubernetes Master 설정전 확인 사항

# cgroup driver 확인하기
sudo docker info | grep -i cgroup

# 만약 cgroup driver가 cgroupfs이면 다음 명령어 수행하여 해당 문구 수정

sudo vi /usr/lib/systemd/system/docker.service
# <Before>
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd

# vi 편집 후 systemctl 초기화 수행
sudo systemctl daemon-reload
sudo systemctl restart docker

 

Master Node 설정하기

# master node 초기화하기 (시간이 좀 걸림)
sudo kubeadm init
# 만약 설정 도중 꼬인게 있다면 초기화 하는 명령은 다음과 같다
sudo kubeadm reset



# 정상적으로 수행되면 아래의 문구를 만나야 한다.
Your Kubernetes control-plane has initialized successfully!


# 일반 유저로 다음의 명령어를 수행한다.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 정상적으로 설정되었는지 확인하기 위해 master 노드의 상태를 조회한다.
kubectl get node
----------------------------------------------------------------------
NAME           STATUS     ROLES                  AGE     VERSION
devopsmaster   NotReady   control-plane,master   4m17s   v1.23.5
----------------------------------------------------------------------

 

여기까지 Synology의 VM을 위한 Kubernetes Master Node 구성이 모두 끝났다.

 

지금까지 깔끔한 구성을 하였으니 이 VM에 대한 스냅샷을 설정한다. (이건 귀찮으면 안해도 된다)

Synology Virtual Machine Manager에서 스냅샷 촬영 선택
스냅샷 저장 (설명을 넣고 잠금을 체크하자)
촬영된 스냅샷

다음 포스팅에서는 이 VM에 Slave Node 로서 접근하는 내용을 정리할 예정이다.

 

 

https://clued.tistory.com/43

 

 

 

 

 

반응형

+ Recent posts