102 lines
3.3 KiB
Markdown
102 lines
3.3 KiB
Markdown
# Kata Containers
|
|
|
|
#kubernetes #security #sandbox #słownik
|
|
|
|
## Co to jest?
|
|
|
|
**Kata Containers** to technologia łącząca **lekkość kontenerów z bezpieczeństwem maszyn wirtualnych**. Każdy kontener (lub pod) uruchamiany jest wewnątrz dedykowanej, lekkiej VM z własnym kernelem.
|
|
|
|
## Jak działa?
|
|
|
|
```
|
|
Bez Kata:
|
|
Container → shared Host Kernel
|
|
|
|
Z Kata:
|
|
Container → Guest Kernel (dedykowany) → Hypervisor (QEMU/Cloud Hypervisor) → Host Kernel
|
|
```
|
|
|
|
Każdy pod dostaje:
|
|
- **Własny kernel Linux** (guest kernel)
|
|
- **Własną przestrzeń pamięci** (izolacja hypervisora)
|
|
- **Dedykowany agent** (kata-agent) zarządzający kontenerem wewnątrz VM
|
|
|
|
## Architektura
|
|
|
|
```
|
|
┌──────────────────────────────────┐
|
|
│ Host (Node) │
|
|
│ │
|
|
│ ┌────────────────────────────┐ │
|
|
│ │ Lightweight VM │ │
|
|
│ │ ┌──────────────────────┐ │ │
|
|
│ │ │ Container │ │ │
|
|
│ │ │ (agent pod) │ │ │
|
|
│ │ └──────────────────────┘ │ │
|
|
│ │ Guest Kernel (Linux) │ │
|
|
│ └────────────────────────────┘ │
|
|
│ Hypervisor (QEMU/Cloud HV/FC) │
|
|
│ Host Kernel │
|
|
└──────────────────────────────────┘
|
|
```
|
|
|
|
## Hypervisory wspierane
|
|
|
|
| Hypervisor | Opis | Użycie |
|
|
|------------|------|--------|
|
|
| **QEMU** | Pełnofunkcyjny, uniwersalny | Domyślny |
|
|
| **Cloud Hypervisor** | Zoptymalizowany dla cloud-native | Produkcja |
|
|
| **Firecracker** | Micro-VM od AWS (Lambda/Fargate) | Serverless |
|
|
| **ACRN** | Dla IoT/embedded | Specjalistyczny |
|
|
|
|
## Porównanie z gVisor
|
|
|
|
| Aspekt | [[gVisor]] | Kata Containers |
|
|
|--------|---------|-----------------|
|
|
| Mechanizm | User-space kernel (Sentry) | Lightweight VM (hypervisor) |
|
|
| Izolacja | Przechwytywanie syscalls | Pełna izolacja kernela |
|
|
| Overhead | 5-10% | 15-20% |
|
|
| Kompatybilność | ~95% syscalls | ~99% |
|
|
| Startup time | Szybki (~100ms) | Wolniejszy (~500ms-2s) |
|
|
| Memory overhead | Niski (~20MB) | Wyższy (~50-100MB per VM) |
|
|
| GPU support | Ograniczone | Lepsze (PCI passthrough) |
|
|
| Bezpieczeństwo | Silne | **Najsilniejsze** (VM boundary) |
|
|
|
|
## Kiedy Kata vs gVisor?
|
|
|
|
### Wybierz gVisor gdy:
|
|
- Potrzebujesz niskiego overhead
|
|
- Workload jest I/O-intensive
|
|
- Chcesz szybki startup
|
|
|
|
### Wybierz Kata gdy:
|
|
- Potrzebujesz **najsilniejszej izolacji** (compliance, untrusted code)
|
|
- Workload wymaga pełnej kompatybilności syscalls
|
|
- GPU passthrough jest potrzebny
|
|
|
|
## Użycie w Kubernetes
|
|
|
|
Kata integruje się przez [[RuntimeClass]]:
|
|
|
|
```yaml
|
|
apiVersion: node.k8s.io/v1
|
|
kind: RuntimeClass
|
|
metadata:
|
|
name: kata
|
|
handler: kata-qemu
|
|
```
|
|
|
|
## Użycie w Sympozium
|
|
|
|
```yaml
|
|
agentSandbox:
|
|
enabled: true
|
|
runtimeClass: kata
|
|
```
|
|
|
|
Wymaga: Kata Containers zainstalowane na nodach + RuntimeClass `kata`.
|
|
|
|
---
|
|
|
|
Powiązane: [[gVisor]] | [[Agent Sandbox - gVisor i Kata]] | [[RuntimeClass]] | [[Model bezpieczeństwa Defence-in-Depth]]
|