반응형
1. 개념
- 하이퍼바이저를 활용해 가상화를 구현한 VM과 달리 컨테이너는 Host OS를 공유하는 형태이므로 컨테이너의 시스템콜이 Host OS로 요청됨
- 이러한 escaping을 통제하기 위해 샌드박싱 기법을 활용하게 되는데 seccomp, apparmor를 적용하는 것은 현실적으로 불가능(각 애플리케이션별로 허용 가능한 syscall을 판별하고 허용해줘야 해서)
2. gVisor
- 이러한 문제의 현실적 대안으로서 gVisor 활용
- gVisor는 컨테이너를 위한 애플리케이션 커널 역할을 수행하면서 Application(Container)의 System Call Layer 역할을 수행함으로서 Application과 Host OS의 Kernel을 분리
- gVisor는 Sentry와 Gofer로 구성
- Sentry
- Application(Container)으로부터의 syscall에 대한 요청/응답을 인터셉트하는 애플리케이션 커널 역할
- User 레이어에 커널의 형태로 구현한 것이므로 Host에 syscall을 요청하지 못함(예를들어 File들을 직접 Open하지 못하고, sandbox를 넘어서는 File System들에 대해 권한이 없음)
- Gofer
- Sentry에 권한이 없는 File System 리소스에 접근할 수 있도록 돕는 매개체 역할
- gVisor의 단점은 모든 애플리케이션에 대해 동작하는 것이 아니고, 중간에서 일종의 MITM을 하다보니 CPU 사용량이 증가함
- gVisor를 적용하려는 경우 사진과 같이 RuntimeClass를 정의 후 yaml에 명시해주면 됨
3. Kata Containers
- VM 기술을 일부 차용하는 방식의 컨테이너 샌드박싱 기법
4. 참고
반응형
'Kubernetes' 카테고리의 다른 글
Kubernetes OPA 개념 (0) | 2024.03.08 |
---|---|
Kubernetes SecurityContext 개념 및 설정2 (0) | 2024.03.06 |
Kubernetes ETCD 암호화 개념 및 실습 (0) | 2024.03.05 |
Kubernetes CertificateSigningRequests 개념 및 실습 (0) | 2024.03.01 |
Kubernetes 서비스어카운트(ServiceAccount) 개념 및 설정2 (0) | 2024.02.29 |