Master nody - maji kofig db - ETCD. API zapisuje do ETCD, scheduler to zpracovava. Pooly - ruzne priority, napriklad podle ceny. Pody - schranky pro kontejner s definicema/prepisama, co ma definovane limity, predpisy…
skalovani, bud HPA (Horizotal Pod Aautoscaler), podle statistik CPU a Mem, nebo custom metrkia, co jde do metric serveru, nebo VMSS (Virtual Machine Scaling Set), potrebuje featuru doinstalovat (v azuru i samo z Gui), ktera kontroluje vytizenost, node za cca 4 min)
Nepouzivat ETCD misto zoo.. a jine - konfiguracni databaze (MDM), kvuli SLA.
Podskalovani - zabije a spusti pody jinde
MDM - jeden bod pravdy
Kaleko - doplnek na toky mezi namespacema atd
[https://trivy.dev/|Trivy] … Trivy opensource image scanner - zjišťuje zranitelnosti obrazů
Istio - doplnek na bezbecnost mezi podama (kdo s kym muze a nesmi)
Gremlin … doplnek na testovani bezpecnosti, provede utok na CPU, pamet a overi dobre nastaveni Kubernetes clusteru
Keda … Kubernetes Event-driven Autoscaling - Event-based skalovani, umoznuje skalovani od 0 podu, skalovani podle http requestu, poctu zprav ve fronte atd.
DAPR - Distributted APplication Runtime - nabizi okolni zdroje (aplikace - Service mash, hesla, storage, fronty) jako localhost:xxxxx/neco URL (sidekara k aplikaci)
Osiris … doplnek na skalovani od 0 podu
helm templatovací jazyk pro kubernetes
Knative serving … skalovani od 0 podu, byuziva Istio
Linkerd … jak istio, ale lehci
kustomize … Kubernetes configuration management, umí se odkazovat na sdílený kód mezi aplikacema, nepoužívá parametry (temlaty) jako helm
Kyverno … policy pro Kubernetes
Flagger … rozhazovani trafficu na ruzne verze podu - AB testovani, canary, atd
Oktant … Web GUI na spravu Kubernetes clusteru
Lens … Web GUI na spravu Kubernetes clusteru
Portainer … WebGUI na správu Kubernetes, Docker, Swarm atd.
NFS subdir external provider
AKS … Azure Kubernetes Service
EKS … Elastic Kubernetes Services - Od Amazonu
GKE … Google Kubernetes Engine
Google Anthos … Mutli-cloud, nebo hybrid cloud management, ktery umi managovat Kubernetes on-prem
Balickovaci system pro Kubernetes yamly (konfigurace), chart je balicek Helmu. Diky Helmu jsou pak YAMLy konfigurovatelne pomoci parametru a pro kazdy deploy na jine prostredi nemusi byt extra YALM soubor. Tiller je agent ktery deployuje helm templaty do namespace, jede pod systemovym ucivatelem
https://hub.helm.sh … Repozitar Helmovych balicku
helm init –service-account tiller
helm init –upgrade … upgrade verze Helmu, vcetne tilleru na Kubernetes clusteru
helm version
helm install –name ingress stable/nginx-ingress
helm template . –name myrelease … vezme defaultni hodnoty a vytvori vystup ze sablony na stdout (pro kontrolu vystupu a syntaxe)
helm template . –name myrelease –set app.customvariable=aa,app.customnumber=2 … jak predtim, ale vyzkousi vymenu parametru
helm upgrade –install myrelease . –set app.image.repository=${DOCKER_REGISTRY} –namespace x … nainstaluje, nebo updatuje
helm ls … seznam nainstalovanych chartu na tilleovi
helm delete –purge aaa … smaze helm release
kubectl config view
… ukaze konfiguraci kubectl
kubectl config get-contexts
… ukaze konfigurovane pripojeni
kubectl config current-context
… ukaze aktualni pripojeni
kubectl config view --minify -o jsonpath='{..namespace}'
… ukaze vychozi namespace
kubectl config use-context my-cluster-name
… nastavi aktualni nastaveni
kubectl config set-context --current --namespace=NS
… nastavi vychozi namespace
KUBE_EDITOR=“nano” … nastavení editoru
kubectl auth can-i --list … zobrazí, na co mám práva
kubectl get clusterroles
kubectl get roles
kubectl api-versions
kubectl api-resources
kubectl cluster-info
kubectl version … informace o verzi klienta a K8S serveru
kubectl get namespaces … seznam jmennych prostoru
kubectl get resourcequota … ukaze quoty pro namespace (maximum prostředků CPU a paměti pro namespace)
kubectl get limitranges … ukáže qóty pro pody v namespace (maximum prostředků pro jednotlivý pod)
kubectl get nodes … Seznam nodu
kubectl top nodes … ukáže metriky podů
kubectl get pods
kubectl describe pod aaaa -n nnnn … podrobne informace o podu
kubectl cp /cesta/k/souboru NAMESPACE/JMENO_PODY:/cesta/k/souboru … kopirovani souboru z/na POD
kubectl logs POD -n namespace … logy podu
kubectl logs –since=1h <pod_name> … za poslední hodinu
kubectl logs –tail=20 -f <service_name> [-c <$container>] … sledování logu (musí se přerušit ctrl-c) pro kontejner
kubectl logs –previous POD … logy posledního failnutého podu
kubectl exec -it aaa-6d5f854689-f28zp –namespace=default – /bin/bash … spusti na danem podu bash
kubectl get pods.metrics.k8s.io … ukáže metriky podů
kubectl top pods … ukáže metriky podů
Deploymenty řídí replicasety, tedy identické kopie podů
kubectl get pod,deploy,rs -n default … seznam podu, deployu a replika setu v namespace default
kubectl edit deployment.v1.apps/nginx-deployment … editace deploye
kubectl rollout restart deployment/deploy1 … predeployovani
kubectl scale deployment sftp-la-service –replicas=1 -n default … skalovani
kubectl autoscale deployment AAA –min=2 –max=10 … autoškálování
kubectl apply -f azure-vote.yaml … Deploy aplikace
kubectl label pods POD novy-label=bbb … přidá label
kubectl annotate pods POD anotace1=aaa … přidá anotaci\
automatické horizontálí škálování (nové pody) pro daploy, nebo statefulset
kubectl get horizontalpodautoscalers … ukáže pravidla pro automatické horizontálí škálování
kubectl describe replicaset.extensions/aaa-6d5f854689 -n default … popis repliky podu
kubectl scale –replicas=3 rs/AAA … nastavení škálovaní pro replica set
kubectl get events … ukaze udalosti clusteru
kubectl get events –field-selector involvedObject.kind=Node, involvedObject.name=<node_name>
kubectl get events –field-selector type!=Normal
kubectl get daemonset
statefullset - menežované skupiny podů, které si zachovávají svoji identitu (pořadí nodu, IP adresu, disk, pořadí updatu, …)
kubectl get statefulset
Daemonset zajistí, že na každém nodu poběží kopie daného podu, např. služba disků, logů, monitoringu…
kubectl get daemonsets
kubectl get secrets
kubectl create secret generic secret1 -from-literal=username=devuser
kubectl describe secrets/secret1
kubectl delete secret secret1
kubectl get secret client.crt -o jsonpath=“{.data.tls\.crt}” | base64 -d | openssl x509 -text #… ukaze certifikat ze secretu
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: ubuntu labels: app: ubuntu spec: containers: - image: ubuntu command: - "sleep" - "604800" imagePullPolicy: IfNotPresent name: ubuntu restartPolicy: Always EOF
kubectl exec -it ubuntu -- /bin/bash … stahne a spusti ubuntu a na nem bash
aplikační load balancer
k get service
kubectl get service azure-vote-front –watch … Sledovani ap
kubectl expose rc nginx –port=80 –target-port=3100
k get ingress
kubectl get networkpolicy -n namespace … seznam sitovych pravidel (firewall)
kubectl describe networkpolicy Policy1 -n namespace … popis sitovych pravidel
kubectl edit netpol access-nginx -n default … editace sitovych pravidel
KUBE_EDITOR='vim' kubectl edit netpol access-nginx -n default -o json … editace policy v VI ve formatu JSON
kubectl delete networkpolicy default-deny-all -n namespace … smazani sitoveho pravidla
Časované úlohy
kubectl get cronjob … ukaze plany ukolu
kubectl get job –watch … sledovani jednotlivych jobu/ukolu
kubectl describe job JOBID … informace o jobu, na kterem kontejneru byl spusteny atd.
pods=$(kubectl get pods –selector=job-name=JOBID –output=jsonpath={.items[*].metadata.name}) … najde ktery pod odpovida danemu jobu
kubectl get certificate … seznam spravovanych certifikatu
kubectl describe certificate AAA … popis certifikatu AAA
k get pv
k get pvc … persistent volume claim
kubectl get serviceaccounts
kubectl get rolebindings,clusterrolebindings kubectl get serviceaccounts
nadefinování rozmezí planovaných odstávek podů (napčíklad, že se může vypnout jen 2 podu naráz při plánované akci (migrace podů, deploy update, …)
k get poddisruptionbudgets
k get customresourcedefinitions.apiextensions.k8s.io … zesnam API rozšíření
[https://cloud.google.com/knative|knative] … nástroje pro rozšíření ovládáné - skálování od 0, škálování podle eventů atd.
[https://tekton.dev/|tekon] … CI/CD
[https://argoproj.github.io/|agro CI/CD] … CI/CD
k get vulnerabilityreports.aquasecurity.github.io … ukáže zranitelnosti obrazů