Kubernetes (prescurtat K8s) este cel mai popular orchestrator, folosit la scara larga si oferit ca si CaaS (Container as a Service) de toti vendorii de infrastructura (Amazon, Google, Microsoft). Este considerat standard in materie de deployment al serviciilor orchestrate.
Varianta originala este dezvoltata de Google, este open source, si face parte din Cloud Native Foundation (CNF). Fiecare vendor adauga pachete in plus, pentru a il adapta la ecosistemul proprietar (de exemplu, Azure adauga comenzi si straturi in plus peste varianta de baza).
Este mai complicat decat Docker Swarm, dar in multe situatii nu veti fi nevoiti sa rulati propriul vostru cluster de K8s, ci doar sa rulati aplicatii peste un cluster de kubernetes gata oferit (de exemplu, Azure Kubernetes Service (AKS)).
Avantajul major asupra Docker Swarm il ofera utilizarea sa in industrie, cat si faptul ca este mai flexibil si ofera mai multe functionalitati, insa nu out of the box. Faptul ca este customizabil implica, bineinteles, si un factor de dificultate mai mare. Kubernetes este mai greu de invatat decat Swarm, dar are si mai multe capabilitati.
Kubernetes se poate seta in multe moduri:
Este metoda cea mai dificila, in care se leaga mai multe masini in retea folosind Kubeadm. Se foloseste pentru a crea un cluster de la 0 si necesita un nivel de cunostinte mediu-avansat.
Asa cum am precizat in introducere, sunt putine cazurile cand veti trebui sa setati un cluster de la 0, deoarece vendorii principali de infrastructura au versiunile lor de Kubernetes si sistemele de CaaS deja pregatite.
Cea mai buna metoda de a invata este sa va setati local un cluster cu un singur nod de kubernetes. Acest lucru se poate face in mai multe moduri:
Precum Docker Swarm, Kubernetes este un sistem format din mai multe componente:
La fel ca in cadrul Docker Swarm, Kubernetes foloseste o ierarhie logica de componente pentru aplicatii:
## Kubernetes Local Install ### minikube minikube start ### microk8s microk8s.kubectl microk8s.enable dns alias kubectl=microk8s.kubectl ## Kubectl run, create and apply kubectl run kubectl create kubectl apply ## Pornirea unui Pod kubectl version kubectl run my-nginx --image nginx kubectl get pods kubectl get all kubectl delete deployment my-nginx kubectl get all ## Scalarea unui Pod (se foloseste de ReplicaSet) kubectl run my-apache --image httpd kubectl get all kubectl scale deploy/my-apache --replicas2 kubectl scale deployment my-apache --replicas2 kubectl get all ## Inspectarea obiectelor Kubernetes kubectl get pods kubectl logs deployment/my-apache kubectl logs deployment/my-apache --follow --tail 1 kubectl logs -l run=my-apache kubectl get pods kubectl describe pod/my-apache-<pod id> kubectl get pods -w kubectl delete pod/my-apache-<pod id> kubectl get pods kubectl delete deployment my-apache
Gasiti cateva exemple de fisiere declarative in repository-ul laboratorului.