최근에 어떤 선배가 모 공모전 버스를 태워주셔서 문서작업같은 간단한 일을 돕고 있다.
기술 수준이 높아서 적어두신 아이디어나 관련 문서 구경하는 것도 재밌다.
제공받은 연구망에서 개발한 K8S 아키텍쳐랑 기존 서비스 모델 아키텍쳐를 비교하여 비용 효율성을 검증하는 부분을 진행하고 있는데, 그 부분을 공부하다보니 kata-container라는 (new) 가상화 기술에 대해 알게 되었다.
Docker의 보안성 문제

VM과 Docker의 차이점을 이야기할 때 자주 나오는 아키텍쳐 사진이다.
VM은 Hypervisor 엔진을 활용하는 가상화 기술로, Hypervisor 엔진 위에 다양한 Guest OS들을 입맛에 맞게 멀티부팅하여 사용하기 때문에 무거울 수밖에 없다.
Docker는 반면에 커널을 공유하고, 그 위에 cgroups와 namespace로 격리하기 때문에 OS 무게가 확 줄어서 가볍다는 큰 장점이 있음
그러나 Docker가 커널을 공유하기 때문에 privilege escalation으로 호스트 커널을 장악할 수 있다는 문제가 있다.
kata-container
kata-container는 Docker의 보안성 문제에서 시작되었다.
"VM의 높은 보안 수준 + 컨테이너 가상화의 경량성" 장점을 합친 기술인 것이다!(wow)
장점
kata-container는 KVM이라는 리눅스 커널 기반 가상화 기술에 기반한다.
KVM 기반 가상화 기술로는 QEMU, AWS Lambda에서 개발한 firecracker 등이 있다.
같은 계열 기술들 중에서도 kata는 containerd, CRI-O 등 컨테이너 런타임과의 통합성 측면에서 뛰어나서 편리하다.
단점
근데 결국 이 친구는 VM계열 기술이라 Docker만큼 가벼울 수가 없다..
아무래도 이식성도 좀 많이 떨어지는 편
kata로 컨테이너 생성해보기
#ubuntu 공식 저장소에 kata가 지원 안되므로 깃헙 쉘 스크립트로 설치
wget https://raw.githubusercontent.com/kata-containers/kata-containers/main/utils/kata-manager.sh
chmod +x kata-manager.sh
# 모든 구성요소 설치 (Kata + containerd 포함)
sudo ./kata-manager.sh
#설치 확인
kata-runtime --version
#Kata로 컨테이너 생성할 수 있는지 확인
sudo kata-runtime check
#containerd 설치 확인
which containerd
containerd --version
#Kata-containerd 실행테스트
sudo ctr images pull docker.io/library/busybox:latest
sudo ctr run --runtime io.containerd.kata.v2 -t --rm docker.io/library/busybox:latest kata-test sh
containerd랑 통합되어서 ctr 명령어 쓸 수 있다는 점이 굉장히 편리했다.
