Markdown Preview
경량 쿠버네티스를 위한 K3s 설치 및 관리 가이드
Frontmatter
K3s는 경량 쿠버네티스 배포판으로, 사전 hosts 파일 설정 후 마스터와 워커 노드에 설치 스크립트를 사용해 간단히 배포할 수 있다. 마스터 노드는 VXLAN 기반 Flannel 네트워크와 토큰 기반 인증을 설정하고, 워커 노드는 마스터 토큰을 이용해 클러스터에 참여한다. 설치 후 kubectl으로 노드와 파드 상태를 확인하고, 필요 시 제공된 제거 스크립트나 수동 절차로 완전히 삭제할 수 있다.
이번에는 k3s를 설치해보겠습니다. k3s는 경량화된 쿠버네티스 배포판으로, 리소스 요구사항이 적고 설치가 간단하면서도 쿠버네티스의 기능을 대부분 제공합니다.
사전 설정
각 노드의 hosts 파일 수정
K3s 클러스터를 구성하기 전, 모든 노드에서 마스터 노드의 IP 주소를 k3s.test.com 도메인으로 인식할 수 있도록 hosts 파일을 수정해야 합니다. 아래 단계를 따라 각 노드에서 수정해 주세요.
1. 마스터 노드 IP 확인
# 마스터 노드에서 실행
ip addr show | grep inet출력된 결과에서 마스터 노드의 IP 주소를 확인합니다. 예: 192.168.1.100
2. hosts 파일 수정
모든 노드(마스터 및 워커 노드)에서 다음 명령어를 사용하여 hosts 파일을 수정합니다:
# 관리자 권한으로 hosts 파일 열기
sudo nano /etc/hosts
# 아래 줄을 추가 (마스터 노드 IP 주소를 실제 IP로 변경)
192.168.1.100 k3s.test.comnano 대신 vi나 vim 등 다른 텍스트 편집기를 사용해도 됩니다.
3. hosts 파일 적용 확인
# 설정이 적용되었는지 확인
ping k3s.test.com이제 모든 노드에서 k3s.test.com 도메인을 통해 마스터 노드와 통신할 수 있습니다. 이 설정이 완료된 후 K3s 설치 작업을 진행하세요.
K3s 설치
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server" sh -s - --flannel-backend none --token <CHANGE_K3S_TOKEN>
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server --flannel-backend none" K3S_TOKEN=<CHANGE_K3S_TOKEN> sh -s -
curl -sfL https://get.k3s.io | K3S_TOKEN=<CHANGE_K3S_TOKEN> sh -s - server --flannel-backend none
# server is assumed below because there is no K3S_URL
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--flannel-backend none --token <CHANGE_K3S_TOKEN>" sh -s -
curl -sfL https://get.k3s.io | sh -s - --flannel-backend none --token <CHANGE_K3S_TOKEN>이제 우리가 사용할 K3s 설치 방법에 대해 구체적으로 설명하겠습니다.
우리의 K3s 설치 구성
- K3S_URL: k3s.test.com
- 네트워크 백엔드: vxlan (Flannel VXLAN 모드)
마스터 노드 설치 명령어
# 마스터 노드 설치
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server" K3S_URL="https://k3s.test.com" K3S_KUBECONFIG_MODE="644" sh -s - --flannel-backend=vxlan이 명령어는 다음 옵션을 사용합니다:
- INSTALL_K3S_EXEC="server": 이 노드를 마스터(서버) 노드로 설정
- K3S_URL="https://k3s.test.com": 클러스터 API 서버의 URL 설정
- K3S_KUBECONFIG_MODE="644": kubeconfig 파일의 권한을 644로 설정하여 일반 사용자도 접근 가능
- --flannel-backend=vxlan: Flannel 네트워크 백엔드로 vxlan 사용
워커 노드 설치 명령어
# 워커 노드 설치 (마스터 노드에서 토큰 값 가져온 후)
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent --server https://k3s.test.com:6443 --token <토큰값>" sh -s - --flannel-backend=vxlan워커 노드 설치 시 필요한 토큰은 마스터 노드의
/var/lib/rancher/k3s/server/node-token 파일에서 확인할 수 있습니다.설치 확인
설치 완료 후 클러스터 상태를 확인하려면:
# 노드 상태 확인
kubectl get nodes
# 시스템 파드 확인
kubectl get pods -n kube-systemK3s 제거하는 방법
K3s를 설치했던 방식에 따라 제거 방법이 다릅니다. 아래는 주요 제거 방법입니다.
스크립트를 이용한 제거
K3s는 설치 시 자동으로 제거 스크립트도 제공합니다.
- 서버(마스터) 노드 제거:
/usr/local/bin/k3s-uninstall.sh- 에이전트(워커) 노드 제거:
/usr/local/bin/k3s-agent-uninstall.sh수동으로 정리하기
스크립트가 제대로 작동하지 않을 경우, 다음 단계를 통해 수동으로 정리할 수 있습니다:
- 서비스 중지:
systemctl stop k3s
# 에이전트 노드의 경우
systemctl stop k3s-agent- 프로세스 확인 및 종료:
ps aux | grep k3s
# 관련 프로세스 종료
kill -9 <PID>- 파일 시스템 정리:
# 구성 파일 제거
rm -rf /etc/rancher /etc/kubernetes
# 데이터 제거 (주의: 모든 워크로드 데이터가 삭제됨)
rm -rf /var/lib/rancher /var/lib/kubelet /var/lib/cni
# 로그 제거
rm -rf /var/log/pods /var/log/containers- 네트워크 인터페이스 정리:
# Flannel 인터페이스 제거
ip link delete flannel.1
ip link delete cni0제거 후 확인
모든 K3s 관련 프로세스가 종료되었는지 확인합니다.
ps aux | grep k3s
systemctl status k3s
# 또는 에이전트 노드의 경우
systemctl status k3s-agent이렇게 K3s를 완전히 제거하면, 시스템이 초기 상태로 돌아가며 필요한 경우 다시 설치할 수 있습니다.
정리
이 문서에서는 K3s의 설치 방법과 구성, 그리고 제거 방법에 대해 자세히 알아보았습니다. K3s는 경량화된 쿠버네티스 배포판으로, 간단한 설치 과정과 효율적인 리소스 사용으로 다양한 환경에서 활용할 수 있습니다.
핵심 정리
✅ 사전 설정: 모든 노드의 hosts 파일을 수정하여 마스터 노드(k3s.test.com)와 통신 가능하도록 구성
✅ 마스터 노드 설치: VXLAN 네트워크 백엔드를 사용하여 서버 모드로 설치, kubeconfig 권한 설정
✅ 워커 노드 설치: 마스터 노드의 토큰을 사용하여 에이전트 모드로 클러스터에 참여
✅ 네트워크 구성: Flannel VXLAN 백엔드를 통한 오버레이 네트워크 구성
✅ 제거 방법: 자동 제거 스크립트 제공, 필요시 수동으로 서비스, 파일, 네트워크 인터페이스 정리
✅ 확인 사항: kubectl 명령어로 노드 상태 및 시스템 파드 확인, 제거 후 프로세스 종료 검증