본문 바로가기
홈서버

홈서버 구축 시리즈 - 4편: 우분투 k3s 설치

by 나하니인데 2025. 2. 16.
반응형

안녕하세요!  제가 개발하고 있는 프로젝트는 현재 백엔드 로직도 어느 정도 구현이 완료되었고, 앱 개발도 마무리 단계에 접어들었습니다. 이제는 실제 환경에서 테스트를 진행할 단계가 되었는데요, 이를 위해 백엔드 코드를 컨테이너화하여 홈서버에 올리고 실제 앱을 핸드폰에 설치해서 테스트를 진행할 예정입니다.

이 과정에서 가장 중요한 부분은 핸드폰 앱과 백엔드 서버 간의 통신입니다. 집 와이파이 환경에서는 사설 네트워크를 통해 통신이 가능하지만, 외부에서도 서비스에 접근할 수 있어야 하기 때문에 안정적인 서버 환경 구축이 필요한 상황이라고 판단했습니다. 

외부에서도 서비스 접근할 수 있도록 네트워크 설정한건 서버 구축 시리즈 3: DDNS 및 포트 포워딩 설치(https://sungmin-developer.tistory.com/20) 에서 구축을 했습니다. 

이러한 요구사항을 충족시키기 위해 홈서버에 백엔드 서버를 설치하기로 결정했고, 이 기회에 쿠버네티스 환경도 함께 구축했습니다. 

 

K3s란?

K3s는 경량화된 Kubernetes(K8s) 배포판으로, 리소스가 적은 환경에서도 쉽게 Kubernetes 클러스터를 운영할 수 있도록 최적화된 솔루션입니다.

왜 K3s를 사용하는가?

1. 경량화된 Kubernetes

 

  • 일반적인 Kubernetes(K8s)는 리소스 소모가 큼 → 홈서버에서는 과부하 우려
  • K3s는 가볍고 빠르게 동작 (기본적으로 containerd 사용)

2. 설치가 간편

 

  • kubeadm을 이용한 Kubernetes 설치보다 훨씬 간단

3. 낮은 하드웨어 요구 사항

  • 메모리 2GB 이상이면 기본적으로 잘 구동된다 (보통 2코어 4GB RAM 이상이면 안정적으로 운영이 된다).

 

Ubuntu에서 K3s 설치

Ubuntu 패키지 업데이트

sudo apt update && sudo apt upgrade -y

 

 

 

필수 패키지 설치

sudo apt install curl -y

 

K3s 설치 (싱글 노드)

curl -sfL https://get.k3s.io | sh -

 

이 명령어를 실행하면:  K3s 서버가 자동 실행됩니다.

설치 완료 후 K3s 상태 확인:

sudo systemctl status k3s

 

노드 상태 확인

sudo k3s kubectl get nodes

 

K3s 설정 (kubectl 명령어 바로 사용 가능하게)

 

기본적으로 kubectl을 실행할 때 sudo k3s kubectl을 입력해야 하지만, 이를 편하게 단축하는 설정을 추가합니다.

echo 'export KUBECONFIG=/etc/rancher/k3s/k3s.yaml' >> ~/.bashrc
source ~/.bashrc

현재 kubectl이 K3s의 k3s.yaml 설정 파일을 읽지 못하고 있으면서 현재 사용자에게 /etc/rancher/k3s/k3s.yaml 파일에 대한 접근 권한이 없음 이라고 뜹니다.

 

방법은 아래 3가지 정도로 추려봤습니다.

 

1. sudo를 붙여서 사용

2. root 사용자로 전환해서 사용

3. 현재 사용자에게 소유권 부여

 

앞에 1, 2 방법은 제 계정에서 매번 사용하기에 무리가 있어서 3번 방법으로 채택했습니다.

 

파일 권한을 확인

ls -l /etc/rancher/k3s/k3s.yaml

root 사용자만 접근 가능하기 때문에 일반 사용자로는 접근할 수 없다는것을 알 수 있습니다.

 

현재 사용자에게 권한을 부여하기

sudo chmod 644 /etc/rancher/k3s/k3s.yaml

 

실행 후 다시 권한 확인

 

그런 다음 다시 실행:

kubectl get pods

이제 잘 실행 되는것을 확인 할 수 있습니다.

 

저는 개인적으로 kubectl 도 길어서 k 로 단축 시키겠습니다.

echo "alias k='k3s kubectl'" >> ~/.bashrc
source ~/.bashrc

 

이제 잘 작동 합니다.

 

 

반응형

댓글