테크믈리에의 리뷰 공간

[K8S / Rancher 강좌] 1. Docker 설치 및 K8S를 위한 준비 본문

프로그래밍|소프트웨어/Rancher

[K8S / Rancher 강좌] 1. Docker 설치 및 K8S를 위한 준비

테크믈리에 2023. 8. 18. 09:45

 

서론

  이번 시간에는 K8S 환경 구축에 필수인 Docker(Containerd)를 설치하고 NTP를 설치해볼 예정이다. Docker는 가상 컨테이너 환경 구축을 위해 사용될 예정이고 NTP는 K8S 클러스터 간 시간 동기화를 위해 사용될 예정이다.

 

Docker 설치

  도커의 공식 설치 방법 문서는 아래 링크에서 확인할 수 있다.

 

Install Docker Engine on Ubuntu

 

docs.docker.com

  우선은, Docker 설치에 있어 필요한 프로그램 설치를 하도록 하자.

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

  그 다음에는 Docker의 APT 저장소에 접근하기 위한 GPG 키를 등록해야한다.

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

  GPG 키 등록이 끝난 다음에는 이를 기반으로 Docker의 APT 저장소를 등록한다

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

  이제 APT 저장소로부터 Docker 최신 버전을 다운로드 받자

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

  모든 작업이 끝났다면, 이제 도커를 사용할 준비는 완료되었다. 다만, sudo 없이는 Docker를 사용할 수 없다는 점이 매우 귀찮기 때문에 sudo 없이도 Docker를 쓰고 싶다면 docker 그룹에 사용자를 추가해야한다.

sudo groupadd docker
sudo usermod -aG docker ${USER}
sudo service docker restart

  이제 sudo 없이 docker를 편하게 쓸 준비가 완료되었다

 

K8S 사용을 위한 기초적인 준비

  우선, K8S 환경을 사용하는데 있어 기초적인 준비 과정 중 하나는 SWAP 메모리를 해제하는 것이다. 왜 해야하는지 궁금한 사람이라면 아래 블로그에서 해당 이유를 자세하게 설명하니 읽어보도록 하자.

 

쿠버네티스를 구축할 때 swap 메모리를 꺼놓아야 하는 이유 - swap 메모리란/꺼놓아야 하는 이유

kubeflow를 배우기 전에 먼저 쿠버네티스 구축을 해야하는데, 스왑메모리를 꼭 끄라는 설명이 있어 왜 그런지 호기심이 생겼다. 이 궁금증을 해결하면서 스왑 메모리가 무엇인지도 제대로 알아보

kgw7401.tistory.com

  SWAP 메모리를 당장 해제하고 리부팅 후에도 해당 설정을 유지하도록 하는 것은 아래 코드 한줄로 간단하게 할 수 있다. 

sudo swapoff -a && sudo sed -i '/swap/s/^/#/' /etc/fstab

 

  그 다음으로 필요한 기초 과정 중 하나는 K8S 클러스터 내의 모든 서버가 같은 시간을 공유할 수 있도록 NTP를 활성화하는 것이다.

sudo apt install ntp -y
sudo service ntp restart
sudo ntpq -p

  위 명령어를 사용하면 ntp를 설치하고 잘 실행되었는지까지 확인할 수 있다.

 

  추가로, 필수는 아니지만 간혹 k8s 환경을 사용하다보면 Failed to allocate directory watch: Too many open files 와 같은 에러를 마주할 수 있다. 이는, 우분투에서 기본적으로 fs.inotify의 watch 최대치값이 낮게 잡혀있어서 그런 것인데, 이 값을 늘려줌으로써 문제를 예방할 수 있다. 현재 본인의 최대치는 아래 명령어를 통하여 확인할 수 있다.

sysctl fs.inotify

 

No space left on device or exceeds fs.inotify.max_user_watches 에러

직역하면 디스크 용량이 없거나 fs.inotify.max_user_watches를 초과했다는 뜻이다그런데 디스크 용량이 아직 남았는데도 에러가 발생한다면 fs.inotify.max_user_watches를 초과했다는 말이다그럼 fs.inotify.max_

velog.io

  위 블로그를 보면 메모리 총 용량 128GB인 경우 1048576이 감당할 수 있는 최대치라고 하니, 본인 메모리 용량에 비례하는 최대값을 계산해보도록 하자. 최대치 변경은 /etc/sysctl.d/60-fs-inotify.conf를 생성하여 아래와 같이 적어주면 된다.

fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 512
fs.inotify.max_user_watches = <최대치>

  그 다음에는 다음 명령어를 통해 변경사항을 적용할 수 있다.

sudo sysctl --system

  max_queued_events나 max_user_instances의 경우에는 임의로 임력한 값이니, 본인이 적합하다고 생각하는 값을 찾아 적어주도록 하자.

 

마침글

  이번 글에서는 간단하게 Docker를 설치하고 K8S 환경 구축을 위한 기초적인 세팅을 하는 방법에 관하여 알아보았다. 다음 글은 Nvidia GPU가 달린 컴퓨터가 있을 때 Lubuntu 환경에서 Nvidia Driver 및 Cuda Tools를 간단하게 설치하는 방법에 관하여 다룰 예정이다.

 

 

Comments