기반 인프라
k3s
풀 쿠버네티스 대신 k3s를 씀 — 단일 바이너리, 가벼움, 집 서버 2대 규모에 딱 맞음. Traefik(인그레스), CoreDNS, local-path-provisioner 등이 k3s에 기본 내장되어 있어서 별도로 설치 안 해도 됨.
Kata Containers — EC2의 진짜 정체
사용자에게 "EC2"라고 보여주는 건 사실 진짜 VM이 아니라, Kata Containers 런타임으로 격리된 컨테이너입니다. Kata는 컨테이너를 경량 microVM(QEMU 기반) 안에서 돌려서, 커널 자체를 호스트와 분리시킵니다 — 일반 컨테이너(runc)보다 훨씬 강한 격리를 주면서도, k8s의 스케줄링/네트워킹/볼륨 생태계는 그대로 씁니다.
예외: GPU를 쓰는 EC2는 Kata가 아직 GPU 패스스루를 지원하지 않아서
nvidia런타임(runc + NVIDIA 드라이버·장치 주입)으로 돕니다. 즉 GPU EC2는 다른 EC2보다 격리 수준이 낮습니다 — GPU 없는 EC2로 충분하면 굳이 GPU 옵션을 켤 필요 없음. 카드는 1장(GTX 1660 Super, 6GB)뿐이라 GPU EC2는 한 번에 하나만 켜집니다.(2026-10-29 수정: 그전에는 런타임을 지정하지 않아 GPU가 예약만 되고 EC2 안에서는 보이지 않았음)
Rook-Ceph — 스토리지
PVC(퍼시스턴트 볼륨)는 Rook-Ceph가 관리합니다. EC2 디스크는 ceph-block RBD(RADOS Block Device) 스토리지클래스, 여러 EC2가 공유하는 저장소는 ceph-fs CephFS 스토리지클래스를 씁니다 (저장소 참고). 2노드짜리 작은 클러스터라 ceph -s에 replica 관련 WARN이 떠있는 게 정상입니다 (OSD가 2개뿐이라 기본 replica 3을 못 채움 — 구조적 한계, 새로 생긴 문제 아님).
MetalLB — LoadBalancer IP
클라우드가 아니라 집 네트워크라 진짜 클라우드 로드밸런서가 없습니다. 대신 MetalLB를 layer2 모드로 써서, EC2 하나마다 집 LAN(192.168.219.0/24) 대역의 고유 IP를 하나씩 할당합니다. layer2 모드는 같은 L2 네트워크 안에서만 동작 — 그래서 이 방식은 원격(다른 집) 노드로는 그대로 확장이 안 됩니다.
Traefik — 인그레스
k3s에 기본 내장된 Traefik을 도메인 기반 HTTP(S) 라우팅에 씁니다 (jimmy-home.com 서브도메인들). 순수 TCP 프로토콜(Minecraft 같은)은 Ingress로 못 돌리므로, Service의 포트를 직접 열고 NetworkPolicy로 제어합니다 (네트워크 참고).