See artikkel vajab toimetamist. (Juuni 2019) |
See artikkel ootab keeletoimetamist. (Juuni 2019) |
Kubernetes | |
---|---|
Arendaja | Cloud Native Computing Foundation |
Viimane väljalase | 1.30.2 / 12.06.2024 |
Kirjutatud keeles | Go |
Litsents | Apache License 2.0 |
Kubernetes (tavaliselt stiliseeritud kujul K8s) on avaliku lähtekoodiga konteinerite haldussüsteem, millega automatiseeritakse kasutuselevõttu, skaleeruvust ja konteineripõhiste rakenduste haldust.
Selle lõi Google, kuid nüüd haldab seda Cloud Native Computing Foundation.
Kubernetese eesmärk on pakkuda platvormi, millega automatiseerida kasutuselevõttu, skaleeruvust ja toiminguid konteineritega üle klastrite.[1] See toetab mitmeid konteinerite abiriistu, nende hulgas ka Dockerit.
Kubernetes (κυβερνήτης, kreeka keeles "kuberner", "tüürimees" või "kapten") asutati Joe Beda, Brendan Burns ja Craig McLuckie[2] poolt, kellele lisandusid kiiresti Google'i insenerid, sealhulgas Brian Grant ja Tim Hockin. Google teatas Kubernetese väljatulekust 2014. aasta keskel.[3] Selle väljatöötamist ja disaini on tugevalt mõjutatud Google'i Borgi süsteem,[4][5] ja paljud selle projekti kallal töötajad töötasid enne projektis Borg.
Kubernetes v1.0 anti välja 21. juuli 2015.[6] Koos Kubernetes v1.0 väljatulekuga sai Google'i partneriks Linux Foundation, et moodustada Cloud Native Computing Foundation (CNCF)[7].
Kubernetes defineeris ehitusplokid ("primitiivid"), mis üheskoos tagavad mehhanismi, mis võtab kasutusele, tagab rakenduse jätkusuutlikuse ja skaleeruvuse. Kubernetese komponendid on lõdvalt seotud ja see on kergelt skaleeritav erinevate töökoormustega.
Põhiline üksus Kuberneteses on pod. See lisab kõrgema taseme abstraktsiooni, rõhmitades konteineritel põhinevate rakenduste komponente. Pod koosneb ühest või mitmest konteinerist, mis toimivad peremees-masinas koos ja jagavad ressursse. Igal podil on unikaalne IP-aadress klastris, mis võimaldab rakendusel kasutada konflikti vabalt porte.[8] Pode saab juhtida käsitsi läbi Kubernetese API või lasta Kubernetese juhtsüsteemil pode hallata.
Labelid ja selectorid on peamine rühmitamismehhanism Kuberneteses. See määrab milliseid toiminguid tuleks millistel komponentidel jooksutada.[9]
Näiteks leidub süsteem, kus rakenduse podidel on labelid nimega tier
(väärtustega front-end
, back-end
) ja nimega release_track
(väärtustega canary
, production
). Sellise süsteemi toimingud, mida tehakse back-end
ja canary
instantsidel saavad kasutada label selectoreid nagu:[10]
tier=back-end AND release_track=canary
Kontroller üritab tagada, et klastrid töötavad nii nagu nad peavad.[11] Seda saavutatakse hallates podide gruppe. Üks selline kontroller on näiteks replikatsiooni kontroller, mis tagab vajalikkude podide replikeerimise. See haldab omakorda veel asendavate podide loomist, kui olemasolev maha kukub. Milliseid pode kontroller haldab on määratud podide label selectoritest, mis on osa kontrolleri definitsioonist.
Kubernetese teenus on podide kogum, mis töötavad koos. Podide kogumi, mis moodustavad rakenduse määravad ära label selectorid. Kubernetes pakub ka võrgukoormuse jaotajat, mis toimib round-robin algortimil ja jagab ühtlaselt koormuse sobivate labelitega podide vahel. Vaikimisi on teenused avalikud ainult klastrite siseselt (näiteks kui front-end tahab back-endiga suhelda), kuid on ka võimalus teha teenus kättesaadavaks ka väljastpoolt, et teha avalikuks näiteks rakenduse front-end.[12]
Kubernetese Master on peamine klastrit kontrolliv üksus, mis haldab klastrite töökoormust ja juhib suhtlust üle kogu süsteemi. Kubernetese juhtpaneel sisaldab erinevaid komponente, millel on igal ühel oma protsess ja need võivad joosta nii ühel master instantsil, kui ka mitmel, mis pakub tuge ka kõrge kättesaadavusega klastritele. Kubernetese juhtlpaneeli erinevad komponendid on järgmised:
etcd on püsiv, kergekaaluline, hajus, võti-väärtus andmehoidla välja töötatud CoreOS poolt, mis usaldusväärselt salvestab klastri seadistusandmed, mis esindavad klastri üldist seisundit igal antud ajahetkel.
API server on oluline komponent, mis pakub liidese Kubernetese API-le kasutades JSON formaati üle HTTP.[13] API server töötleb ja valideerib REST päringuid ja uuendab API objektide seisundit etcd-s.[14]
Planeerija on väljalülitatav komponent, mis valib ressursside põhjal millistel instantsidel pod peaks jooksma. Planeerija jälgib ressursside kasutust instantsidel, et tagada töökoormuse ühtlast jaotust. Sellel eesmärgil on planeerijal vaja teada ressursivajadusi ja ressursside kättesaadavust. Lühidalt on planeerija roll määrata ressursse vastavalt vajadusele.
Kontrollerite haldaja on protsess mis jooksutab Kubernetese tuumkontrolloreid, näiteks DaemonSet kontroller ja Replikatsiooni kontroller.