75 lines
1.7 KiB
Markdown
75 lines
1.7 KiB
Markdown
# RuntimeClass
|
|
|
|
#kubernetes #security #container-runtime #słownik
|
|
|
|
## Co to jest?
|
|
|
|
**RuntimeClass** to zasób Kubernetes pozwalający na **wybór container runtime** dla poda. Domyślnie pody używają standardowego runtime (runc), ale RuntimeClass pozwala na użycie alternatywnych runtime'ów jak [[gVisor]] (runsc) czy [[Kata Containers]].
|
|
|
|
## Jak działa?
|
|
|
|
```
|
|
1. Administrator tworzy RuntimeClass
|
|
2. Pod spec: runtimeClassName: gvisor
|
|
3. Kubelet: zamiast runc, użyj runsc (gVisor)
|
|
4. Pod uruchamiany w gVisor sandbox
|
|
```
|
|
|
|
## Przykład
|
|
|
|
```yaml
|
|
apiVersion: node.k8s.io/v1
|
|
kind: RuntimeClass
|
|
metadata:
|
|
name: gvisor
|
|
handler: runsc # Nazwa handler'a w konfiguracji containerd
|
|
|
|
---
|
|
apiVersion: node.k8s.io/v1
|
|
kind: RuntimeClass
|
|
metadata:
|
|
name: kata
|
|
handler: kata-qemu
|
|
```
|
|
|
|
## Containerd konfiguracja
|
|
|
|
```toml
|
|
# /etc/containerd/config.toml
|
|
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runsc]
|
|
runtime_type = "io.containerd.runsc.v1"
|
|
|
|
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.kata-qemu]
|
|
runtime_type = "io.containerd.kata.v2"
|
|
```
|
|
|
|
## Overhead scheduling
|
|
|
|
RuntimeClass może deklarować overhead:
|
|
```yaml
|
|
overhead:
|
|
podFixed:
|
|
memory: "120Mi"
|
|
cpu: "250m"
|
|
```
|
|
|
|
Kubernetes scheduler uwzględnia overhead przy planowaniu.
|
|
|
|
## Użycie w Sympozium
|
|
|
|
Sympozium obsługuje RuntimeClass przez [[Agent Sandbox - gVisor i Kata]]:
|
|
|
|
```yaml
|
|
# SympoziumPolicy - wymusza i ogranicza runtime classes
|
|
agentSandboxPolicy:
|
|
required: true
|
|
defaultRuntimeClass: gvisor
|
|
allowedRuntimeClasses: [gvisor, kata]
|
|
```
|
|
|
|
Controller tworzy Sandbox CR z `runtimeClassName` ustawionym z konfiguracji.
|
|
|
|
---
|
|
|
|
Powiązane: [[gVisor]] | [[Kata Containers]] | [[Agent Sandbox - gVisor i Kata]]
|