Kubernetes

Čo je to Kubernetes

  • Klastrový operačný systém
  • Orchestrátor kontajnerov
  • Docker Swarm na steroidoch.

Kubernetes nie je Docker

Aplikácia beží v kontajneri ale...

Kubertenes sa stará kde a ako

manažuje viac strojov (virtuálnych alebo fyzických) kde bežia kontajnery

Kubernetes

[note] Ako súvisí Kubernetes a Docker:

  • docker sa stará o beh procesov
  • Kubernetes sa stará o celý cluster

[/note]

Na čo je Kubernetes

Nástroj na manažment klastra, pridelenie a nepretržité využitie zdrojov:

  • diskový priestor
  • CPU
  • GPU
  • sieťové spojenie
  • RAM

Prečo Kubernetes

Vaša aplikácia beží kontajneri na Vašom klastri alebo na cloude.

Aby sme mohli jednoducho horizontálne škálovať

Kubernetes pre vývojárov

  • DevOps
  • Continous Integration - Continous Deployment
  • uľahčenie procesu nasadenia a kontroly kvality aplikácie
  • build, test, inštalácia, nasadenie

Kubernetes pre manažérov

  • optimalizácia nákladov
  • vrstva kompatibility medzi jednotlivými poskytovateľmi cloud služieb
  • ľahši prenos medzi private-public cloud

Kuberntes pre správcov

  • ľahší manažment veľkého množstva fyzických zdrojov
  • zdroje nemusia byť na jednom mieste
  • zabezpečenie odolnosti voči výpadku

Vysoká dostupnosť

Môžeme vyradiť ľubovoľný uzol klastra bez výpadku.

Neexistuje "jediný bod zlyhania"

Kubernetes je odolný

voči výpadku hardware alebo software.

  • Ak havaruje aplikácia , reštartuje sa (možno na inom uzle).
  • ak havaruje celý uzol, záťaž preberie iný uzol.

Škálovateľnosť

Horizontálna škálovateľnosť - pridáme nové (virtuálne) zariadenie.

Vertikálna škálovatenosť - rozšírime existujúce zariadenie (pridáme disk, procesor alebo pamäť).

Vertikálne škálovanie

Rozšírime server

  • viac RAM
  • viac CPU
  • výmena servra

Horizontálne škálovanie

Kúpime alebo prenajmeme ešte jeden server

Elasticita

Veľkosť klastra sa prispôsobuje potrebám.

  • Beží viac inštancií podľa potreby, systém zabezpečí rozloženie záťaže (Load Balancing)
  • Ak sa záťaž zníži, môžeme uzol zrušiť. Ak sa záťaž zníži, môžme uzol zrušiť..

Architektúra Kubernetes

Kubernetes je klastrový operačný systém

  • vysoko dostupný
  • elastický
  • ľahko škálovateľný

k8s klaster:

  • Riadiace uzly
  • Pracovné uzly
  • Uzly infraštruktúry - register, load balancer

jeden až tisíce uzlov

Komponenty

  • api server
  • etcd
  • scheduler
  • controller manager
  • kubelet
  • kubeproxy
  • container run-time
arch

Podľa oficiálnej dokumentácie

Komponenty na riadiacich uzloch

  • api server
  • etcd
  • scheduler
  • controller manager

API server

  • komunikácia s klastrom
  • komunikácia s uzlami

Má svoje URL pomocou ktorého vieme riadiť klaster.

etcd

distribuovaná databáza:

- konfigurácia
- logy
- stav objektov

scheduler

rozhoduje kde sa bude spúšťať zátaž

controller manager

zabezpečuje súlad stavu klastra s konfiguráciou

  • spúšťa alebo ruší záťaž podľa potreby

Komponenty na pracovných uzloch

  • kubelet
  • kube proxy

Môžu bežať aj na riadiacich uzloch

kubelet

stará sa o beh záťaže v kontajneri na pracovnom uzle

  • spúšťa a ruší procesy (kontajnery)

kubeproxy

sprostredkuje spojenie medzi uzlami

Public Cloud: Poskytovatelia Kubernetes

Kubernetes Cluster môže bežať na:

  • Vašom notebooku
  • Vašom datacentre
  • U poskytovateľa ako PAAS

Private Cloud: Distribúcie Kubernetes

  • kubeadm / vanilla Kubernetes
  • OpenShift - Tectonic - OKD
  • Rancher
  • Ubuntu

Mini K8S distribúcie

  • minikube
  • minishift
  • microk8s
  • k3s

Kuberetes na Cloude

  • Amazon Elastic Kubernetes Service EKS
  • Google Kubernetes Engine GKE
  • Microsoft Azure Kubernetes Service AKS
  • Alibaba Container Service for Kubernetes ACK

Alternatívy ku Kubernetes

  • Nomad (by Hashicorp)
  • Docker Swarm
  • Apache Mesos

Iné nástroje pre správu klaudovej infraštruktúry

Infrastructure as Code

S ich pomocou beží Kuberntes:

  • Terraform
  • OpenStack

Azure Kubernetes Service

Platform as a Sevice

Dá sa vytvoriť na požiadanie

Vlastnosti

  • Dynamické prideľovanie zdrojov podľa aktuálnej potreby.
  • Integrácia s CI-CD reťazcom.
  • Integrácia s inými službami a SW od MS (Visual Studio).
  • Autentifikácia pomocou Active Directory.
  • Možnosti logovania, zabezpečenia a monitorovania klaudu.
  • Rôzne druhy virtuálnych strojov, vrátane GPU.
  • Rôzne druhy úložného priestoru (object, block, file) - Azure Disk, Azure Files

Automatické škálovanie a elasticita

Množstvo potrebných prostriedkov sa v čase mení.

  • výpočtový výkon
  • diskový priestor
  • konektivita

Na požiadanie sa v klaude vytvorí jeden alebo viacero pracovných uzlov, naništaluje sa Kubernetes. Zdroje sa prispôsobujú potrebám:

  • rastú alebo zanikajú
  • platíme iba za to čo spotrebujeme

Kubernetes

Nový operačný systém

Reload?