Kubernetes - pilven kesyttäminen

Kun haluat käyttää Linuxia palvelujen tarjoamiseen yritykselle, näiden palveluiden on oltava turvallisia, joustavia ja skaalautuvia. Hyviä sanoja, mutta mitä me tarkoitamme niillä?

"Suojattu" tarkoittaa, että käyttäjät voivat käyttää tarvitsemiaan tietoja, jotka ovat vain luku- tai kirjoitusoikeuksia. Samanaikaisesti tietoja ei altisteta osapuolille, joilla ei ole valtuuksia nähdä niitä. Turvallisuus on petollista: voit ajatella, että sinulla on kaikki suojattu vain selvittääksesi myöhemmin, että siellä on reikiä. Suunnittelu turvallisuuteen projektin alusta alkaen on paljon helpompaa kuin yrittää jälkiasentaa sitä myöhemmin.

”Joustava” tarkoittaa, että palvelusi sietävät häiriöitä infrastruktuurissa. Vika voi olla palvelimen levy-ohjain, joka ei voi enää käyttää mitään levyjä, jolloin tiedot eivät ole käytettävissä. Tai vika voi olla verkkokytkin, joka ei enää salli kahden tai useamman järjestelmän kommunikointia. Tässä yhteydessä "yksi epäonnistumispiste" tai SPOF on vika, joka vaikuttaa haitallisesti palvelujen saatavuuteen. Kestävä infrastruktuuri on sellainen, jossa ei ole SPOF: itä.

Skaalautuva kuvaa järjestelmien kykyä käsitellä kysynnän piikkejä sulavasti. Se sanelee myös, kuinka helposti järjestelmiin voidaan tehdä muutoksia. Esimerkiksi uuden käyttäjän lisääminen, tallennuskapasiteetin lisääminen tai infrastruktuurin siirtäminen Amazon Web Services -palvelusta Google Cloudiin - tai jopa sen siirtäminen yrityksen sisällä.

Heti kun infrastruktuurisi laajenee yhden palvelimen ulkopuolelle, on paljon vaihtoehtoja turvallisuuden, joustavuuden ja skaalautuvuuden lisäämiseksi. Tarkastelemme, miten nämä ongelmat on ratkaistu perinteisesti ja mitä uutta tekniikkaa on saatavilla, joka muuttaa suurten sovellusten laskennan.

Hanki lisää Linuxia!

Nautitko lukemastasi? Haluatko lisää Linuxia ja avointa lähdekoodia? Voimme toimittaa, kirjaimellisesti! Tilaa Linux-muoto jo tänään edulliseen hintaan. Voit saada tulostusnumeroita, digitaalisia painoksia tai miksi molempia? Toimitamme kotiovellesi maailmanlaajuisesti yksinkertaisella vuosimaksulla. Tee siis elämästäsi parempi ja helpompaa, tilaa nyt!

Nykypäivän mahdollisuuden ymmärtämiseksi on hyödyllistä tarkastella, miten teknologiaprojektit on perinteisesti toteutettu. Muinaisina aikoina - toisin sanoen yli 10 vuotta sitten - yritykset ostivat tai vuokraavat laitteistoja kaikkien sovellusten komponenttien ajamiseksi. Jopa suhteellisen yksinkertaisissa sovelluksissa, kuten WordPress-verkkosivustossa, on useita komponentteja. WordPressin tapauksessa tarvitaan MySQL-tietokanta sekä web-palvelin, kuten Apache, ja tapa käsitellä PHP-koodia. Joten he rakensivat palvelimen, perustivat Apache-, PHP- ja MySQL-ohjelmat, asensivat WordPressin ja lähtivät.

Yleensä se toimi. Se toimi tarpeeksi hyvin, että täsmälleen tällä tavalla konfiguroituja palvelimia on edelleen valtava määrä. Mutta se ei ollut täydellinen, ja kaksi suurempaa ongelmaa olivat joustavuus ja skaalautuvuus.

Joustavuuden puute tarkoitti sitä, että mikä tahansa merkittävä ongelma palvelimella johtaisi palvelun menetykseen. Selvästi katastrofaalinen epäonnistuminen ei tarkoita sitä, ettei verkkosivustoa olisi, mutta ei ollut myöskään tilaa suorittaa määräaikaishuoltoja vaikuttamatta verkkosivustoon. Jopa Apachen rutiininomaisen tietoturvapäivityksen asentaminen ja aktivointi edellyttäisi muutaman sekunnin katkoksen verkkosivustolle.

Joustavuusongelma ratkaistiin suurelta osin rakentamalla korkean käytettävyyden klustereita. Periaatteena oli, että verkkosivustoa ylläpitää kaksi palvelinta, jotka on määritetty siten, että jommankumman epäonnistuminen ei johtanut verkkosivuston pysähtymiseen. Tarjottu palvelu oli joustava, vaikka yksittäiset palvelimet eivät olisikaan.

Tiivistelmä pilviä

Osa Kubernetesin voimasta on sen tarjoama abstraktio. Kehittäjän näkökulmasta he kehittävät sovelluksen toimimaan Docker-säilössä. Docker ei välitä, onko se käynnissä Windowsissa, Linuxissa tai muussa käyttöjärjestelmässä. Sama Docker-säilö voidaan ottaa kehittäjän MacBookista ja ajaa Kubernetesin alla ilman muutoksia.

Itse Kubernetes-asennus voi olla yksi kone. Paljon Kubernetesin etuja ei tietenkään ole käytettävissä: automaattista skaalausta ei tule; siinä on ilmeinen yksi epäonnistumiskohta ja niin edelleen. Todisteena konseptista testiympäristössä se kuitenkin toimii.

Kun olet valmis tuotantoon, voit suorittaa sisäisen tai pilvipalveluntarjoajan, kuten AWS: n tai Google Cloudin, palvelun. Pilvipalvelujen tarjoajilla on joitain sisäänrakennettuja palveluita, jotka auttavat Kubernetesin suorittamisessa, mutta mikään niistä ei ole kovia vaatimuksia. Jos haluat siirtyä Googlen, Amazonin ja oman infrastruktuurin välillä, määrität Kubernetesin ja siirryt. Mitään sovelluksia ei tarvitse muuttaa millään tavalla.

Ja missä Linux on? Kubernetes toimii Linuxissa, mutta käyttöjärjestelmä on sovelluksille näkymätön. Tämä on merkittävä askel IT-infrastruktuurien kypsyydessä ja käytettävyydessä.

Slashdot-vaikutus

Skaalautuvuusongelma on vähän hankalampi. Oletetaan, että WordPress-sivustosi saa 1000 kävijää kuukaudessa. Eräänä päivänä yrityksesi mainitaan Radio 4: ssä tai aamiaistelevisiossa. Yhtäkkiä saat yli kuukauden kävijöitä 20 minuutissa. Olemme kaikki kuulleet tarinoita verkkosivustojen kaatumisesta, ja tyypillisesti siksi: skaalattavuuden puute.

Kaksi palvelinta, jotka auttoivat joustavuudessa, pystyisivät hallitsemaan suurempaa kuormitusta kuin yksi palvelin yksin, mutta se on silti rajallinen. Maksat kahdesta palvelimesta 100 prosenttia ajasta ja suurimman osan ajasta molemmat toimivat täydellisesti. On todennäköistä, että yksin voi hoitaa sivustoasi. Sitten John Humphrys mainitsee yrityksesi Today-palvelussa ja tarvitset 10 palvelinta kuorman käsittelemiseksi - mutta vain muutaman tunnin ajan.

Parempi ratkaisu sekä joustavuuteen että skaalautuvuuteen liittyvään ongelmaan oli pilvipalvelut. Määritä palvelinilmentymä tai kaksi - pienet palvelimet, jotka käyttävät sovelluksiasi - Amazon Web Services (AWS) -palvelussa tai Google Cloudissa, ja jos jokin esiintymistä epäonnistui jostain syystä, se käynnistetään automaattisesti uudelleen. Määritä automaattinen skaalaus oikein, ja kun Mr Humphrys saa Web-palvelinesiintymiesi työmäärän kasvamaan nopeasti, muut palvelinilmentymät alkavat automaattisesti jakaa työmäärän. Myöhemmin korkojen loppuessa nämä lisätapaukset pysäytetään ja maksat vain siitä, mitä käytät. Täydellinen … vai onko?

Vaikka pilviratkaisu on paljon joustavampi kuin perinteinen erillinen palvelin, on edelleen ongelmia. Kaikkien käynnissä olevien pilvi-ilmentymien päivittäminen ei ole helppoa. Pilvipalveluun kehittämisessä on myös haasteita: kehittäjiesi käyttämä kannettava tietokone voi olla samanlainen kuin pilvi-ilmentymä, mutta se ei ole sama. Jos sitoutut AWS: ään, siirtyminen Google Cloudiin on monimutkainen yritys. Ja oletetaan, jostain syystä et yksinkertaisesti halua luovuttaa tietokonettasi Amazonille, Googlelle tai Microsoftille?

Säiliöistä on tullut keino kääriä sovellukset kaikilla riippuvuuksillaan yhteen pakettiin, joka voidaan ajaa missä tahansa. Säiliöt, kuten Docker, voivat toimia kehittäjien kannettavissa tietokoneissa samalla tavalla kuin pilviesiintymillesi, mutta konttikannan hallinta on entistä haastavampaa, kun konttien määrä kasvaa.

Vastaus on konttiorkesterointi. Tämä on merkittävä painopisteen muutos. Aikaisemmin varmistimme, että meillä on tarpeeksi palvelimia, olivatpa ne fyysisiä tai virtuaalisia, jotta voimme taata työmäärän. Pilvipalveluntarjoajien automaattisen skaalauksen käyttö auttoi, mutta käsittelemme silti tapauksia. Meidän oli määritettävä manuaalisesti kuormituksen tasapainottimet, palomuurit, tietojen tallennus ja paljon muuta. Konttiorkesterin avulla kaikki (ja paljon muuta) hoidetaan. Määritämme tarvitsemamme tulokset, ja kontti-orkesterointityökalumme täyttävät vaatimukset. Määritämme mitä haluamme tehdä sen sijaan, miten haluamme sen tekevän.

Jatkuva integrointi ja jatkuva käyttöönotto voivat toimia hyvin Kubernetesin kanssa. Tässä on yleiskatsaus Jenkinsistä, jota käytetään Java-sovelluksen rakentamiseen ja käyttöönottoon

Tule Kuberneteksi

Kubernetes (ku-ber-net-eez) on nykyään johtava kontti-orkesterointityökalu, ja se tuli Googlelta. Jos joku osaa käyttää valtavia IT-infrastruktuureja, Google tietää. Kubernetesin alkuperä on Borg, sisäinen Google-projekti, jota käytetään edelleen useimpien Googlen sovellusten, kuten hakukoneen, Gmailin, Google Mapsin ja muiden, käyttämiseen. Borg oli salaisuus, kunnes Google julkaisi siitä paperin vuonna 2015, mutta paperi teki hyvin ilmeiseksi, että Borg oli Kubernetesin tärkein inspiraatio.

Borg on järjestelmä, joka hallinnoi laskennallisia resursseja Googlen datakeskuksissa ja pitää Googlen sovellukset sekä tuotannossa että muissa toiminnoissa huolimatta laitteistovikoista, resurssien ehtymisestä tai muista ongelmista, jotka muuten olisivat voineet aiheuttaa katkoksen. Se tekee tämän seuraamalla huolellisesti tuhansia Borgin “solun” muodostavia solmuja ja niillä kulkevia säiliöitä sekä käynnistämällä tai pysäyttämällä kontteja tarpeen mukaan vasteena kuormituksen ongelmiin tai vaihteluihin.

Itse Kubernetes syntyi Googlen GIFEE (‘Googlen infrastruktuuri kaikille muille’) -aloitteesta, ja se on suunniteltu Borgin ystävällisemmäksi versioksi, josta voi olla hyötyä Googlen ulkopuolella. Se lahjoitettiin Linux-säätiölle vuonna 2015 muodostamalla Cloud Native Computing Foundation (CNCF).

Kubernetes tarjoaa järjestelmän, jolla "ilmoitat" konttisovelluksesi ja palvelusi, ja varmistaa, että sovelluksesi toimivat näiden ilmoitusten mukaisesti. Jos ohjelmasi edellyttävät ulkoisia resursseja, kuten tallennustilaa tai kuormituksen tasapainotinta, Kubernetes voi tarjota ne automaattisesti. Se voi skaalata sovelluksiasi ylös tai alas, jotta pysyt ajan tasalla kuormituksen muutoksista, ja voi jopa skaalata koko klusterisi tarvittaessa. Ohjelmasi osien ei tarvitse edes tietää, missä ne toimivat: Kubernetes tarjoaa sovelluksille sisäisiä nimipalveluja, jotta ne voivat muodostaa yhteyden "wp_mysql" -ohjelmaan ja olla automaattisesti yhteydessä oikeaan resurssiin. "

Lopputulos on alusta, jota voidaan käyttää sovellusten ajamiseksi missä tahansa infrastruktuurissa, yhdestä koneesta paikan päällä olevaan järjestelmähyllyyn pilvipohjaisiin virtuaalikoneiden laivastoihin, jotka käyttävät kaikkia suuria pilvipalvelujen tarjoajia ja jotka kaikki käyttävät samoja säilöjä ja kokoonpano. Kubernetes on palveluntarjoaja-agnostinen: suorita se missä haluat.

Kubernetes on tehokas työkalu, ja se on välttämättä monimutkainen. Ennen kuin pääsemme yleiskatsaukseen, meidän on esiteltävä joitain Kubernetesissä käytettyjä termejä. Säiliöt käyttävät yksittäisiä sovelluksia, kuten yllä on käsitelty, ja ne on ryhmitelty palkkeihin. Pod on ryhmä tiiviisti linkitettyjä säilöjä, jotka on asennettu yhdessä samaan isäntään ja jakavat joitain resursseja. Laatikossa olevat säilöt toimivat tiiminä: he suorittavat siihen liittyviä toimintoja, kuten sovellussäiliö ja lokisäiliö, jossa on sovelluksen erityiset asetukset.

Kubernetesin yleiskatsaus, jossa päällikkö suorittaa avainkomponentit ja kaksi solmua. Huomaa, että käytännössä pääkomponentit voidaan jakaa useisiin järjestelmiin

Neljä Kubernetes-avainkomponenttia ovat API-palvelin, Scheduler, Controller Manager ja hajautettu kokoonpanotietokanta nimeltä etcd. API-palvelin on Kubernetesin ytimessä ja toimii ensisijaisena päätepisteenä kaikille hallintapyynnöille. Ne voidaan tuottaa useista lähteistä, mukaan lukien muut Kubernetes-komponentit, kuten aikatauluttaja, järjestelmänvalvojat komentorivillä tai verkkopohjaisilla koontinäytöillä ja itse konttisovellukset. Se vahvistaa pyynnöt ja päivittää tiedostot, jotka on tallennettu jne.

Aikataulu määrittää, missä solmuissa eri podit toimivat, ottaen huomioon rajoitukset, kuten resurssivaatimukset, kaikki laitteisto- tai ohjelmistorajoitukset, työmäärä, määräajat ja paljon muuta.

Controller Manager valvoo klusterin tilaa ja yrittää käynnistää tai pysäyttää paketit välttämättä API-palvelimen kautta, jotta klusteri saataisiin haluttuun tilaan. Se hallitsee myös joitain sisäisiä yhteyksiä ja turvaominaisuuksia.

Jokainen solmu suorittaa Kubelet-prosessin, joka kommunikoi API-palvelimen kanssa ja hallitsee kontteja - yleensä Dockerin avulla - ja Kube-Proxy, joka hoitaa verkon välityspalvelimia ja kuormituksen tasapainottamista klusterissa.

Hajautettu etcd-tietokantajärjestelmä saa nimensä /jne kansio Linux-järjestelmissä, jota käytetään järjestelmän kokoonpanotietojen pitämiseen, sekä pääte ”d”, jota käytetään usein daemon-prosessin merkitsemiseen. Etcd: n tavoitteena on tallentaa avainarvotiedot hajautetulla, johdonmukaisella ja vikasietoisella tavalla.

API-palvelin pitää kaikki tilatietonsa etcd: ssä ja voi suorittaa useita instansseja samanaikaisesti. Ajastimella ja ohjaimen hallitsijalla voi olla vain yksi aktiivinen ilmentymä, mutta vuokrausjärjestelmän avulla se määrittää, mikä käynnissä oleva ilmentymä on isäntä. Kaikki tämä tarkoittaa, että Kubernetes voi toimia erittäin saatavana järjestelmänä ilman yksittäisiä vikapisteitä.

Yhdistämällä kaikki yhteen

Joten miten käytämme näitä komponentteja käytännössä? Seuraava on esimerkki WordPress-verkkosivuston perustamisesta Kubernetesin avulla. Jos halusit tehdä tämän todella, sinun kannattaa todennäköisesti käyttää ennalta määritettyä reseptiä, jota kutsutaan ruorikaaviona. Ne ovat saatavana useille tavallisille sovelluksille, mutta tässä tarkastelemme joitain vaiheita, jotka ovat välttämättömiä WordPress-sivuston saamiseksi käyttöön Kubernetes-käyttöjärjestelmässä.

Ensimmäinen tehtävä on määrittää salasana MySQL: lle:

 kubectl luo salainen yleinen mysql-pass - from-literal = password = OMA SALASANA 

kubectl puhuu API-palvelimen kanssa, joka vahvistaa komennon ja tallentaa sitten salasanan etcd: hen. Palvelumme on määritelty YAML-tiedostoissa, ja nyt tarvitsemme jonkin verran pysyvää tallennustilaa MySQL-tietokantaan.

 apiVersion: v1 kind: PersistentVolumeClaim-metatiedot: nimi: mysql-pv-Claude labels: app: wordpress spec: accessModes: - ReadWriteOn resurssit: pyynnöt: tallennustila: 20Gi 

Eritelmän tulisi olla enimmäkseen itsestään selvää. Nimi- ja tunniste-kenttiä käytetään viittaamaan tähän muuhun Kubernetes-osaan, tässä tapauksessa WordPress-säilöön.

Kun olemme määrittäneet tallennustilan, voimme määrittää MySQL-esiintymän osoittamalla sen ennalta määritettyyn tallennustilaan. Sen jälkeen määritetään itse tietokanta. Annamme tälle tietokannalle nimen ja etiketin helppoa käyttöä varten Kubernetesissa.

Nyt tarvitsemme toisen säilön WordPressin suorittamiseen. Osa kontin käyttöönottomäärittelystä on:

 laji: Käyttöönoton metatiedot: nimi: wordpress tags: sovellus: wordpress spec: strategia: tyyppi: Luo uudelleen 

Strategiatyyppi "Luo uudelleen" tarkoittaa, että jos jokin sovelluksen sisältävä koodi muuttuu, käynnissä olevat instanssit poistetaan ja luodaan uudelleen. Muita vaihtoehtoja ovat mahdollisuus kiertää uusia ilmentymiä ja poistaa olemassa olevat ilmentymät yksitellen, jolloin palvelu voi jatkua käynnissä päivityksen asennuksen aikana. Lopuksi julistamme itse WordPress-palvelun, joka käsittää PHP-koodin ja Apache. Osa tämän ilmoittavasta YAML-tiedostosta on:

 metatiedot: nimi: wordpress tags: sovellus: wordpress spec: portit: - portti: 80 valitsin: sovellus: wordpress-taso: käyttöliittymän tyyppi: LoadBalancer 

Huomaa viimeinen rivi ja määritä palvelutyyppi LoadBalanceriksi. Se kehottaa Kubernetesia asettamaan palvelun saataville Kubernetesin ulkopuolelle. Ilman tätä linjaa tämä olisi vain sisäinen ”vain Kubernetes” -palvelu. Ja siinä se on. Kubernetes käyttää nyt näitä YAML-tiedostoja ilmoituksena siitä, mitä vaaditaan, ja määrittää podit, yhteydet, tallennustilan ja niin edelleen tarpeen mukaan, jotta klusteri saadaan haluttuun tilaan.

Kojelautanäkymän avulla saat yhdellä silmäyksellä yhteenvedon Kubernetesista toiminnassa

Tämä on välttämättä ollut vain korkean tason yleiskatsaus Kubernetesista, ja monet järjestelmän yksityiskohdat ja ominaisuudet on jätetty pois. Olemme hämmentäneet automaattista skaalausta (sekä podit että klusterin muodostavat solmut), cron-töitä (konttien aloittaminen aikataulun mukaan), Ingress-palvelua (HTTP-kuormituksen tasapainotus, uudelleenkirjoittaminen ja SSL-purkaminen), RBAC: tä (roolipohjaiset käyttöoikeudet) , verkkokäytännöt (palomuuri) ja paljon muuta. Kubernetes on erittäin joustava ja erittäin tehokas: minkä tahansa uuden IT-infrastruktuurin on oltava vakava kilpailija.

Resurssit

Jos et tunne Dockeria, aloita tästä: https://docs.docker.com/get-started.

Sovelluksen käyttöönotosta ja skaalaamisesta on vuorovaikutteinen opetusohjelma täällä: https://kubernetes.io/docs/tutorials/kubernetes-basics.

Ja klusterin luominen on osoitteessa https://kubernetes.io/docs/setup/scratch.

Voit pelata ilmaisella Kubernetes-klusterilla osoitteessa https://tryk8s.com.

Lopuksi voit hemmotella pitkää teknistä paperia, jossa on erinomainen yleiskatsaus Googlen Borgin käytöstä ja kuinka se vaikutti Kubernetesin suunnitteluun täällä: https://storage.googleapis.com/pub-tools-public-publication-data/ pdf / 43438.pdf.

Lue lisää Tiger Computingista.

  • Vuoden 2022-2023 paras pilvitallennustila verkossa: ilmaiset, maksetut ja liiketoimintavaihtoehdot
Hanki lisää Linuxia!

Nautitko lukemastasi? Haluatko lisää Linuxia ja avointa lähdekoodia? Voimme toimittaa, kirjaimellisesti! Tilaa Linux-muoto jo tänään edulliseen hintaan. Voit saada tulostusnumeroita, digitaalisia painoksia tai miksi molempia? Toimitamme kotiovellesi maailmanlaajuisesti yksinkertaisella vuosimaksulla. Tee siis elämästäsi parempi ja helpompaa, tilaa nyt!

Mielenkiintoisia artikkeleita...