Kubernetes
Také viz k3s.
Užitečné tipy
resource control
Important
Je vhodné vždy nastavit rozumně nízké resource limity pro případ, kdy by pod kvůli nějaké chybě začal extrémně konzumovat zdroje a ohrozil ostatní pody!
Warning
Pokud nastavím resource limits a nespecifikuji requests, tak se pro request nastaví stejné hodnoty! Proto je vždy nutné explicitně nastavit requests na nižší hodnotu nebo "0". Kubernetes nikdy nedovolí overalokaci zdrojů pro requests, takže se tím worker snadno "zazdí" a návazně i celý cluster.
Příklad pro deployment:
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
containers:
- image: foo/bar:baz
resources:
requests:
memory: "20Mi"
cpu: "0"
limits:
memory: "200Mi"
cpu: "500m"
kubectl
pluginy
kube-capacity
Viz https://github.com/robscott/kube-capacity
List capacity used by pods, ordered by cpu.limit and grouped by node:
kubectl resource-capacity --sort cpu.limit --util --pods
užitečné příkazy a tipy
Force delete
Smaže k8s resource, ale nezaručí ukončení procesů na workeru (třeba při hard NFS mohou zůstat viset jako defunct).
kubectl delete pod <name> --force=true --grace-period=0
Migrace na nové PVC
PVC = Persistent Volume Claim
Repo: home.mixi.cz:/srv/git/repos/home/automation.git / kube/tools/copy-volume/
- připravit copy-volume-<app>.yaml kopií z nějakého existujícího,
- upravit názvy a velikosti claimu, název jobu a volume-src,
- pokud claim neexistuje, odkomentovat jeho vytvoření,
- spustit kubectl apply -f copy-volume-<app>.yaml,
- poznámka: používá se rsync, je obecně bezpečné ho pustit víckrát, hlavně pro zkrácení odstávky při větším množství dat se dá migrace připravit předem a před přepnutím jen dosynchronizovat,
- počkat na doběhnutí jobu kubectl get pods -o wide -w,
- upravit volume v manifestu pro aplikaci a přidat tam vytvoření PVC pokud tam ještě není,
- redeployovat aplikaci,
- zakomentovat vytvoření PVC v copy-volume-<app>.yaml,
- smazat doběhnutý job kubectl delete job copy-volume-<app>,