피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Proxmox LXC 환경 내 k3s 클러스터 구축을 통한 리소스 최적화 및 커널 제약 해결
Running k3s on Proxmox: A Multi-Node Cluster with a VM and LXC Worker — The Hard Way and Back
AI 요약
Context
전통적인 VM 기반 Kubernetes 구축의 높은 리소스 오버헤드 해결을 위해 경량화 배포판인 k3s 채택. 특히 호스트 커널을 공유하는 LXC 컨테이너를 Worker 노드로 활용하여 인프라 효율성을 극대화하고자 함.
Technical Solution
- VM 대비 낮은 오버헤드를 위해 단일 바이너리 형태의 k3s를 사용하여 Control Plane과 Worker 노드 구성
- LXC의 커널 공유 특성에 따른 br_netfilter 모듈 부재 문제를 Proxmox 호스트 레벨의 모듈 로딩으로 해결
- k3s 노드 식별 기준인 Hostname 중복으로 인한 Join 실패를 개별 노드 호스트네임 고유화 설정을 통해 해결
- 이전 클러스터 참여 이력으로 인한 Node Password 불일치 문제를 /etc/rancher/node/password 제거 및 Kubernetes Secret 삭제로 해결
- LXC 컨테이너의 제한적인 Syscall 및 권한 문제를 AppArmor 설정 조정과 Privileged 모드 검토를 통해 해결
실천 포인트
1. LXC 기반 K8s 구축 시 커널 모듈(br_netfilter 등)은 컨테이너 내부가 아닌 호스트에서 먼저 로드할 것
2. 노드 추가 전 Hostname 중복 여부를 확인하여 API 서버의 노드 등록 거부 방지
3. 재설치 시 /etc/rancher/node/password 파일과 클러스터 내 관련 Secret을 모두 제거하여 인증 충돌 방지
4. LXC의 보안 격리 수준과 k3s의 OS 수준 권한 요구사항 간의 Trade-off를 분석하여 적절한 권한 부여