Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

Kontit ja niiden orkestrointi

Kontit

Kontit ovat käyttöjärjestelmän ytimen ominaisuuksiin perustuva teknologia, joka mahdollistaa eristettyjen ympäristöjen luomisen yhteistä ydintä käyttäen. Esimerkiksi konttiominaisuuksien avulla voidaan käyttää useita eristettyjä juuritiedostojärjestelmiä, verkkopinoja ja prosessipuita, jotka kaikki käyttävät samaa ydintä. Nämä eristetyt ympäristöt muistuttavat toiminnallisuudeltaan kevyitä virtuaalikoneita, mutta virtuaalikoneiden ja konttien välillä on joitakin keskeisiä eroja. Suurin ero on se, että virtuaalikoneilla on aina omat ytimensä, kun taas kontit jakavat isäntäjärjestelmän ytimen.

Virtuaalikoneiden ja konttien välinen ero Virtuaalikoneiden ja konttien välinen ero.

Vaikka monissa käyttöjärjestelmissä on konttitoiminnallisuus, tässä dokumentaatiossa tarkastellaan tarkemmin Linux-käyttöjärjestelmän kontteja. Linux on suosituin käyttöjärjestelmä konttien ajamiseen, ja se on myös Rahti-konttipilvessä käytettävä käyttöjärjestelmä.

Konttitoiminnallisuuden käyttämiseen tarvitaan runtime. Tällä hetkellä Linuxin suosituin runtime on Docker, mutta myös podman, cri-o ja monet muut ovat kasvattamassa merkitystään. Kaikki nämä runtime-ympäristöt noudattavat Open Container Initiative (OCI) -hankkeen ohjeistuksia. Runtime tarjoaa joukon työkaluja, jotka helpottavat konttien käyttöä verrattuna ytimen toiminnallisuuksien suoraan käyttämiseen. Keskeisiä ovat komentorivikäyttöliittymä sekä taustakirjastot konttien ja levykuvien ajamiseen, rakentamiseen ja hallintaan.

Docker on tehnyt konteista suosittuja helpottamalla niiden käyttöä. Sen sijaan, että pitäisi tutkia ytimen dokumentaatiota ja selvittää, miten ytimen konttiominaisuuksien eri rajapintoja käytetään, ja sen jälkeen vielä päättää, mitä ominaisuuksia halutaan käyttää ja miten, Docker tarjoaa yksinkertaisemman tavan käynnistää kontteja yhdellä komentorivikomennolla. Docker eristää käyttäjän näistä ytimen erityisominaisuuksista ja niiden käyttötavoista.

Esimerkkinä Dockerin käytöstä seuraavalla komennolla voit käynnistää kontin tietokoneellasi Dockerin asentamisen jälkeen:

docker run -it ubuntu

Tämä lataa ubuntu-levykuvan, jos sitä ei vielä ole tietokoneella, käynnistää siihen perustuvan kontin ja antaa käyttäjälle komentorivikäyttöliittymän kontin sisällä. Käyttäjän näkökulmasta kokemus muistuttaa virtuaalikoneen käynnistämistä: riippumatta siitä, mikä käyttöjärjestelmäjakelu tietokoneellasi on, kontin kanssa toimiminen tuntuu siltä kuin käyttäisit Ubuntu-asennusta.

Komennon suorittamisen jälkeen sinun pitäisi nähdä ladattu Ubuntu Docker -levykuva listaamalla levykuvat:

docker images

Voit tehdä myös monia muita asioita, kuten käynnistää kontteja taustalla, liittyä käynnissä olevaan konttiin vuorovaikutusta varten tai rakentaa omia Docker-levykuvia Dockerfilesta. Tässä annetut esimerkit on tarkoitettu antamaan yleiskuva siitä, miltä konttien käyttö näyttää käyttäjän näkökulmasta. Kattavampi Docker-dokumentaatio löytyy Dockerin virallisesta dokumentaatiosta.

Konttien orkestrointi

Jotta ymmärtäisimme, miksi konttien orkestrointialustat ovat tärkeitä, kuvataan, miten tyypillinen selainpohjainen sovellus, jota loppukäyttäjät käyttävät selaimella, rakennetaan.

Konttien orkestrointi

Sovellus koostuu käyttöliittymästä, joka on käyttäjille näkyvä osa sovellusta, sekä taustajärjestelmästä, joka hoitaa erilaisia tehtäviä taustalla, kuten käyttäjädata tallentamisen tietokantaan. Sovellus ajaa palvelinprosessia, johon asiakkaat ottavat yhteyden ollakseen vuorovaikutuksessa sovelluksen kanssa. Se käyttää myös taustalla tietokantaa, kuten PostgeSQL:ää tai MongoDB:tä, käyttäjädatan tallentamiseen.

Tämän sovelluksen suunnittelijoiden on suunniteltava se niin, että sovellus toimii luotettavasti, nopeasti ja turvallisesti:

  • Palvelinlaitteisto voi vikaantua, joten sovellus on replikoitava useille fyysisille palvelimille, jotta yksittäisen palvelimen vika ei tee koko sovelluksesta saavuttamatonta.
  • Suuri määrä käyttäjiä kuormittaa sovellusta. Sovellusta on voitava skaalata lisäämällä sovellusprosesseja, jotta voidaan varautua kasvavaan käyttäjäkuormaan.
  • Yhteyden sovellukseen on oltava turvallinen, jotta käyttäjät voivat syöttää tietonsa sovellukseen ilman pelkoa salakuuntelusta.
  • Käyttäjädata on tallennettava luotettavasti vikasietoiseen tallennusjärjestelmään.

Voisit luoda Linux-virtuaalikoneita, asentaa niihin Dockerin ja ajaa sovellusta suoraan niiden avulla, mutta kaikkien yllä olevien vaatimusten täyttäminen vaatisi paljon lisätyötä. Sinun pitäisi selvittää, miten hallitaan useita sovelluksen instansseja useilla palvelimilla, miten saapuva liikenne ohjataan tasaisesti kaikille sovellusinstansseille, miten käyttäjädata tallennetaan ja miten kapasiteettia lisätään nopeasti tarpeen mukaan.

Onneksi useimmilla sovelluksilla on samankaltaiset vaatimukset, joten hyvien sovellusten rakentamisen vaiheet ovat usein melko samanlaisia. Tässä kohtaa konttien orkestrointijärjestelmät tulevat kuvaan mukaan. Ne hoitavat monia yleisiä tehtäviä, joita tarvitaan toimintavarmojen verkkosovellusten ajamiseen, kuten sovellusinstanssien jakamisen useille palvelimille, liikenteen ohjaamisen sovellusinstansseille ja pysyvän tallennuksen tarjoamisen tietokannoille.

Tällä hetkellä suosituin ohjelmisto konttien orkestrointiin on Kubernetes. Se perustuu Googlessa yli vuosikymmen sitten kehitettyihin aiempiin järjestelmiin. Rahti-järjestelmä perustuu Red Hatin tekemään Kubernetes-jakeluun nimeltä OpenShift.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta