Gyakorlat – a Kubernetes-fürt funkcióinak megismerése

Befejeződött

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:

  1. 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.

  1. Töltse le és telepítse a Windowshoz készült Multipass legújabb kiadását a GitHub-ról.

  2. 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
    
  3. 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.

  4. 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.

  1. 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
    
  2. 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
    
  3. 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.

  4. 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.

  1. 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
    
  2. 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.

  1. A microk8s.kubectl kubectl aliasának használatához futtassa a snap 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.

  1. 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 a kubectl 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
    
  2. 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 és kube-system névterek. Itt láthatja a telepített registry, kube-dns és kubernetes-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.

  1. 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
    
  2. 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
    
  3. 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.

  1. 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>
    
  2. 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.

  1. 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.

  2. 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.