This is an old revision of the document!


Architektura

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

Managovane Kuberneti clustery

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

Helm

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

Konfigurace

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

Práva

kubectl auth can-i –list … zobrazí, na co mám práva
kubectl get clusterroles
kubectl get roles

Informace o clusteru

kubectl api-versions
kubectl api-resources
kubectl cluster-info
kubectl version … informace o verzi klienta a K8S serveru

namespace, ns, re

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)

nodes

kubectl get nodes … Seznam nodu
kubectl top nodes … ukáže metriky podů

pods

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ů

deployments, deploy, replicasets, rs

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\

horizontalpodautoscalers

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í

replicaset, rs

kubectl describe replicaset.extensions/aaa-6d5f854689 -n default … popis repliky podu
kubectl scale –replicas=3 rs/AAA … nastavení škálovaní pro replica set

events, ev

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

daemonset, ds

kubectl get daemonset

statefulset, sts

statefullset - menežované skupiny podů, které si zachovávají svoji identitu (pořadí nodu, IP adresu, disk, pořadí updatu, …)

kubectl get statefulset

daemonsets

Daemonset zajistí, že na každém nodu poběží kopie daného podu, např. služba disků, logů, monitoringu…

kubectl get daemonsets

secrets

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

Ubuntu container for debugging
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

services, svc

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

Ingress - Hginx frontdoor

k get ingress

network policies

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

cornjobs, jobs

Č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

certifikaty

kubectl get certificate … seznam spravovanych certifikatu
kubectl describe certificate AAA … popis certifikatu AAA

disky, persistent volume

k get pv
k get pvc … persistent volume claim

serviceaccounts

kubectl get serviceaccounts

role

kubectl get rolebindings,clusterrolebindings kubectl get serviceaccounts

poddisruptionbudgets

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

Další rozšíření

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ů