Summary

k3s를 설치하고 초기 설정하는 방법에 대해 정리했습니다.

Quick Links

사전 준비

기존에 Nginx Proxy Manager + 를 통해 Reverse Proxy를 통한 웹 서비스를 관리했는데 k3s에는 내부 자체의 Reverse Proxy 도구인 Traefik이 있습니다. 자동으로 80 포트와 443 포트를 사용하려고 시도하기 때문에 Nginx Proxy Manager + 를 미리 종료시켰습니다.

설치

k3s 설치 방법은 매우 간단합니다. 공식 홈페이지에 있는 스크립트를 사용하면 바로 설치 가능합니다.

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

이후 설치가 완료되면 아래 명령어를 통해 설치 완료 여부를 판단할 수 있습니다.

sudo k3s kubectl get node

초기 설정

사용자 권한으로 실행하기

k3s 명령어를 실행시키기 위해서는 sudo k3s를 계속 붙여줘야해서 매우 번거롭습니다. 이를 생략하기 위한 방법입니다.

# 1. 사용자용 kube 디렉토리 생성
mkdir -p ~/.kube
 
# 2. k3s의 관리자 설정 파일을 복사
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
 
# 3. 설정 파일의 소유권 이전
sudo chown $(id -u):$(id -g) ~/.kube/config
 
# 4. zsh에 자동완성 기능 추가
echo 'export KUBECONFIG=~/.kube/config' >> ~/.zshrc
 
# 5. 설정 적용
source ~/.zshrc
 
# 6. 동작 확인
kubectl get node

k3s.yaml config 인 이유

kubectl은 사용자가 별도 옵션을 주지 않으면 기본적으로 ~/.kube/ 디렉토리에 있는 config라는 이름의 파일을 가장 먼저 찾도록 설계되어 있습니다.

k8s 관리 도구 추천

  • k9s : k8s 관리 TUI 도구
  • OpenLens : k8s 관리 GUI 도구
  • helm : k8s 앱 관리 도구

yaml 폴더 설정

k3syaml를 저장하기 위한 폴더를 설정합니다. 저 같은 경우에는 ~/k3s를 생성했습니다.

Tip

해당 폴더를 git을 통해 관리하는 것을 추천드립니다.

namespace 생성

Namespacek8s에서 서비스들을 그룹화하여 격리할 수 있는 기능입니다. 같은 Namespace 안에서만 소통할 수 있기 때문에 특정 서비스에 의존해야하는 서비스의 경우 같은 Namespace안에 놓습니다.

# 인프라성 서비스 (PostgreSQL, Authentik 등)
kubectl create namepsace core-infra
 
# 일반 사용자용 서비스 (Stirling-PDF, VaultWarden 등)
kubectl create namespace apps
 
# 생성 확인
kubectl get ns