gVisor is a user-space sandboxing runtime for containers that provides additional isolation between workloads and the host kernel.
- Reduces the attack surface by limiting kernel syscall access.
- Provides better isolation than traditional Linux namespaces.
- Protects against container escape vulnerabilities.
curl -fsSL https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/runsc -o runsc
chmod +x runsc
sudo mv runsc /usr/local/bin/curl -fsSL https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/runsc-kernel -o runsc-kernel
chmod +x runsc-kernel
sudo mv runsc-kernel /usr/local/bin/Modify /etc/containerd/config.toml:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runsc]
runtime_type = "io.containerd.runsc.v1"Restart containerd:
sudo systemctl restart containerdCreate a RuntimeClass:
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
name: gvisor
handler: runscapiVersion: v1
kind: Pod
metadata:
name: gvisor-test
spec:
runtimeClassName: gvisor
containers:
- name: app
image: busybox
command: ["sleep", "3600"]- Check if gVisor is running:
runsc --version
- Ensure the runtime is configured correctly:
kubectl get runtimeclass
- Check container runtime:
kubectl get pod gvisor-test -o jsonpath='{.spec.runtimeClassName}'
- Blocks privileged container access to host syscalls.
- Limits ptrace-based attacks.
- Prevents syscall-based exploits using a virtualized syscall layer.
- Use gVisor for multi-tenant workloads.
- Restrict privileged containers when using gVisor.
- Test application compatibility with gVisor since not all syscalls are supported.
- Monitor gVisor logs for debugging security issues:
journalctl -u containerd | grep runsc
Reference: gVisor Documentation