Harjoitus – Kubernetes-klusterin toiminnallisuuteen tutustuminen

Valmis

Useita vaihtoehtoja on käytettävissä, kun Suoritat Kubernetes-toimintoa paikallisesti. Voit asentaa Kubernetesin fyysisille koneille tai virtuaalikoneille (VM), tai käyttää pilvipohjaista ratkaisua, kuten Azure Kubernetes Serviceä (AKS).

Tavoitteenasi tässä harjoituksessa on tutkia Kubernetes-asennusta yhden solmun klusterin avulla. Tässä harjoituksessa opit määrittämään ja asentamaan MicroK8s -ympäristön, jonka määrittäminen ja purkaminen on helppoa. Sen jälkeen otat käyttöön Kubernetes-palvelun ja skaalaat sen useisiin esiintymiin verkkosivuston isännöimiseksi.

Muistiinpano

Tämä harjoitus on vapaaehtoinen ja sisältää vaiheita, jotka näyttävät, miten poistaa ja poistaa harjoituksessa käytettävät ohjelmistot ja resurssit.

Muista, että on olemassa myös muita vaihtoehtoja, kuten MiniKube- ja Kubernetes-tuki Dockerissa.

Mikä On MicroK8s?

MicroK8s on vaihtoehto yhden solmun Kubernetes-klusterin käyttöönottoon yhtenä pakettina työasemille ja Esineiden Internet (IoT) -laitteille. Canonical, Ubuntu Linuxin luoja, on alun perin kehitetty ja ylläpitää tällä hetkellä MicroK8-tietoyksiköitä.

Voit asentaa MicroK8-tietokoneet Linuxiin, Windowsiin ja macOS:ään. Asennusohjeet ovat kuitenkin hieman erilaiset kunkin käyttöjärjestelmän osalta. Valitse ympäristöösi parhaiten sopiva vaihtoehto.

MicroK8s:n asentaminen Linuxiin

MicroK8s:n Linux-asennus on asennusvaihtoehto, jossa on vähiten vaiheita. Vaihda pääteikkunaan ja suorita komennot seuraavien ohjeiden mukaisesti:

  1. Asenna MicroK8s-kohdistussovellus. Tämän vaiheen suorittaminen voi kestää muutamia minuutteja Internet-yhteyden ja työpöydän nopeuden mukaan.

    sudo snap install microk8s --classic
    

    Onnistunut asennus näyttää seuraavan viestin.

    2020-03-16T12:50:59+02:00 INFO Waiting for restart...
    microk8s v1.17.3 from Canonical✓ installed
    

Olet nyt valmis asentamaan lisäosat klusteriin.

MicroK8s-asennuksen asentaminen Windowsiin

Käytä Multipass-parametria MicroK8s-komennon suorittamiseen Windowsissa. Multipass on kevyt näennäiskonehallinta Linuxille, Windowsille ja macOS:lle.

  1. Lataa ja asenna Uusin Multipass for Windows -julkaisuversio GitHub.

  2. Suorita komentokonsolissa Multipass launch-komento microk8s-vm-kuvan määrittämiseksi ja suorittamiseksi. Tämän vaiheen suorittaminen voi kestää muutamia minuutteja Internet-yhteyden ja työpöydän nopeuden mukaan.

    multipass launch --name microk8s-vm --memory 4G --disk 40G
    
  3. Kun saat microk8s-vm:n käynnistysvahvistuksen, suorita multipass shell microk8s-vm-komento näennäiskoneen esiintymän käyttämiseksi.

    multipass shell microk8s-vm
    

    Kun multipass toimii, voit käyttää Ubuntu-näennäiskonetta klusterin isännöinnissä ja MicroK8-klustereissa.

  4. Asenna MicroK8s-kohdistussovellus. Tämän vaiheen suorittaminen voi kestää muutamia minuutteja Internet-yhteyden ja työpöydän nopeuden mukaan.

    sudo snap install microk8s --classic
    

    Onnistunut asennus näyttää seuraavan sanoman:

    2020-03-16T12:50:59+02:00 INFO Waiting for restart...
    microk8s v1.17.3 from Canonical✓ installed
    

Olet nyt valmis asentamaan lisäosat klusteriin.

MicroK8s:n asentaminen macOS:ään

Jos haluat suorittaa MicroK8s-komennon macOS:ssä, käytä Multipass-parametria. Multipass on kevyt näennäiskonehallinta Linuxille, Windowsille ja macOS:lle.

  1. Voit asentaa Multipassin macOS:ään kahdella eri tavalla. Lataa ja asenna uusin Multipass for macOS -versio GitHub: sta tai asenna Multipass brew cask install multipass-komennolla homebrew.

    brew install --cask multipass
    
  2. Suorita komentokonsolissa multipass launch-komento microk8s-vm-kuvan määrittämiseksi ja suorittamiseksi. Tämän vaiheen suorittaminen voi kestää muutamia minuutteja Internet-yhteyden ja työpöydän nopeuden mukaan.

    multipass launch --name microk8s-vm --memory 4G --disk 40G
    
  3. Kun saat microk8s-vm:n käynnistysvahvistuksen, anna näennäiskoneen esiintymä suorittamalla multipass shell microk8s-vm-komento.

    multipass shell microk8s-vm
    

    Tässä vaiheessa voit käyttää Ubuntu-näennäiskonetta klusterin isännöimiseksi. Sinun on vielä asennettava MicroK8s. Toimi seuraavasti.

  4. Asenna MicroK8s-kohdistussovellus. Tämän vaiheen suorittaminen voi kestää muutamia minuutteja Internet-yhteyden ja työpöydän nopeuden mukaan.

    sudo snap install microk8s --classic
    

    Onnistunut asennus näyttää seuraavan sanoman:

    2020-03-16T12:50:59+02:00 INFO Waiting for restart...
    microk8s v1.17.3 from Canonical✓ installed
    

Olet nyt valmis asentamaan lisäosat klusteriin.

Klusterin valmisteleminen

Jos haluat tarkastella klusteriin asennettujen lisäosien tilaa, suorita status-komento MicroK8s-ruudussa. Nämä apuohjelmat tarjoavat useita palveluja, joista osa oli aiemmin käsittelemiäsi. Yksi esimerkki on DNS-toiminto.

  1. Jos haluat tarkistaa asennuksen tilan, suorita microk8s.status --wait-ready-komento.

    sudo microk8s.status --wait-ready
    

    Huomaa, että klusterissasi on useita käytöstä poistettuja lisäohjelmia. Älä välitä lisäosasta, jota et tunnista.

    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. Luettelossa sinun on otettava käyttöön DNS-, Koontinäyttö- ja Rekisteri-lisäosat. Tässä ovat kunkin lisäosan tarkoitukset:

    Lisäosat Tarkoitus
    DNS - Ottaa coreDNS palvelun käyttöön.
    Koontinäytön Ottaa käyttöön kubernetes-dashboard -palvelun ja useita muita palveluja, jotka tukevat sen toimintoja. Se on yleinen verkkopohjainen käyttöliittymä Kubernetes-klustereille.
    rekisterin Ottaa käyttöön yksityisen rekisterin ja useita palveluita, jotka tukevat sen toimintaa. Käytä tätä rekisteriä yksityisten säilöjen tallentamiseen.

    Jos haluat asentaa apuohjelmat, suorita seuraava komento.

    sudo microk8s.enable dns dashboard registry
    

Olet nyt valmis käyttämään klusteria kubectlavulla.

Kubernetes-klusteriin tutustuminen

MicroK8s sisältää kubectl version, jota voit käyttää vuorovaikutuksessa uuden Kubernetes-klusterin kanssa. Tämän kubectl kopion avulla voit asentaa rinnakkaisen asennuksen toisesta järjestelmänlaajuisesta kubectl esiintymän vaikuttamatta sen toimintaan.

  1. Suorita snap alias-komento aliaksen microk8s.kubectlkubectl. Tämä vaihe yksinkertaistaa käyttöä.

    sudo snap alias microk8s.kubectl kubectl
    

    Seuraava tuloste tulee näkyviin, kun komento on suoritettu onnistuneesti:

    Added:
      - microk8s.kubectl as kubectl
    

Klusterisolmutietojen näyttäminen

Muistat aiemmasta, että Kubernetes-klusteri on olemassa hallitsemattarkoista koneista ja työntekijäsolmuista. Tutustutaan uuteen klusteriin ja katsotaan, mitä on asennettu.

  1. Tarkista klusterissasi olevat solmut.

    Tiedät, että MicroK8s on yhden solmun klusterin asennus, joten odotat näkeväni vain yhden solmun. Muista kuitenkin, että tämä solmu on sekä ohjaustaso että klusterin työntekijäsolmu. Vahvista tämä määritys suorittamalla kubectl get nodes-komento. Jos haluat noutaa tietoja kaikista klusterin resursseista, suorita kubectl get-komento:

    sudo kubectl get nodes
    

    Tulos on samankaltainen kuin seuraavassa esimerkissä, joka näyttää, että klusterissa on vain yksi solmu, jonka nimi on microk8s-vm. Huomaa, että solmun tila on Valmis. Valmis-tila ilmaisee, että ohjauskone saattaa ajoittaa kuormituksia tälle solmulle.

    NAME          STATUS   ROLES    AGE   VERSION
    microk8s-vm   Ready    <none>   35m   v1.17.3
    

    Saat lisätietoja pyydetystä resurssista. Oletetaan esimerkiksi, että sinun on löydettävä solmun IP-osoite. Jos haluat noutaa lisätietoja ohjelmointirajapintapalvelimesta, suorita -o wide-parametri:

    sudo kubectl get nodes -o wide
    

    Tulos on seuraavan esimerkin kaltainen. Huomaa, että näet nyt solmun sisäisen IP-osoitteen, solmussa suoritettavan käyttöjärjestelmän, ydinversion ja säilön suorituspalvelun.

    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. Seuraava vaihe on tutkia klusterissa suoritettavia palveluita. Voit solmujen tavoin hakea tietoja klusterissa suoritettavista palveluista suorittamalla kubectl get -komennon.

    sudo kubectl get services -o wide
    

    Tulos on samankaltainen kuin seuraavassa esimerkissä, mutta huomaa, että luettelossa on vain yksi palvelu. Asensit lisäosat klusteriin aiemmin, ja odottaisit näkeväni myös nämä palvelut.

    NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE   SELECTOR
    kubernetes   ClusterIP   10.152.183.1   <none>        443/TCP   37m   <none>
    

    Yksittäisen palveluluettelon syy on se, että Kubernetes käyttää käsitettä nimeltä nimitilan klusterin jakamiseen useisiin virtuaaliklustereihin.

    Jos haluat noutaa kaikki palvelut kaikissa nimitiloissa, välitä --all-namespaces-parametri:

    sudo kubectl get services -o wide --all-namespaces
    

    Tulos on seuraavan esimerkin kaltainen. Huomaa, että klusterissasi on kolme nimitilaa. Ne ovat oletusnimitiloja, container-registryja kube-system. Täällä näet asentamasi registry, kube-dnsja kubernetes-dashboard esiintymät. On myös tukipalveluita, jotka asennettiin joidenkin lisäosien rinnalle.

    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
    

    Nyt kun näet klusterissa suoritettavat palvelut, voit ajoittaa kuormituksen työntekijäsolmulle.

Verkkopalvelimen asentaminen klusteriin

Haluat ajoittaa klusteriin verkkopalvelimen, joka palvelee sivustoa asiakkaillesi. Valittavissa useita vaihtoehtoja. Tässä esimerkissä käytetään NGINX:ää.

Muista aiemmasta, että voit käyttää pod-luettelotiedostoja kuvaamaan palkoja, replikajoukkoja ja käyttöönottoja kuormitusten määrittämiseen. Koska et ole käsitellyt näitä tiedostoja yksityiskohtaisesti, suoritat kubectl tietojen välittämiseen suoraan ohjelmointirajapintapalvelimeen.

Vaikka kubectl käyttö on kätevää, luettelotiedostojen käyttäminen on paras käytäntö. Kokoonpanotiedostojen avulla voit siirtyä eteenpäin tai peruuttaa käyttöönottoja vaivattomasti klusterissasi. Nämä tiedostot auttavat myös dokumentoimaan klusterin määritykset.

  1. Luo NGINX-käyttöönotto suorittamalla kubectl create deployment-komento. Määritä käyttöönoton nimi ja säilön kuva, jos haluat luoda yksittäisen esiintymän podista.

    sudo kubectl create deployment nginx --image=nginx
    

    Tulos on seuraavan esimerkin kaltainen:

    deployment.apps/nginx created
    
  2. Jos haluat noutaa käyttöönottosi tiedot, suorita kubectl get deployments:

    sudo kubectl get deployments
    

    Tulos on seuraavan esimerkin kaltainen. Huomaa, että käyttöönoton nimi vastaa antamaasi nimeä ja että yksi käyttöönotto, jolla on tämä nimi, on valmis ja käytettävissä.

    NAME    READY   UP-TO-DATE   AVAILABLE   AGE
    nginx   1/1     1            1           18s
    
  3. Käyttöönotto loi podin. Jos haluat saada tietoja klusterin palkoista, suorita kubectl get pods-komento:

    sudo kubectl get pods
    

    Tulos on seuraavan esimerkin kaltainen. Huomaa, että podin nimi on luotu arvo, jonka etuliitteenä on käyttöönoton nimi, ja podin tila on Running.

    NAME                     READY   STATUS    RESTARTS   AGE
    nginx-86c57db685-dj6lz   1/1     Running   0          33s
    

Sivuston asennuksen testaaminen

Testaa NGINX-asennus muodostamalla yhteys verkkopalvelimeen podin IP-osoitteen kautta.

  1. Jos haluat löytää podin osoitteen, välitä -o wide-parametri:

    sudo kubectl get pods -o wide
    

    Tulos on seuraavan esimerkin kaltainen. Huomaa, että komento palauttaa sekä solmun IP-osoitteen että solmun nimen, jolle kuormitus ajoitetaan.

    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. Voit käyttää sivustoa suorittamalla wget aiemmin luetellulla IP-osoitteella:

    wget <POD_IP>
    

    Tulos on seuraavan esimerkin kaltainen:

    --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]
    

Verkkopalvelimen käyttöönoton skaalaaminen klusteriin

Oletetaan, että yhtäkkiä sivuston käyttäjien määrä kasvaa, ja sivusto alkaa epäonnistua kuormituksen vuoksi. Voit ottaa käyttöön lisää sivuston esiintymiä klusterissasi ja jakaa kuormituksen esiintymien välillä.

Jos haluat skaalata käyttöönoton replikoiden määrää, suorita kubectl scale-komento. Voit määrittää tarvitsemiesi replikoiden määrän ja käyttöönoton nimen.

  1. Jos haluat skaalata NGINX-palkoiden kokonaismäärän kolmeen, suorita kubectl scale-komento:

    sudo kubectl scale --replicas=3 deployments/nginx
    

    Tulos on seuraavan esimerkin kaltainen:

    deployment.apps/nginx scaled
    

    Skaalauskomennon avulla voit skaalata esiintymämäärän ylös- tai alaspäin.

  2. Voit tarkistaa käynnissä olevien palkoiden määrän suorittamalla kubectl get -komennon ja välittämällä uudelleen -o wide-parametrin:

    sudo kubectl get pods -o wide
    

    Tulos on seuraavan esimerkin kaltainen. Huomaa, että näet nyt kolme käynnissä olevaa podia, joilla kullakin on yksilöivä IP-osoite.

    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:~$
    

Sinun on käytettävä useita lisämäärityksiä klusteriin, jotta sivustosi paljastuu julkisena verkkosivustona. Tällaisia ovat esimerkiksi kuormituksentasain ja IP-osoitteiden yhdistämismääritys. Tämän tyyppiset kokoonpanot ovat osa kehittyneitä näkökohtia, joita tutustut tulevaisuudessa. Yhteenvedossa on ohjeet, jos päätät poistaa näennäiskoneen asennuksen ja puhdistaa sen.