- Opi Dockerin ja Kubernetesin keskeiset käsitteet ja erot.
- Opi siirtämään Docker Compose -projektit Kubernetesiin Komposen avulla.
- Tutustu käytännön esimerkkeihin, edistyneisiin strategioihin ja integrointityökaluihin.
Konttiteknologia on sovellusten modernisoinnin kulmakivi. Sen avulla voit kapseloida sovellukset kaikkine riippuvuuksineen kannettavaan yksikköön, joka voi toimia tasaisesti missä tahansa ympäristössä, olipa se sitten paikallisesti, pilvessä tai hybridiympäristössä. Kontit eristävät sovellukset isäntäkäyttöjärjestelmästä ja muista konteista käyttämällä konttiytimelle ominaisia ominaisuuksia. Linux kuten nimiavaruudet ja cgroup-ryhmät. Jos haluat syvemmän käsityksen toistuvien konfiguraatioiden määrittelystä, voit myös tutustua artikkeliimme aiheesta Mikä on YAML ja miten sitä käytetään Kubernetesissa.
Sen etuja ovat: eristys, kannettavuus, keveys ja modulaarisuus. Nämä ominaisuudet sekä kyky käynnistää instanssit nopeasti ja ylläpitää ympäristön yhtenäisyyttä tekevät niistä ihanteellisia koko kehitys- ja tuotantoympäristön elinkaarelle. Suosittuja konttiteknologioita ovat Docker, Podman, Kubernetes (orkestroijana) ja CRI-O.
Mikä on Docker? Perusteet ja toiminnot
Satamatyöläinen Se on laajimmin käytetty konttialusta, joka on erikoistunut sovellusten ja niiden riippuvuuksien pakkaamiseen niin sanottuihin kontteihin. Dockerin avulla kehittäjät voivat varmistaa, että heidän sovelluksensa toimii samalla tavalla ympäristöstä riippumatta, mikä poistaa ongelmat kehityksen ja tuotannon välisen kuilun vuoksi.
Una Docker-kuva Se on mallipohja, joka sisältää käyttöjärjestelmän, lähdekoodin, kirjastot ja tarvittavat kokoonpanot. Nämä kuvat luodaan käyttämällä Dockerfiletai automaattisesti joissakin nykyaikaisissa kehyksissä, kuten Spring Bootissa, tiettyjen laajennusten avulla. Kun kuva suoritetaan, siitä tulee kontti, kevyt, erillinen instanssi, joka sisältää kaiken sovelluksen suorittamiseen tarvittavan.
Dockerin edutsiirrettävyys, käyttöönoton automatisointi, versionhallinta, nopeus tavaratila, modulaarisuus ja aktiivinen yhteisö, joka edistää ekosysteemin parantamista entisestään.
Kubernetes: Konttien orkestrointi skaalautuvasti
Kubernetes, lyhennettynä K8s, on johtava konttiorkestroija. Automatisoi konttisovellusten käyttöönoton, hallinnan, skaalauksen ja toiminnan. Sen loi Google ja on nyt CNCF:n ja globaalin yhteisön ylläpitämä avoimen lähdekoodin projekti.
Toisin kuin Docker, joka käsittelee konttihallinnan yksinään, Kubernetes hallitsee useita kontteja, jotka ovat levinneet useille solmuille, mikä tarjoaa korkean käytettävyyden, skaalautuvuuden, automaation, itsekorjauksen ja kuormituksen tasapainotuksen.
Sus tärkeimmät komponentit Niihin kuuluvat:
- Palokset: Pienin käyttöönottoyksikkö, joka voi sisältää yhden tai useamman verkon jakavan säilön ja varastointi.
- Palvelut: Ne tarjoavat vakaan ja abstraktin pääsyn podeihin, hallitsemalla liikennettä verkkokäytäntöjen ja kuormituksen tasapainotuksen avulla.
- Käyttöönotot: Ne hallitsevat podien elinkaarta varmistaen, että haluttu määrä replikoita säilytetään, ja helpottavat päivityksiä tai palautuksia.
- ConfigMaps ja salaisuudet: Ne tallentavat kokoonpanotietoja ja arkaluonteisia tietoja, mikä mahdollistaa dynaamisen injektoinnin podeihin.
- Nimiavaruudet: Ne mahdollistavat klusterin jakamisen loogisiin ympäristöihin resurssien järjestämiseksi ja projektien tai tiimien eristämiseksi.
Vertailu: Docker Compose vs. Kubernetes
Docker Compose y Kubernetes Ne ratkaisevat erilaisia tarpeita, vaikka ne liittyisivätkin toisiinsa. Docker Compose yksinkertaistaa usean säilön sovellusten määrittelyä ja hallintaa paikallisissa tai kehitysympäristöissä tiedostojen avulla docker-compose.yml. Sen avulla voit käynnistää useita palveluita, verkkoja ja taltioita yhdellä komennolla, mikä helpottaa testausta ja yhteistyötä.
Kubernetes Se menee paljon pidemmälle: se on suunniteltu laajamittaisiin käyttöönottoihin tuotannossa, useille solmuille hajautettujen konttien orkestrointiin, korkean käytettävyyden hallintaan, automaattiseen skaalaukseen, kaatuneiden podien uudelleenajoitukseen ja paljon muuta. Monet tiimit aloittavat Composella ja siirtyvät Kubernetesiin monimutkaisuuden tai skaalaustarpeen kasvaessa.
Siirtyminen Docker Composesta Kubernetesiin Komposen avulla
Tiimeille, joilla on jo Docker Composessa määriteltyjä sovelluksia, siirtyminen Kubernetesiin voi tuntua monimutkaiselta. Tässä on paikka Kirjoita on keskeisessä asemassa: se on toimintalinjan työkalu komennot suunniteltu muuntamaan tiedostoja automaattisesti docker-compose.yml Kubernetes-manifesteissa (YAML), kuten käyttöönotot y palvelut, mikä nopeuttaa siirtymistä ja vähentää manuaalisia virheitä.
Komposen käyttö on yksinkertaista ja koostuu neljästä perusvaiheesta:
- Asennus: Lataa binääritiedosto virallisesta arkistosta ja sijoita se polkuusi.
- Valmistellaan docker-compose.yml-tiedostoa: Tarkista ja päivitä tiedostosi vastaamaan haluamiasi asetuksia (palvelut, verkot, asemat jne.).
- muuntaminen: Juosta
kompose convert
Kubernetes-manifestien luomiseksi. - käyttöönotto: käyttötarkoitukset
kubectl apply -f
tuoda resursseja Kubernetes-klusteriin.
Tämän työkalun avulla voit hyödyntää aiempaa työtä Composessa ja nopeuttaa sitä kehittyneemmissä tuotantoympäristöissä.
Käytännön integrointi: Docker-kuvien rakentaminen ja käyttöönotto Kubernetesissa
Tyypillinen käyttöönottoprosessi sisältää seuraavat vaiheet:
- Kuvan rakentaminen: käyttötarkoitukset työkaluja, kuten Dockerfile rakentaaksesi kuvan koodista ja riippuvuuksista.
- Merkinnät ja työntäminen: Lataa kuva kohteeseen konttirekisteri kuten Docker Hub, Google Container Registry tai Azure Container Registry, jotta Kubernetes voi käyttää sitä.
- Kubernetes-klusterin luominen: Se voidaan tehdä paikallisesti (Minikubella tai Docker Desktopilla), pilvessä (GKE, EKS, AKS) tai paikallisesti.
- käyttöönotto: Määrittele manifestisi YAML (Käyttöönotto, Palvelu, ConfigMap, Salaisuus jne.) ja ota sovellus käyttöön käyttämällä
kubectl apply -f
. - Palvelun esittely: Luo Palvelu (ClusterIP, NodePort tai LoadBalancer), jotta podit ovat käytettävissä joko klusterin sisältä tai ulkopuolelta.
- Seuranta ja testaus: Vahvista käyttöönotto käyttämällä paljastunutta päätepistettä ja työkaluja, kuten
kubectl get pods
tarkistaaksesi käyttöönoton tilan.
Edistynyt esimerkki: Spring Boot -sovellusintegraatio
Yksi pyydetyimmistä integraatioista on Java-sovellusten ja Spring Bootin integraatio. On olemassa työkaluja, kuten Buildpacks-paketti ja Maven-laajennuksia, joiden avulla voit luoda Docker-kuvia automaattisesti ilman, että sinun tarvitsee kirjoittaa Dockerfile. Yksinkertaisesti juokseminen ./mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=miapp:latest
Kuva hankitaan valmiiksi tuotantoon parhaiden käytäntöjen mukaisesti ja yhteensopivuus varmistetaan.
Seuraava askel on integrointi ConfigMaps ja salaisuudet hallita klusterin kokoonpanoa ja helpottaa integrointia Docker Compose kehitysympäristöissä.
Kubernetes-manifestit: käyttöönotto, palvelu, konfiguraatiokartta, salaisuus, nimiavaruus
Kubernetes hallitsee resursseja tiedostojen avulla selvä muodossa YAML (tai JSON). Jokainen resurssi täyttää tietyn toiminnon, ja on tärkeää tietää sen rakenne ja hyödyllisyys:
- Asennus: Hallitsee podin elinkaarta ja ylläpitää haluttua replikoiden määrää samalla mahdollistaen nollakäyttöiset päivitykset.
- Palvelun: Sallii podien käytön, löytämisen ja liikenteen tasapainottamisen.
- Määrityskartta: Tallentaa ei-arkaluonteisia kokoonpanotietoja, jotka voidaan injektoida ympäristömuuttujina tai liittää tiedostoina.
- Salaisuus: Tallentaa arkaluonteisia tietoja, kuten salasanoja tai varmenteita, base64-koodattuna.
- nimiavaruus Segmentoi ja organisoi klusterin resursseja paremman monitiimi- tai moniprojektihallinnan saavuttamiseksi.
Edistyneessä integraatiossa käyttöoikeussäännöt määritellään käyttämällä Rooli y Roolien sidontavarmistaen, että vain valtuutetut käyttäjät tai palvelut voivat muokata tai lukea tiettyjä nimiavaruuksien resursseja.
Kuntotarkastukset ja seuranta jousitoimilaitteella
Todellisissa ympäristöissä seuranta se on välttämätöntä. Esimerkiksi Spring Boot Actuator paljastaa HTTP-päätepisteet (/actuator/health
, /actuator/ready
), joita Kubernetes voi käyttää sen määrittämiseen, ovatko podit valmiita vastaanottamaan liikennettä (valmius Anturi) tai jos tapahtuu vakava vika, joka vaatii säilön uudelleenkäynnistyksen (elävyyden koetin).
Näiden luotainten määrittäminen käyttöönottomanifesteissä on avainasemassa, jotta voidaan saavuttaa joustavia, itseään hallitsevia sovelluksia, jotka voivat toipua virheistä ilman manuaalisia toimia.
Docker-integraatiostrategiat Kubernetesiin
Edistyneissä tilanteissa on yleistä kohdata tilanteita, joissa sinun on suoritettava Docker podin sisälläesimerkiksi CI/CD-putkille, kuten Jenkinsille. Päästrategioita on kolme:
- Docker Dockerissa (DinD): Asenna Docker Engine samaan säiliöön. Se on toimiva, mutta siihen liittyy tietoturvariskejä ja tallennustilan yhteensopivuusongelmia, eikä sitä suositella tuotantokäyttöön.
- Docker Dockerista ulos (DooD): Sovellus käyttää isäntäsolmun Docker-daemonia liittämällä sen soketin. Se parantaa suorituskykyä ja välttää daemonien päällekkäisyyksiä, mutta aiheuttaa silti tietoturva- ja resurssienhallintariskejä, joihin Kubernetes ei voi vaikuttaa.
- Docker-sivuvaunu: Ota podin sisälle käyttöön Docker Enginenä toimiva lisäkontti, joka paljastaa sokettinsa paikallisverkon kautta ja lisää valtuutuslaajennuksia riskien lieventämiseksi. Vaikka se vähentää joitakin ongelmia, se vaatii silti erityisiä etuoikeuksia ja huolenpitoa.
suositus: Käytä aina kun mahdollista työkaluja demoniton rakentaa mielikuvia välttäen aiempien ratkaisujen ongelmia ja riskejä.
Dockerin ja Kubernetesin asentaminen: Windows ja Linux
En Windows, helpoin tapa on käyttää Telakkatyöpöytä, jonka avulla voit ottaa Kubernetesin käyttöön paikallisena kehitysympäristönä. Prosessi on:
- Lataa ja asenna Docker Desktop viralliselta verkkosivustolta.
- Ota Kubernetes-vaihtoehto käyttöön määrityksissä.
- Käyttää kubectl (toimitetaan integroituna) resurssien hallintaan.
Tuotantoympäristöissä tai kun tarvitaan enemmän hallintaa, voit asentaa Minikube tai suoraan sisään virtuaalikoneet tai paljas metalli.
Linuxissa (esim. Ubuntu 22.04):
- Päivitä järjestelmä käyttämällä
sudo apt-get update && sudo apt-get upgrade
. - Asenna Docker käyttämällä
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
. - Asenna Kubernetes lisäämällä virallinen arkisto ja suorittamalla se
sudo apt-get install -y kubeadm
. - Alusta klusteri komennolla
sudo kubeadm init --pod-network-cidr 10.244.0.0/16
. - konfiguroi
kubectl
kopioimalla asetustiedoston kohteeseen$HOME/.kube/config
ja käyttöoikeuksien säätäminen.
Intohimoinen kirjoittaja tavujen maailmasta ja tekniikasta yleensä. Rakastan jakaa tietämykseni kirjoittamalla, ja sen aion tehdä tässä blogissa, näyttää sinulle kaikki mielenkiintoisimmat asiat vempaimista, ohjelmistoista, laitteistoista, teknologisista trendeistä ja muusta. Tavoitteeni on auttaa sinua navigoimaan digitaalisessa maailmassa yksinkertaisella ja viihdyttävällä tavalla.