Kubernetes (K3s)
Lumie 플랫폼은 K3s를 사용하여 경량화된 Kubernetes 클러스터를 운영합니다. K3s는 Oracle Cloud Infrastructure(OCI)의 ARM64 인스턴스에서 실행되며, 멀티 테넌시 환경을 지원합니다.
클러스터 아키텍처
노드 구성
클러스터는 두 개의 OCI 계정에 걸쳐 구성되어 있으며, VCN 피어링을 통해 연결됩니다:
0214 계정 (마스터 계정)
-
마스터 노드:
k3s-master- 컨트롤 플레인 컴포넌트
- etcd 데이터베이스
- ArgoCD 설치
- Private IP:
10.0.0.241
-
워커 노드:
k3s-worker-2- 애플리케이션 워크로드
- 모니터링 스택
- MinIO 스토리지
- Traefik svclb (포트 80/443)
worker-1은 비용 최적화로 2026-04 제외됨
0213 계정 (워커 계정)
- 워커 노드:
k3s-worker-3,k3s-worker-4- 추가 워커 노드
- VCN 피어링을 통해 마스터와 연결
- MinIO 스토리지
- Traefik svclb (포트 80/443)
네트워크 구성
K3s 구성
버전 및 설정
- K3s 버전:
v1.34.3+k3s1 - CNI: Flannel (기본값)
- Ingress: Traefik 활성화 (K3s 기본 내장)
- Storage: local-path-provisioner
마스터 노드 설정
# provision/ansible/group_vars/masters.yml
k3s_server_args:
- "--write-kubeconfig-mode 644"
- "--tls-san {{ ansible_host }}" # 공용 IP
- "--tls-san {{ private_ip }}" # 프라이빗 IP
- "--cluster-cidr {{ k3s_cluster_cidr }}"
- "--service-cidr {{ k3s_service_cidr }}"
--disable traefik 옵션이 없으므로 K3s 내장 Traefik이 활성화됩니다. Traefik의 svclb DaemonSet은 마스터 노드에서 제외되어 443 포트 충돌을 방지합니다.
워커 노드 연결
워커 노드는 마스터의 Private IP를 통해 연결됩니다:
# 0214 계정 워커 (같은 VCN)
K3S_URL="https://10.0.0.241:6443"
# 0213 계정 워커 (VCN 피어링)
K3S_URL="https://10.0.0.241:6443"
클러스터 접근
Kubeconfig 설정
Ansible을 통해 kubeconfig를 로컬로 가져올 수 있습니다:
# kubeconfig 가져오기
ansible-playbook -i inventory/terraform_inventory.py playbooks/fetch-kubeconfig.yml
# 환경 변수 설정
export KUBECONFIG=provision/ansible/kubeconfig/config
# 클러스터 확인
kubectl get nodes
SSH 접근
# 마스터 노드 접근
ssh ubuntu@<master-public-ip>
# 마스터에서 kubectl 사용
sudo kubectl get nodes
sudo kubectl get pods -A