Gyakorlat – a Kubernetes-fürt funkcióinak megismerése
A Kubernetes helyi futtatásakor több lehetőség is rendelkezésre áll. A Kubernetest fizikai gépekre és virtuális gépekre is telepítheti, vagy használhat felhőalapú megoldást, például az Azure Kubernetes Service-t (AKS-t).
Ebben a gyakorlatban az a cél, hogy megismerkedjen a Kubernetes egyetlen csomópontos fürttel végzett telepítésével. Ebben a gyakorlatban megtanulhatja, hogyan konfigurálhat és telepíthet olyan MicroK8s-környezetet , amely egyszerűen beállítható és lebontható. Ezután üzembe helyezhet egy Kubernetes-szolgáltatást, és több példányra skálázhatja a webhely üzemeltetéséhez.
Megjegyzés:
Ez a gyakorlat nem kötelező, és olyan lépéseket tartalmaz, amelyek bemutatják, hogyan törölheti és távolíthatja el a gyakorlatban használni kívánt szoftvereket és erőforrásokat.
Más lehetőségek, például a MiniKube és a Kubernetes támogatása a Dockerben ugyanezt teszi lehetővé.
Mi a MicroK8s?
A MicroK8s egy lehetőség arra, hogy egyetlen csomagként helyezzen üzembe egy egycsomópontos Kubernetes-fürtöt a munkaállomások és a eszközök internetes hálózata (IoT) eszközeinek megcélzásához. A Canonical, az Ubuntu Linux létrehozója eredetileg microK8-at fejlesztett és tart fenn.
A MicroK8s Linux, Windows és macOS rendszeren is telepíthető. Azonban a telepítési utasítások némileg eltérnek az egyes operációs rendszerekhez. Válassza ki azt a lehetőséget, amely a legjobban megfelel a környezetének.
A MicroK8s telepítése Linux rendszeren
A MicroK8s Linux rendszeren telepíthető a legkevesebb lépéssel. Váltson egy terminálablakra, és futtassa az alábbi utasításokban szereplő parancsokat:
Telepítse a MicroK8s snap alkalmazást. Ez a lépés az internetkapcsolat és az asztali eszköz sebességétől függően eltarthat néhány percig.
sudo snap install microk8s --classic
A sikeres telepítés után a következő üzenetet jelenik meg.
2020-03-16T12:50:59+02:00 INFO Waiting for restart... microk8s v1.17.3 from Canonical✓ installed
Most már telepítheti a bővítményeket a fürtön.
A MicroK8s telepítése Windows rendszeren
A MicroK8s futtatásához Windows rendszeren használja a Multipass környezetet. A Multipass egy egyszerűsített virtuálisgép-kezelő Linux, Windows és macOS rendszerekhez.
Töltse le és telepítse a Windowshoz készült Multipass legújabb kiadását a GitHub-ról.
A parancssori konzolon futtassa a Multipass-indítási parancsot a microk8s-vm rendszerkép konfigurálásához és futtatásához. Ez a lépés az internetkapcsolat és az asztali eszköz sebességétől függően eltarthat néhány percig.
multipass launch --name microk8s-vm --memory 4G --disk 40G
Miután megkapta a microk8s-vm indítási megerősítését, futtassa a
multipass shell microk8s-vm
parancsot a virtuálisgép-példány eléréséhez.multipass shell microk8s-vm
A multipass működése után hozzáférhet az Ubuntu virtuális géphez a fürt üzemeltetéséhez és a MicroK8s telepítéséhez.
Telepítse a MicroK8s snap alkalmazást. Ez a lépés az internetkapcsolat és az asztali eszköz sebességétől függően eltarthat néhány percig.
sudo snap install microk8s --classic
A sikeres telepítés a következő üzenetet jeleníti meg:
2020-03-16T12:50:59+02:00 INFO Waiting for restart... microk8s v1.17.3 from Canonical✓ installed
Most már telepítheti a bővítményeket a fürtön.
A MicroK8s telepítése macOS rendszeren
A MicroK8s futtatásához macOS rendszeren használja a Multipass környezetet. A Multipass egy egyszerűsített virtuálisgép-kezelő Linux, Windows és macOS rendszerekhez.
Két lehetőség közül választhat a Multipass macOS rendszeren való telepítéséhez. Töltse le és telepítse a Multipass macOS rendszerhez készült legújabb kiadását a GitHub weblapjáról, vagy használja a Homebrew-t a Multipass
brew cask install multipass
paranccsal történő telepítéshez.brew install --cask multipass
A parancssori konzolon futtassa a Multipass-indítási parancsot a microk8s-vm rendszerkép konfigurálásához és futtatásához. Ez a lépés az internetkapcsolat és az asztali eszköz sebességétől függően eltarthat néhány percig.
multipass launch --name microk8s-vm --memory 4G --disk 40G
Miután megkapta a microk8s-vm indítási megerősítését, futtassa a
multipass shell microk8s-vm
parancsot a virtuálisgép-példány megadásához.multipass shell microk8s-vm
Ezen a ponton hozzáférhet az Ubuntu virtuális géphez a fürt üzemeltetéséhez. Ez után még telepítenie kell a MicroK8s-t. Follow these steps.
Telepítse a MicroK8s snap alkalmazást. Ez a lépés az internetkapcsolat és az asztali eszköz sebességétől függően eltarthat néhány percig.
sudo snap install microk8s --classic
A sikeres telepítés a következő üzenetet jeleníti meg:
2020-03-16T12:50:59+02:00 INFO Waiting for restart... microk8s v1.17.3 from Canonical✓ installed
Most már telepítheti a bővítményeket a fürtön.
A fürt előkészítése
A MicroK8s status parancsával megtekintheti a telepített bővítmények állapotát a fürtön. Ezek a bővítmények számos szolgáltatást biztosítanak, amelyek némelyikét korábban már említettük. Ilyenek például a DNS-funkciók.
A telepítés állapotának ellenőrzéséhez futtassa a
microk8s.status --wait-ready
parancsot.sudo microk8s.status --wait-ready
Figyelje meg, hogy a fürtön számos letiltott bővítmény található. Ne törődjön a fel nem ismert bővítményekkel.
microk8s is running addons: cilium: disabled dashboard: disabled dns: disabled fluentd: disabled gpu: disabled helm3: disabled helm: disabled ingress: disabled istio: disabled jaeger: disabled juju: disabled knative: disabled kubeflow: disabled linkerd: disabled metallb: disabled metrics-server: disabled prometheus: disabled rbac: disabled registry: disabled storage: disabled
A listából engedélyeznie kell a DNS-, irányítópult- és beállításjegyzék-bővítményeket. Az egyes bővítmények céljai a következők:
Bővítmények Purpose DNS A coreDNS
szolgáltatás központi telepítése.Dashboard A kubernetes-dashboard
szolgáltatás és számos más, annak funkcióit támogató szolgáltatás központi telepítése. Ez a Kubernetes-fürtök általános célú, webalapú felhasználói felülete.Registry Privát beállításjegyzéket és számos, annak funkcióit támogató szolgáltatást helyez üzembe. Ezt a beállításjegyzéket használhatja a privát tárolók tárolásához. A bővítmények telepítéséhez futtassa a következő parancsot.
sudo microk8s.enable dns dashboard registry
Most már készen áll a fürt elérésére a következővel kubectl
: .
A Kubernetes-fürt megismerése
A MicroK8s a kubectl
egy olyan verzióját biztosítja, amely használható az új Kubernetes-fürttel való kommunikációhoz. Ez a kubectl
-példány lehetővé teszi egy másik rendszerszintű kubectl
-példány párhuzamos telepítését anélkül, hogy ez hatással lenne a működésére.
A
microk8s.kubectl
kubectl
aliasának használatához futtassa asnap alias
parancsot. Ez a lépés a használatot teszi egyszerűbbé.sudo snap alias microk8s.kubectl kubectl
A parancs sikeres befejezésekor a következő kimenet jelenik meg:
Added: - microk8s.kubectl as kubectl
Fürtcsomópont adatainak megjelenítése
Ahogy korábban már szó volt róla, a Kubernetes-fürt vezérlősíkokból és munkavégző csomópontokból áll. Vizsgáljuk meg az új fürtöt, és ami telepítve lett.
Ellenőrizze a fürtben üzemelő csomópontokat.
Tudja, hogy a MicroK8s egyetlen csomópontos fürtre van telepítve, és csak egy csomópontra számít. Ne feledje azonban, hogy ez a csomópont a fürt vezérlősíkja és munkavégző csomópontja is egyben. A
kubectl get nodes
parancs futtatásával ellenőrizze ezt a konfigurációt. A fürt összes erőforrásával kapcsolatos információk lekéréséhez futtassa akubectl get
következő parancsot:sudo kubectl get nodes
Az eredmény hasonló az alábbi példához, amely azt mutatja, hogy a fürtben csak egy csomópont található microk8s-vm néven. Figyelje meg, hogy a csomópont üzemkész állapotban van. A kész állapot azt jelzi, hogy a vezérlősík számítási feladatokat ütemezhet ezen a csomóponton.
NAME STATUS ROLES AGE VERSION microk8s-vm Ready <none> 35m v1.17.3
A kért erőforrással kapcsolatban további információkat is kaphat. Tegyük fel például, hogy meg kell keresnie a csomópont IP-címét. Ha további információkat szeretne lekérni az API-kiszolgálóról, futtassa a paramétert
-o wide
:sudo kubectl get nodes -o wide
Az eredmény hasonló az alábbi példához. Figyelje meg, hogy most már a csomópont belső IP-címe, a csomóponton futó operációs rendszer, a kernel verziója és a tároló futtatókörnyezete is megjelenik.
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME microk8s-vm Ready <none> 36m v1.17.3 192.168.56.132 <none> Ubuntu 18.04.4 LTS 4.15.0-88-generic containerd://1.2.5
A következő lépés a fürtön futó szolgáltatások megismerése. A csomópontokhoz hasonlóan a
kubectl get
parancs használatával is megkeresheti a fürtön futó szolgáltatásokkal kapcsolatos információkat.sudo kubectl get services -o wide
Az eredmény hasonló az alábbi példához, de figyelje meg, hogy csak egy szolgáltatás szerepel a listában. Korábban telepítette a bővítményeket a fürtre, és várhatóan ezek a szolgáltatások is megjelennek.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 37m <none>
Az egyetlen szolgáltatáslista oka, hogy a Kubernetes egy névterek nevű fogalom használatával logikailag több virtuális fürtre osztja a fürtöket.
Az összes névtér összes szolgáltatásának lekéréséhez adja meg a paramétert
--all-namespaces
:sudo kubectl get services -o wide --all-namespaces
Az eredmény hasonló az alábbi példához. Figyelje meg, hogy három névtér található a fürtben. Ezek az alapértelmezett
container-registry
éskube-system
névterek. Itt láthatja a telepítettregistry
,kube-dns
éskubernetes-dashboard
példányokat. Vannak olyan támogató szolgáltatások is, amelyeket a bővítmények mellett telepítettek.NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR container-registry registry NodePort 10.152.183.36 <none> 5000:32000/TCP 28m app=registry default kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 37m <none> kube-system dashboard-metrics-scraper ClusterIP 10.152.183.130 <none> 8000/TCP 28m k8s-app=dashboard-metrics-scraper kube-system heapster ClusterIP 10.152.183.115 <none> 80/TCP 28m k8s-app=heapster kube-system kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP,9153/TCP 28m k8s-app=kube-dns kube-system kubernetes-dashboard ClusterIP 10.152.183.132 <none> 443/TCP 28m k8s-app=kubernetes-dashboard kube-system monitoring-grafana ClusterIP 10.152.183.88 <none> 80/TCP 28m k8s-app=influxGrafana kube-system monitoring-influxdb ClusterIP 10.152.183.232 <none> 8083/TCP,8086/TCP 28m k8s-app=influxGrafana
Most, hogy megtekintheti a fürtön futó szolgáltatásokat, ütemezheti a munkaterhelést a munkavégző csomóponton.
Webkiszolgáló telepítése fürtön
Egy webkiszolgálót szeretne ütemezni a fürtön, hogy az ügyfelei számára egy webhelyet tegyen elérhetővé. Számos lehetőség közül választhat. Ebben a példában az NGINX-et használja.
Ahogy korában már szó volt róla, a tevékenységprofilok meghatározásához használhat pod-jegyzékfájlokat a podok, a replikakészletek és az üzemelő példányok leírásához. Mivel nem fedte le részletesen ezeket a fájlokat, futtatva kubectl
közvetlenül továbbíthatja az információkat az API-kiszolgálónak.
Bár a kubectl
használata kényelmes, az ajánlott eljárás a jegyzékfájlok használata. A jegyzékfájlok lehetővé teszik, hogy könnyedén előregörgesse vagy visszaállítsa a fürtbeli üzemelő példányokat. Ezek a fájlok a fürt konfigurációjának dokumentálásában is segítenek.
Hozza létre az NGINX-példányt a
kubectl create deployment
paranccsal. A pod egyetlen példányának létrehozásához meg kell adnia az üzemelő példány nevét és a tárolólemezképet.sudo kubectl create deployment nginx --image=nginx
Az eredmény hasonló a következő példához:
deployment.apps/nginx created
Az üzembe helyezéssel kapcsolatos információk lekéréséhez futtassa a következőt
kubectl get deployments
:sudo kubectl get deployments
Az eredmény hasonló az alábbi példához. Figyelje meg, hogy az üzemelő példány neve megegyezik a megadott névvel, és hogy egy ilyen nevű üzemelő példány üzemkész állapotban van és elérhető.
NAME READY UP-TO-DATE AVAILABLE AGE nginx 1/1 1 1 18s
Az üzembe helyezéssel létrejött egy pod. A fürt podjaival kapcsolatos információk lekéréséhez futtassa a
kubectl get pods
következő parancsot:sudo kubectl get pods
Az eredmény hasonló az alábbi példához. Figyelje meg, hogy a pod neve egy generált érték, amely az üzembe helyezés nevével van előtagban, és a pod állapota Fut.
NAME READY STATUS RESTARTS AGE nginx-86c57db685-dj6lz 1/1 Running 0 33s
A webhely telepítésének tesztelése
Tesztelje az NGINX-telepítést úgy, hogy csatlakozik a webkiszolgálóhoz a pod IP-címével.
A pod címének megkereséséhez adja meg a paramétert
-o wide
:sudo kubectl get pods -o wide
Az eredmény hasonló az alábbi példához. Figyelje meg, hogy a parancs a csomópont IP-címét és annak a csomópontnak a nevét is visszaadja, amelyen a tevékenységprofil ütemezve van.
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-86c57db685-dj6lz 1/1 Running 0 4m17s 10.1.83.10 microk8s-vm <none> <none>
A webhely eléréséhez futtassa
wget
a korábban felsorolt IP-címen:wget <POD_IP>
Az eredmény hasonló a következő példához:
--2020-03-16 13:34:17-- http://10.1.83.10/ Connecting to 10.1.83.10:80... connected. HTTP request sent, awaiting response... 200 OK Length: 612 [text/html] Saving to: 'index.html' index.html 100%[==============================================================================================>] 612 --.-KB/s in 0s 2020-03-16 13:34:17 (150 MB/s) - 'index.html' saved [612/612]
Fürtön üzemelő webkiszolgáló skálázása
Tegyük fel, hogy hirtelen megnövekszik a webhelyhez hozzáférő felhasználók száma, és a webhely a terhelés következtében elkezd meghibásodni. A hely több példányát is üzembe helyezheti a fürtben, és feloszthatja a terhelést a példányok között.
A kubectl scale
paranccsal skálázhatja az üzemelő példány replikáinak számát. Ön adhatja meg a szükséges replikák számát és az üzemelő példány nevét.
Az NGINX-podok teljes számának háromra való skálázásához futtassa a
kubectl scale
következő parancsot:sudo kubectl scale --replicas=3 deployments/nginx
Az eredmény hasonló a következő példához:
deployment.apps/nginx scaled
A skálázási parancs lehetővé teszi a példányszám felfelé vagy lefelé méretezését.
A futó podok számának ellenőrzéséhez futtassa a
kubectl get
parancsot, majd adja meg ismét a paramétert-o wide
:sudo kubectl get pods -o wide
Az eredmény hasonló az alábbi példához. Figyelje meg, hogy most három üzemelő podot lát, amelyek mindegyike egyedi IP-címmel rendelkezik.
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-86c57db685-dj6lz 1/1 Running 0 7m57s 10.1.83.10 microk8s-vm <none> <none> nginx-86c57db685-lzrwp 1/1 Running 0 9s 10.1.83.12 microk8s-vm <none> <none> nginx-86c57db685-m7vdd 1/1 Running 0 9s 10.1.83.11 microk8s-vm <none> <none> ubuntu@microk8s-vm:~$
Több konfigurációt kell alkalmaznia a fürtre, hogy hatékonyan közzétehesse webhelyét nyilvános elérésű webhelyként. Például telepítenie kell egy terheléselosztót, és le kell képeznie a csomópont IP-címeit. Az ilyen típusú konfiguráció azoknak a speciális szempontoknak a részét képezi, amelyeket a későbbiekben fog megismerni. Az összegzésben vannak utasítások, ha úgy dönt, hogy eltávolítja és eltávolítja a virtuális gépet.