Kubernetes

Kapcsolódó hivatkozások

Node (fizikai gép)

Cluster komponensek (egy gépen futó rendszer)

  • Pod - (alkalmazás elem pl.: docker image)
  • Service - Podok elérése, terhelés elosztás kezelése (loadbalance)
  • ConfigMap - alkalmazás konfiguráció
  • Secrets - alkalmazás base64 kódolással tárolt kulcsai
  • Ingress - szolgáltatás külső elérésére alkalmazott komponens
  • Volumes - pl.: adatbázis adatállományok perzisztens tárolására csatolt lokális könyvtár vagy távoli fájlrendszer
  • Deployment - az egész szolgáltatás vezérlőeleme
  • StatefulSet - pl.: elosztott adatbázisok kezelésére (MySQL master/slave replica)

Három szükséges szoftver aminek minden worker node-on futnia kell

  • Kublet - a konténer és node menedzselésére
  • Kube Proxy
  • Docker

Négy szoftver, ami minden master node-on futnia kell

  • API server (cluster gateway, authentikátor)
  • Scheduler (pod indítása worker node-on)
  • Controller manager (állapot változások detektálása - pl.: pod leállás - és folyamatok újra ütemezése)
  • etcd (key/value store, a master node agya, ahol az elérhető erőforrások adatai tárolódnak, pl.: melyik node-on mi fut)

kubectl

API-server-el kommunikáló vezérlő program

Deployment készítése:

kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube --type=NodePort --port=8080
 
# service listázása
kubectl get service hello-minikube
kubectl get service hello-minikube -o yaml
 
# minden listázása
kubectl get all|grep mongo
 
# ellenőrzés
minikube service hello-minikube
 
# service törlése
kubectl delete service hello-minikube
 
# port továbbítás
kubectl port-forward service/hello-minikube 7080:8080
 
# deployment-ek listázása
kubectl get deployment
 
# deployment szerkesztése
kubectl edit deployment nginx-depl
 
# Alapértelmezett szerkesztő beállítása
export KUBE_EDITOR=nano
 
# Pod létrehozása
kubectl run nginx-pod --image=nginx --restart=Never --port=80 -n default
 
# Pod leírása
kubectl describe pod [PODNÉV]
kubectl get pod -o wide
 
# Pod napló megjelenítése
kubectl logs [PODNÉV]
 
# Pod napló figyelése
kubectl logs [PODNÉV] -f
 
# Interaktív terminál nyitása a pod-on futó Docker felé
kubectl exec -it [PODNÉV] -- /bin/bash
 
# szolgáltatás a Pod-hoz
kubectl expose pod nginx-pod --type=LoadBalancer --port=80 --name=nginx-service
 
# konfiguráció alkalmazása
kubectl apply -f valami-konfig.yaml
 
# API erőforrások
kubectl api-resources
 
# Szolgáltatás újraindítása pod törlésével
kubectl delete mongodb-deployment-6d9d7c68f6-4gk6l

containerd crictl

sudo crictl images list
sudo crictl ps -a
 
sudo ctr -n k8s.io images list|grep hello
sudo ctr namespace ls

Minikube

Egy tanuláshoz, quickstart-hoz használt, VirtualBox-on futó egygépes rendszer.

wget https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
sudo dpkg -i minikube_latest_amd64.deb
 
wget https://download.virtualbox.org/virtualbox/7.1.6/virtualbox-7.1_7.1.6-167084~Ubuntu~noble_amd64.deb
sudo apt-get purge "^virtualbox-.*"
sudo dpkg -i virtualbox-7.1_7.1.6-167084~Ubuntu~noble_amd64.deb
 
# cluster létrehozása és indítása
minikube start
 
# cluster szervizeinek listája
minikube service list
 
# ellenőrzés
kubectl get po -A
 
# böngészőben megjelenített vezérlőpult
minikube dashboard
 
# bejelentkezés a VirtualBox-ba
minikube ssh
 
# service megnyitása
minikube service mongo-express-service # basic auth: admin/pass

kubectx

Telepítés:

sudo apt-get install kubectx