Jeden Kubernetes cluster, pět týmů, tři klienti. Jak zajistit izolaci, fair resource sharing a zabránit tomu, aby jeden tým sežral resources ostatním? Namespaces s Resource Quotas.
Namespace per tenant¶
Každý tým/klient dostane vlastní namespace: team-alpha, client-bank, client-insurance. V kombinaci s RBAC je to základní building block multi-tenancy.
Resource Quotas¶
apiVersion: v1
kind: ResourceQuota
metadata:
name: team-alpha-quota
namespace: team-alpha
spec:
hard:
requests.cpu: "8"
requests.memory: 16Gi
limits.cpu: "16"
limits.memory: 32Gi
pods: "50"
services: "20"
Tým Alpha má garantovaných 8 CPU a 16 GB RAM. Může burstovat do 16 CPU a 32 GB, ale ne víc. Maximum 50 podů.
LimitRange — defaults pro pody¶
LimitRange nastavuje výchozí requests a limits pro pody, které je nespecifikují. Ochrana proti „pod bez limits, který sežere celý node.”
Network Policies per namespace¶
Default deny v každém namespace + explicitní povolení. Namespace team-alpha nemůže komunikovat s client-bank. Izolace na síťové úrovni.
Limity přístupu¶
- RBAC: admin v namespace, read-only v cluster
- Resource Quotas: fair sharing compute resources
- Network Policies: síťová izolace
- Pod Security Policies: bezpečnostní omezení
Soft multi-tenancy je dosažitelná¶
Namespaces s RBAC, quotas a network policies poskytují dostatečnou izolaci pro týmy v jedné organizaci. Pro hard multi-tenancy (nedůvěryhodní tenanti) zvažte oddělené clustery.