- 개인용 서버와 소형 VPS에서는 Kubernetes의 선언형 자동화가 매력적이지만, CPU·메모리 부담과 운영 복잡도가 실제 이득을 앞지를 수 있음
- Kubernetes는 원하는 상태를 계속 맞추는 방식으로 Pod 조정과 TLS 인증서 갱신 같은 자동화를 해주지만, 이를 위해 꽤 큰 런타임을 상시 유지함
- Azure Kubernetes Service, Microk8s, K3S, Raspberry Pi 실험에서 유휴 리소스 사용량과 발열·팬 소음이 반복적으로 문제가 됨
- Podman은 컨테이너를 systemd 서비스로 만들고
io.containers.autoupdate와podman auto-update로 새 이미지를 감지해 교체할 수 있음 - Podman, systemd, user lingering 조합은 Kubernetes에서 원했던 자동화 대부분을 더 단순하게 제공하지만, systemd 통합은 Quadlet 방향으로 이동 중임
Kubernetes 자동화가 개인 서버에는 무거웠던 이유
- Kubernetes는 여러 구성요소, 웹 서비스, 사이드카, 웹훅으로 이뤄져 있지만 핵심 동작은 현재 상태와 원하는 상태를 계속 비교해 차이를 적용하는 루프에 가까움
- Pod가 있어야 하는데 없으면 생성함
- replica가 3개여야 하는데 4개면 하나를 제거함
- 이 모델은 cert-manager 같은 확장에서 특히 유용했음
- 특정 도메인에 유효한 TLS 인증서가 있어야 한다고 선언함
- 인증서 요청 방법을 알려두면, 인증서가 없거나 만료가 가까울 때 새 인증서를 받아 웹 서버에 설치함
- 개인 실험 용도에서는 재미있고 학습 가치도 있었지만, 실제 운영 목적에는 과도한 도구에 가까웠음
- 리소스 부담은 여러 환경에서 반복됨
- NUC에서는 컴퓨터가 계속 돌며 뜨거워지고 팬 소음이 생겨 잠자기 어려웠음
- Azure Kubernetes Service에서는 Kubernetes 구현이 RAM을 크게 차지했고, worker node에서 유휴 CPU를 약 7~10% 사용함
- 2 vCPU x86_64 VPS의 단일 인스턴스 Microk8s는 유휴 CPU가 약 12% 수준이었음
- 2 vCPU Ampere A1 머신의 K3S는 더 가벼운 구현으로 알려졌지만 약 6% 의 상시 CPU를 사용함
- Raspberry Pi에서도 발열·팬 문제 없이 워크로드에 충분한 CPU를 남기는 구현을 찾지 못함
Podman과 systemd로 바꾼 자동화 방식
- Kubernetes로 계속 돌아가게 만든 가장 큰 이유는 배포 자동화였음
- GitOps와 Flux를 쓰면 변경 작업이 쉬웠음
- 컨테이너 이미지 자동화와 Flux v2의 웹훅으로 새 이미지를 푸시하면 몇 초 안에 서버가 새 이미지를 받아 프로덕션 애플리케이션을 실행했음
- Kubernetes 밖에서 찾은 기존 대안들은 만족스럽지 않았음
- 원래 명령행 인자를 모두 기억해 컨테이너를 다시 만드는 방식은 관리 부담이 컸음
docker.sock전체 제어권을 요구하는 도구도 선호하지 않았음
- Podman auto-updating이 필요한 기능에 가까웠음
- Podman은 Docker CLI 대안으로 볼 수 있음
- 컨테이너를 만든 뒤 systemd 서비스 파일을 생성할 수 있음
- 서비스를 시작하면 컨테이너를 생성하거나 교체하고, 서비스를 중지하면 컨테이너를 제거함
- 자동 업데이트는
io.containers.autoupdate태그로 동작함- 하루 한 번 타이머로 실행하거나
podman auto-update를 직접 실행함 - 새 이미지가 있으면 해당 이미지로 컨테이너를 재생성함
- 하루 한 번 타이머로 실행하거나
- Fedora Magazine의 Auto-updating Podman containers with systemd가 대부분의 구현 방법을 제공했고, 추가로 두 가지 설정이 필요했음
systemctl --user enable mycontainer.service로 로그인할 때 컨테이너가 자동 시작되게 함loginctl enable-linger로 서버 시작 시 사용자 세션이 동작하게 함
- Podman, systemd, user lingering 조합으로 Kubernetes에서 얻던 이점의 약 99% 를 훨씬 낮은 복잡도와 CPU·메모리 부담으로 얻음
- 전체 서비스를 기존 VPS에서 vCPU와 RAM이 절반인 새 VPS로 옮겼고, 몇 시간 실행 기준으로 더 가볍고 빠르며 컴퓨트 비용도 낮았음
- 다만 Podman의 systemd 통합은 이미 지원 중단된 것으로 보이며, 컨테이너 정의는 Quadlet 파일 방향으로 논의되고 있음