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:08] tomas |
automatizace:kubernetes [2024/10/17 09:32] (current) tomas |
||
---|---|---|---|
Line 41: | Line 41: | ||
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\\ | ||
Line 48: | Line 48: | ||
[[https:// | [[https:// | ||
- | Istio - 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, | ||
[[https:// | [[https:// | ||
Line 55: | Line 56: | ||
[[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 76: | ||
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 91: | ||
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 222: | ||
'' | '' | ||
'' | '' | ||
+ | '' | ||
==pods== | ==pods== | ||
Line 179: | Line 231: | ||
'' | '' | ||
'' | '' | ||
+ | '' | ||
+ | '' | ||
'' | '' | ||
'' | '' | ||
Line 227: | Line 281: | ||
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 358: | ||
==network policies== | ==network policies== | ||
+ | [[https:// | ||
+ | |||
'' | '' | ||
'' | '' | ||
Line 332: | Line 389: | ||
'' | '' | ||
- | ===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 412: | ||
'' | '' | ||
'' | '' | ||
+ | |||
+ | ==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 425: | ||
===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 459: | ||
'' | '' | ||
+ | kubeadm config print init-defaults ... ukáže konfiguraci\\ | ||
'' | '' | ||
'' | '' | ||
Line 423: | Line 511: | ||
'' | '' | ||
'' | '' | ||
+ | |||
+ | ====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 556: | ||
/ | / | ||
/ | / | ||
+ | / | ||
+ | / | ||
+ | / |