Skip to content

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>,