This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| automatizace:kubernetes [2024/02/17 19:09] tomas | automatizace:kubernetes [2025/10/30 14:57] (current) tomas | ||
|---|---|---|---|
| Line 36: | Line 36: | ||
| - | ===Doplňky=== | + | ====Doplňky==== | 
| Storage provisioner - poskytovatel trvalých diskových uložišť\\ | Storage provisioner - poskytovatel trvalých diskových uložišť\\ | ||
| storageclass - \\ | storageclass - \\ | ||
| Calico - síťový doplnek na toky mezi namespacema atd. používá Container Network Interface ([[https:// | Calico - síťový doplnek na toky mezi namespacema atd. používá Container Network Interface ([[https:// | ||
| Flannel - Síťový plugin (CNI)\\ | Flannel - Síťový plugin (CNI)\\ | ||
| - | Weave - Síťový plugin (CNI)\\ | + | WeaveNet | 
| Romana - Síťový plugin (CNI)\\ | Romana - Síťový plugin (CNI)\\ | ||
| Kube-router - CNI\\ | Kube-router - CNI\\ | ||
| - | Cilium | + | |
| + | === Cilium | ||
| + | CNI - síťový firewall\\ | ||
| + | kubectl -n kube-system describe configmap cilium-config\\ | ||
| + | |||
| + | === Karpenter === | ||
| + | [[https:// | ||
| + | k get nodepool -n karpenter\\ | ||
| [[https:// | [[https:// | ||
| + | '' | ||
| Istio - service mesh - doplnek na bezbecnost mezi podama (kdo s kym muze a nesmi)\\ | Istio - service mesh - doplnek na bezbecnost mezi podama (kdo s kym muze a nesmi)\\ | ||
| Gremlin ... doplnek na testovani bezpecnosti, | Gremlin ... doplnek na testovani bezpecnosti, | ||
| Line 55: | Line 63: | ||
| [[automatizace: | [[automatizace: | ||
| Knative serving ... skalovani od 0 podu, byuziva Istio\\ | Knative serving ... skalovani od 0 podu, byuziva Istio\\ | ||
| - | Linkerd ... jak istio, ale lehci\\ | + | Linkerd ... jak istio, nebo Aspen,, ale lehci\\ | 
| [[https:// | [[https:// | ||
| [[https:// | [[https:// | ||
| [[https:// | [[https:// | ||
| - | [[https:// | ||
| [[https:// | [[https:// | ||
| [[https:// | [[https:// | ||
| - | flunetd | + | fluentd | 
| + | prometheus - logování, monitoring, alerting\\ | ||
| + | OpenTelemetry - poskytuje tracing a metriky dalším nástrojům\\ | ||
| + | Jaeger ... konzumuje metriky\\ | ||
| ===Nástroje=== | ===Nástroje=== | ||
| Line 72: | Line 83: | ||
| Oktant ... Web GUI na spravu Kubernetes clusteru\\ | Oktant ... Web GUI na spravu Kubernetes clusteru\\ | ||
| Lens ... Web GUI na spravu Kubernetes clusteru\\ | Lens ... Web GUI na spravu Kubernetes clusteru\\ | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | k9s ... interaktivni GUI v konzoli na správu kubernetes\\ | ||
| + | |||
| ==Managovane Kubernetí clustery== | ==Managovane Kubernetí clustery== | ||
| Line 83: | Line 98: | ||
| annotation ... anotace/ | annotation ... anotace/ | ||
| + | ===Scheduler=== | ||
| + | Chování scheduleru lze konfigurovat sheduler profilama. Konfigurace pomocí apis/ | ||
| + | |||
| + | queueSort - jak jsou setřízené čekající (pending) pody\\ | ||
| + | preFilter - pre-procesing podů. může nějaké pody vyloučit z plánování\\ | ||
| + | Filter - výběr nodů vhodných pro pod. Pokud žádný node, tak se pod vyloučí z plánování\\ | ||
| + | postFilter - když nějaký plugin označí pod naplánovatelný, | ||
| + | preScore\\ | ||
| + | Score - přiřazení skóre - scheduler nasadí pod s nejvyšším skórem\\ | ||
| + | reserve\\ | ||
| + | permit\\ | ||
| + | preBind\\ | ||
| + | Bind\\ | ||
| + | postBind\\ | ||
| + | multiPoint\\ | ||
| + | |||
| + | Filtry: | ||
| + | * ImageLocality - upřednostňuje nody obsahující daaný image. Extension points: score. | ||
| + | * TaintToleration - Implementuje taints a tolerance. Extension points: filter, preScore, score. | ||
| + | * NodeName - Kontroluje, zda Pod spec node name se shoduje s node. Extension points: filter. | ||
| + | * NodePorts - Zjišťuje, zda node node má k dispozici dané porty. Extension points: preFilter, filter. | ||
| + | * NodeAffinity - Implementuje node selectory a node afinitu. Extension points: filter, score. | ||
| + | * PodTopologySpread - Implementuje Pod topology spread. Extension points: preFilter, filter, preScore, score. | ||
| + | * NodeUnschedulable - Filtruje nody, které mají .spec.unschedulable = true. Extension points: filter. | ||
| + | * NodeResourcesFit - Zjišťuje, zda node má všechny potřebné zdroje. | ||
| + | * NodeResourcesBalancedAllocation - upřednostňuje nody, které by zjískaly lépe balancované zdroje, kdyby tam pod byl. Extension points: score. | ||
| + | |||
| + | * nodeName, nodeSelector - konkrétní node, nebo konkrétní skupina nodů s daným labelem | ||
| + | * affinity, anti-affinity - vhodnější nody - upřednostnění | ||
| + | * taint - vyloučení nějakých nodů pro pod, tolerance - ignorování taintu | ||
| + | * schedulerName - vybere profil scheduleru | ||
| + | |||
| + | spec.affinity.pod[Anti]Affinity.[required|preffered]DuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions: | ||
| + | * requiredDuringSchedulingIgnoredDuringExecution - nedá na node, pokud splněná podmínka | ||
| + | * preferredDuringSchedulingIgnoredDuringExecution - preferuje dané nody | ||
| + | * podAffinity - snaží se dát pody dohromady | ||
| + | * podAntiAffinity - snaží se dát na jiné nody | ||
| + | |||
| + | ===HA=== | ||
| + | * vše konfigurovat pomocí hostname, ne IP | ||
| + | * použít loadbalancery, | ||
| + | * na přidáni dalšího Control Plane bude nejspíš potřeba přegenerovat klíče, budou expirované | ||
| + | * etcd lze použít externí, musí se udělat první (nonColocated etcd) | ||
| ====DNS==== | ====DNS==== | ||
| SERVICE.NAMESPACE.svc.cluster.local\\ | SERVICE.NAMESPACE.svc.cluster.local\\ | ||
| Line 171: | Line 229: | ||
| '' | '' | ||
| '' | '' | ||
| + | '' | ||
| ==pods== | ==pods== | ||
| Line 179: | Line 238: | ||
| '' | '' | ||
| '' | '' | ||
| + | '' | ||
| + | '' | ||
| '' | '' | ||
| '' | '' | ||
| Line 227: | Line 288: | ||
| kubectl get horizontalpodautoscalers ... ukáže pravidla pro automatické horizontálí škálování\\ | kubectl get horizontalpodautoscalers ... ukáže pravidla pro automatické horizontálí škálování\\ | ||
| + | kubectl describe hpa ... ukáže nastavení HPA\\ | ||
| + | '' | ||
| + | '' | ||
| + | '' | ||
| ===replicaset, | ===replicaset, | ||
| Line 303: | Line 368: | ||
| ==network policies== | ==network policies== | ||
| + | [[https:// | ||
| + | |||
| '' | '' | ||
| '' | '' | ||
| Line 332: | Line 399: | ||
| '' | '' | ||
| - | ===clusterroles, | + | ===Bezpečnost=== | 
| + | ==Autorizace== | ||
| + | Kontrolována Autorizačním controlerem API serveru, umí používat různé formy autentifikace, | ||
| + | |||
| + | useradd user1\\ | ||
| + | passwd user1\\ | ||
| + | openssl genrsa -out ~user1/ | ||
| + | openssl req -new -key ~user1/ | ||
| + | sudo openssl x509 -req -in ~user1/ | ||
| + | kubectl config set-credentials DevDan --client-certificate=~user1/ | ||
| + | kubectl config set-context minukume-user1 --cluster=minikube --namespace=development --user=user1\\ | ||
| + | |||
| + | |||
| + | ==clusterroles, | ||
| + | Je kontrolována module authorization controllerem API serveru | ||
| '' | '' | ||
| '' | '' | ||
| Line 340: | Line 422: | ||
| '' | '' | ||
| '' | '' | ||
| + | |||
| + | ==Admission Controler== | ||
| + | PodSecurityPolicy - vynucení pravidel je od 1.25 nahrazeno Pod Security Admission. PSP/PSA je kontrolováno Admission Controlerem API serveru. | ||
| + | SecurityContext je nastavení bezpečnosti Podu pomocí SELinux/ | ||
| + | |||
| + | grep admission / | ||
| ===poddisruptionbudgets=== | ===poddisruptionbudgets=== | ||
| Line 347: | Line 435: | ||
| ===kubectl pluginy=== | ===kubectl pluginy=== | ||
| - | kube [[https:// | + | kubectl | 
| + | kubectl krew search ... seznam dostupných kubectl pluginů\\ | ||
| kubectl whoami ... spusti plugin, co ukaze, jaký uživatel jsem\\ | kubectl whoami ... spusti plugin, co ukaze, jaký uživatel jsem\\ | ||
| + | kubectl tail --rs staging/ | ||
| + | kubectl sniff bigpod-abcd-123 -c mainapp -n accounting ... odposlech síťového provozu a přeposílání do Wiresharku\\ | ||
| + | |||
| ====Další rozšíření==== | ====Další rozšíření==== | ||
| + | Rozšíření, | ||
| + | |||
| k get customresourcedefinitions.apiextensions.k8s.io ... zesnam API rozšíření\\ | k get customresourcedefinitions.apiextensions.k8s.io ... zesnam API rozšíření\\ | ||
| + | kubectl get crd --all-namespaces ... kratší zápis\\ | ||
| + | cilium\\ | ||
| + | linkerd\\ | ||
| [https:// | [https:// | ||
| [https:// | [https:// | ||
| Line 372: | Line 469: | ||
| '' | '' | ||
| + | kubeadm config print init-defaults ... ukáže konfiguraci\\ | ||
| '' | '' | ||
| '' | '' | ||
| Line 423: | Line 521: | ||
| '' | '' | ||
| '' | '' | ||
| + | |||
| + | ====Troubleshooting==== | ||
| + | systemctl status kubelet.service\\ | ||
| + | journalctl -u kubelet\\ | ||
| + | sudo find /var/log -name " | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | Zapnotut/ | ||
| + | Bezpečnostní problém? RBAC, SELinux, AppArmor\\ | ||
| + | Síťový problém - přidat ephemeral kontejner s network nástroji\\ | ||
| + | logy a status podu\\ | ||
| + | Probél na node?\\ | ||
| + | / | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | |||
| ====REST API==== | ====REST API==== | ||
| Line 450: | Line 566: | ||
| / | / | ||
| / | / | ||
| + | / | ||
| + | / | ||
| + | / | ||