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그룹을 생성합니다.1sudo groupadd docker - 유저를
docker그룹에 추가합니다.1sudo usermod -aG docker $USER - 권한을 확인합니다
1docker ps
다만 이 과정을 통해서도 권한이 없다는 에러가 나올 수 있습니다. 이 경우에는 위 과정이 끝난 후 reboot을 하면 해결되는 경우도 있습니다.
| |
2. Nvidia Driver
제가 사용하는 서버는 gpu를 이용하기 때문에 nvidia driver의 설치가 필요합니다.ubuntu-drivers-common를 이용하면 쉽게 설치할 수 있습니다.
2.1 ubuntu-drivers-common 설치
ubuntu-drivers-common설치1sudo apt install ubuntu-drivers-commonauto install실행1sudo ubuntu-drivers autoinstall
2.2 Nvidia Docker 세팅
Docker가 gpu를 사용할 수 있도록 설정해주어야 합니다. 자세한 내용은 링크를 통해 확인할 수 있습니다.
- Nvidia Docker 설치
1 2 3 4 5 6distribution=$(. /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파일을 열어줍니다.원본의 내용을 지우고 아래 내용으로 수정합니다.1sudo vim /etc/docker/daemon.json1 2 3 4 5 6 7 8 9{ "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } } - Reboot
1sudo reboot nvidia-smi확인
설치가 되었는지 확인합니다.1nvidia-smi
3. WireGuard VPN (사용할 경우)
저는 WireGuard VPN을 이용하고 있기 때문에 서버에 추가적인 VPN 작업을 해주었습니다.
- WireGuard Config 발급
WireGuard에서 Ubuntu OS의 config를 생성합니다. - WireGuard 설치
1sudo apt-get install -y resolvconf wireguard - Config 복사
발급받은 config를 서버의/etc/wireguard/wg0.conf에 옮겨 줍니다. 저는 ssh를 이용해 전송 후 복사하였습니다.ssh가 불가능할 경우1sudo cp wg0.conf /etc/wireguard/wg0.confsudo vim /etc/wireguard/wg0.conf을 이용해 직접 수정해도 됩니다. - Systemctl 설정
1 2 3sudo systemctl enable wg-quick@wg0 sudo systemctl start wg-quick@wg0 sudo systemctl status wg-quick@wg0 - 인터페이스 확인
1ifconfig wg0 - Ping 확인
1ping 172.25.0.1
WireGuard config를 수정할 경우 restart를 해줍니다.
| |
On Local
로컬에서 설치 할 것 들은 2가지 입니다.
kubectlkrew
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설치1kubectl krew install ctx