This is an old revision of the document!


Table of Contents

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
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
Knative serving … skalovani od 0 podu, byuziva Istio
Linkerd … jak istio, ale lehci
Flagger … rozhazovani trafficu na ruzne verze podu - AB testovani, canary, atd

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

kubectl cheat sheet

kubectl config view … ukaze konfiguraci kubectl
kubectl config get-contexts … ukaze konfigurovane pripojeni
kubectl config current-context … ukaze aktualni pripojeni
kubectl config use-context my-cluster-name … nastavi aktualni nastaveni
kubectl config set-context –current –namespace=NS … nastavi vychozi namespace

kubectl get nodes … Seznam nodu
kubectl get pod,deploy,rs -n default … seznam podu, deployu a replika setu v namespace default
kubectl describe replicaset.extensions/aaa-6d5f854689 -n default … popis repliky podu
kubectl config view … ukaze konfiguraci kubectl
kubectl get events … ukaze udalosti clusteru

kubectl rollout restart deployment/deploy1 … predeployovani

kubectl exec -it aaa-6d5f854689-f28zp –namespace=default – /bin/bash … spusti na danem podu bash
kubectl logs POD -n namespace … logy podu

kubectl apply -f azure-vote.yaml … Deploy aplikace
kubectl edit deployment.v1.apps/nginx-deployment … editace deploye
kubectl scale deployment sftp-la-service –replicas=1 -n default … skalovani

kubectl get secrets
kubectl create secret generic secret1 -from-literal=username=devuser
kubectl describe secrets/secret1
kubectl delete secret secret1

kubectl get service azure-vote-front –watch … Sledovani ap

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

network policiesl

kubectl get networkpolicy -n namespace kubectl delete networkpolicy default-deny-all -n namespace