Harjoitus – Kubernetes-klusterin toiminnallisuuteen tutustuminen
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:
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 --classicOnnistunut 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.
Lataa ja asenna Uusin Multipass for Windows -julkaisuversio GitHub.
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 40GKun saat microk8s-vm:n käynnistysvahvistuksen, suorita
multipass shell microk8s-vm-komento näennäiskoneen esiintymän käyttämiseksi.multipass shell microk8s-vmKun multipass toimii, voit käyttää Ubuntu-näennäiskonetta klusterin isännöinnissä ja MicroK8-klustereissa.
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 --classicOnnistunut 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.
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 multipassSuorita 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 40GKun saat microk8s-vm:n käynnistysvahvistuksen, anna näennäiskoneen esiintymä suorittamalla
multipass shell microk8s-vm-komento.multipass shell microk8s-vmTässä vaiheessa voit käyttää Ubuntu-näennäiskonetta klusterin isännöimiseksi. Sinun on vielä asennettava MicroK8s. Toimi seuraavasti.
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 --classicOnnistunut 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.
Jos haluat tarkistaa asennuksen tilan, suorita
microk8s.status --wait-ready-komento.sudo microk8s.status --wait-readyHuomaa, 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: disabledLuettelossa 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 coreDNSpalvelun 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.
Suorita
snap alias-komento aliaksenmicrok8s.kubectlkubectl. Tämä vaihe yksinkertaistaa käyttöä.sudo snap alias microk8s.kubectl kubectlSeuraava 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.
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, suoritakubectl get-komento:sudo kubectl get nodesTulos 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.3Saat 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 wideTulos 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.5Seuraava vaihe on tutkia klusterissa suoritettavia palveluita. Voit solmujen tavoin hakea tietoja klusterissa suoritettavista palveluista suorittamalla
kubectl get-komennon.sudo kubectl get services -o wideTulos 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-namespacesTulos on seuraavan esimerkin kaltainen. Huomaa, että klusterissasi on kolme nimitilaa. Ne ovat oletusnimitiloja,
container-registryjakube-system. Täällä näet asentamasiregistry,kube-dnsjakubernetes-dashboardesiintymä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=influxGrafanaNyt 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.
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=nginxTulos on seuraavan esimerkin kaltainen:
deployment.apps/nginx createdJos haluat noutaa käyttöönottosi tiedot, suorita
kubectl get deployments:sudo kubectl get deploymentsTulos 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 18sKäyttöönotto loi podin. Jos haluat saada tietoja klusterin palkoista, suorita
kubectl get pods-komento:sudo kubectl get podsTulos 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.
Jos haluat löytää podin osoitteen, välitä
-o wide-parametri:sudo kubectl get pods -o wideTulos 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>Voit käyttää sivustoa suorittamalla
wgetaiemmin 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.
Jos haluat skaalata NGINX-palkoiden kokonaismäärän kolmeen, suorita
kubectl scale-komento:sudo kubectl scale --replicas=3 deployments/nginxTulos on seuraavan esimerkin kaltainen:
deployment.apps/nginx scaledSkaalauskomennon avulla voit skaalata esiintymämäärän ylös- tai alaspäin.
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 wideTulos 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.