Kubernetes

Kubernetes RuntimeClass 사용하여 gVisor로 컨테이너 실행

DevelopC 2023. 3. 3. 23:59
728x90

Kubernetes RuntimeClass 사용하여 gVisor로 컨테이너 실행

gVisor 란

gVisor는 Google에서 개발한 컨테이너 런타임으로, 샌드박스(Sandbox)라는 기술을 기반으로 합니다. 컨테이너 안에서 실행되는 프로세스는 호스트 시스템과 격리되며, 시스템 호출은 gVisor 커널을 통해 중개됩니다. 이를 통해 컨테이너가 안전하게 실행되고, 컨테이너 간의 간섭을 방지할 수 있습니다. gVisor는 커널 단위의 격리 기술인 네임스페이스와 cgroup을 사용하여 컨테이너를 격리합니다. 또한, gVisor는 기본적으로 제공되는 Linux 커널을 사용하지 않고, 고유한 가상 커널을 사용하여 컨테이너를 격리합니다. 이 가상 커널은 Linux 시스템 호출을 에뮬레이션 하며, 이를 통해 컨테이너가 안전하게 실행될 수 있습니다. gVisor는 다양한 컨테이너 런타임에서 사용할 수 있습니다. 예를 들어, Docker와 Kubernetes에서도 gVisor를 사용하여 컨테이너를 실행할 수 있습니다. gVisor는 다른 컨테이너 런타임과 비교하여 성능 면에서 손해를 보지만, 안정성과 보안성 면에서 우수한 결과를 보여줍니다. 따라서 안전한 컨테이너 실행이 필요한 환경에서 gVisor를 사용할 수 있습니다.

Kubernetes RuntimeClass

Kubernetes RuntimeClass는 Kubernetes에서 컨테이너를 실행하는 데 사용되는 런타임 환경을 지정하고 관리하는 방법을 제공합니다.

Kubernetes에서는 일반적으로 모든 컨테이너가 동일한 런타임 환경에서 실행됩니다. 그러나 때로는 다른 런타임 환경을 사용하여 컨테이너를 실행해야 할 때가 있습니다. 예를 들어, 보안상의 이유로 gVisor나 Kata Containers와 같은 런타임 환경을 사용해야 할 수 있습니다.

Install

아래의 예제는 containerd를 사용하였습니다.

gVisor 설치

gVisor 릴리스 페이지에서 호스트 운영 체제에 맞는 gVisor 패키지를 다운로드하고 압축을 , runsc와 containerd-shim-runsc-v1 파일을 /usr/bin 디렉토리에 복사합니다.  containerd 설정파일에 (/etc/containerd/config.toml) 아래의 내용을 추가합니다.

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runsc]
runtime_type = "io.containerd.runsc.v1"

RuntimeClass

kubectl 명령어를 사용하여 아래의 RuntimeClass를 등록합니다.

apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
  name: gvisor
handler: runsc

실행

아래의 코드처럼 runtimeClassName를 지정하면 gVisor에서 컨테이너가 실행됩니다. Pod를 생성하고 실행하면, containerd에서 gVisor를 사용하여 컨테이너가 실행됩니다. 이를 통해 컨테이너에서 실행되는 프로세스가 호스트 시스템과 격리되어 안전한 실행 환경을 제공할 수 있습니다.

apiVersion: v1
kind: Pod
metadata:
  name: my-gvisor-pod
spec:
  runtimeClassName: gvisor
  containers:
    - name: nginx
      image: nginx

참고

 

The Container Security Platform | gVisor

Protect Workloads and Infrastructure Run untrusted workloads without compromising other workloads or the underlying infrastructure. Block container escapes by keeping attackers from breaking out of containers and into hosts or other containers. Mitigate pr

gvisor.dev

 

 

Runtime Class

FEATURE STATE: Kubernetes v1.20 [stable] This page describes the RuntimeClass resource and runtime selection mechanism. RuntimeClass is a feature for selecting the container runtime configuration. The container runtime configuration is used to run a Pod's

kubernetes.io

 

728x90

'Kubernetes' 카테고리의 다른 글

AWS Fluent Bit error 수정  (0) 2023.03.14
AWS EKS 클러스터 버전 업그레이드  (0) 2023.03.09
Prometheus 메모리 튜닝  (0) 2023.02.22
containerd 로그 수집을 위한 AWS Fluent Bit 설정  (0) 2022.12.02
Grafana Mimir  (0) 2022.10.28