Kubeflow 설치 시리즈
이번 포스트에서는 k3s를 설정하기 전에 필요한 것들을 세팅하는 과정에 대해서 설명합니다.
이번 포스트에서 진행하는 과정은 서버 데스크탑, 로컬 노트북 두 대의 장비가 있다고 가정하고 있습니다.
On Server
사용하는 서버 스s펙은 다음과 같습니다.
|
|
서버에 설치할 것 들은 3가지 입니다.
- Docker
- Nvidia Driver
- WireGuard VPN (사용할 경우)
1. Docker
1.1 Docker 설치
k3s는 snap으로 설치된 docker를 사용할 수 없습니다.
아래 링크를 통해 직접 빌드를 해야 합니다.
https://docs.docker.com/engine/install/ubuntu/
1.2 설치 확인
링크를 통해 설치가 끝나면 sudo 권한이 있는지 확인해야 합니다.
우선 아래 명령어로 권한이 있는지 확인합니다.
|
|
권한이 없는 경우 아래와 같은 에러를 출력합니다.
|
|
1.3 권한 문제 해결
권한이 없는 경우 그룹을 생성해 추가를 해주어야 합니다.
자세한 내용은 링크를 통해 확인할 수 있습니다.
- 우선
docker
그룹을 생성합니다.1
sudo groupadd docker
- 유저를
docker
그룹에 추가합니다.1
sudo usermod -aG docker $USER
- 권한을 확인합니다
1
docker ps
다만 이 과정을 통해서도 권한이 없다는 에러가 나올 수 있습니다. 이 경우에는 위 과정이 끝난 후 reboot을 하면 해결되는 경우도 있습니다.
|
|
2. Nvidia Driver
제가 사용하는 서버는 gpu를 이용하기 때문에 nvidia driver의 설치가 필요합니다.ubuntu-drivers-common
를 이용하면 쉽게 설치할 수 있습니다.
2.1 ubuntu-drivers-common
설치
ubuntu-drivers-common
설치1
sudo apt install ubuntu-drivers-common
auto install
실행1
sudo ubuntu-drivers autoinstall
2.2 Nvidia Docker 세팅
Docker가 gpu를 사용할 수 있도록 설정해주어야 합니다. 자세한 내용은 링크를 통해 확인할 수 있습니다.
- Nvidia Docker 설치
1 2 3 4 5 6
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-docker2 sudo systemctl restart docker
- Docker Config 설정
sudo 권한으로/etc/docker/daemon.json
파일을 열어줍니다.원본의 내용을 지우고 아래 내용으로 수정합니다.1
sudo vim /etc/docker/daemon.json
1 2 3 4 5 6 7 8 9
{ "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } }
- Reboot
1
sudo reboot
nvidia-smi
확인
설치가 되었는지 확인합니다.1
nvidia-smi
3. WireGuard VPN (사용할 경우)
저는 WireGuard VPN을 이용하고 있기 때문에 서버에 추가적인 VPN 작업을 해주었습니다.
- WireGuard Config 발급
WireGuard에서 Ubuntu OS의 config를 생성합니다. - WireGuard 설치
1
sudo apt-get install -y resolvconf wireguard
- Config 복사
발급받은 config를 서버의/etc/wireguard/wg0.conf
에 옮겨 줍니다. 저는 ssh를 이용해 전송 후 복사하였습니다.ssh가 불가능할 경우1
sudo cp wg0.conf /etc/wireguard/wg0.conf
sudo vim /etc/wireguard/wg0.conf
을 이용해 직접 수정해도 됩니다. - Systemctl 설정
1 2 3
sudo systemctl enable wg-quick@wg0 sudo systemctl start wg-quick@wg0 sudo systemctl status wg-quick@wg0
- 인터페이스 확인
1
ifconfig wg0
- Ping 확인
1
ping 172.25.0.1
WireGuard config를 수정할 경우 restart를 해줍니다.
|
|
On Local
로컬에서 설치 할 것 들은 2가지 입니다.
kubectl
krew
1. kubectl
각 OS에 맞는 kubectl
을 설치합니다.
https://kubernetes.io/docs/tasks/tools/
2. krew
krew
설치
각 OS에 맞는krew
를 설치합니다.
https://krew.sigs.k8s.io/docs/user-guide/setup/install/ctx
설치1
kubectl krew install ctx