Ha a szoftverfejlesztes vilagban dolgozol, biztosan hallottal mar a Kubernetesrol. De pontosan mi is ez, es miert valt a konténerizalt alkalmazasok kezelesenek de facto szabvanyava? Ez az utmutato az alapoktol a fundamentalis koncepcikig vezet el, gyakorlati peldakkal es diagramokkal.
Kubernetes elott: Egy kis tortenelem
- Hagyomanyos telepites: Kezdetben az alkalmazasok fizikai szervereken futottak. Ez a megkozelites draga, nehezen skalazhato es eroforras-utkozesekre hajlamos volt.
- Virtualizalt telepites: Aztan jottek a virtualis gepek (VM-ek). A VM-ek lehetove tettek tobb izolalt alkalmazas futtatast ugyanazon a hardveren.
- Kontenrizalt telepites: A kontenerek (mint a Docker) a kovetkezo fejlodes. Megosztatjak ugyanazt a gazdagep operacios rendszert, de izolalt folyamatokat futtatnak.
A kontenerek megoldottak a hordozhatosag problemajat, de ujat teremtettek: hogyan kezeljunk szazaval (vagy ezrevel) kontenert produkcios kornyezetben?
Itt lep be a Kubernetes.
Mi az a Kubernetes?
A Kubernetes (gyakran K8s-nek roviditve) egy nyilt forraskodu platform kontener-orchestraciohoz. Egyszeruen fogalmazva automatizalja a kontenrizalt alkalmazasok telepiteset, skalazasat es kezeleset.
Egy Kubernetes cluster architekturaja
Control Plane
A Control Plane a cluster "agya". Fo komponensei:
- API Server (
kube-apiserver): A cluster kapuja. - etcd: Konzisztens es magasan elerheto kulcs-ertek adatbazis.
- Scheduler (
kube-scheduler): Az ujonnan letrehozott Pod-okat elerheto Worker Node-okhoz rendeli. - Controller Manager (
kube-controller-manager): Vezerloket futtat, amelyek fenntartjak a kivant allapotot.
Worker Node
A Worker Node-ok azok a gepek, ahol az alkalmazasok tenylegesen futnak. Minden node tartalmazza:
- Kubelet: Minden node-on futo agens.
- Kube-proxy: Halozati proxy, amely kezeli a halozati szabalyokat.
- Container Runtime: A kontenerek futtatasaert felelos szoftver.
Alapveto Kubernetes objektumok
Pod
A Pod a legkisebb vegrehajtasi egyseg a Kubernetesben.
Deployment
# nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
Service
# nginx-service.yaml apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: ClusterIP
Service tipusok: ClusterIP, NodePort, LoadBalancer.
Ingress
Egyeb hasznos objektumok
- Namespace: Lehetove teszi "virtualis clusterek" letrehozasat egy fizikai clusteren belul.
- ConfigMap es Secret: Konfiguracios adatok es titkok kezelesehez.
- StatefulSet: Hasonlo a Deploymenthez, de allapotmegorzо alkalmazasokhoz.
- PersistentVolume (PV) es PersistentVolumeClaim (PVC): Allo tarolas kezelesehez.
Osszefoglalas
A Kubernetes hihetetlenul hatalmas eszkoz. Mit tegyel most?
- Kiserletezz lokalisan: Telepitsd a Minikube-ot vagy a Kind-ot.
- Hasznald a
kubectl-t: Ismerkedj meg akubectlparanccsal. - Fedezd fel a hivatalos oktatoanyagokat: A Kubernetes dokumentacio fantasztikus eroforras.
A kontener-orchestracio alapveto kepesseg a cloud-native vilagban, es a Kubernetes elsajatitasa lehetosegek vilagat nyitja meg elotted. Jo szorakozast!