Kubernetes

Allikas: Vikipeedia
Jump to navigation Jump to search
Kubernetes
Kubernetes (container engine).png

Kubernetes (tavaliselt stiliseeritud nagu K8s) on avaliku lähtekoodiga konteinerite haldussüsteem automatiseerimiseks kasutuselevõttu, skaleeruvust ja konteineripõhiste rakenduste haldust. See oli algselt loodud Google ' i poolt ja nüüd haldab seda Cloud Native Computing Foundation. Selle eesmärk on pakkuda platvormi automatiseerimaks kasutuselevõttu, skaleeruvust ja toiminguid konteineritega üle klastrite.[1] See toetab mitmeid konteinerite abiriistu, nende hulgas ka Dockerit.

Ajalugu[muuda | muuda lähteteksti]

Google'i Container Engine loeng Google Cloud kohtumisel

Kubernetes (κυβερνήτης, kreeka keeles "kuberner", "tüürimees" või "kapten") asutatiJoe Beda, Brendan Burns ja Craig McLuckie[2] poolt, kellele lisanudsid kiiresti Google'i inserid, sealhulgas Brian Grant ja Tim Hockin. Esimest korda teatas Google väljatulekust 2014. aasta keskel.[3] Selle väljatöötamist ja disaini on tugevalt mõjutatud Google'i Borg 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].

Disain[muuda | muuda lähteteksti]

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 laienduv erinevate töökoormustega.

Podid[muuda | muuda lähteteksti]

Põhiline üksus Kuberneteses on pod. See lisab kõrgeme taseme abstraktsiooni grupeerides 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 kontrollsüsteemil pode hallata.

Labelid ja selectorid[muuda | muuda lähteteksti]

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

Kontrollerid[muuda | muuda lähteteksti]

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.

Teenused[muuda | muuda lähteteksti]

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äljaspoolt, et teha avalikuks näiteks rakenduse front-end.[12]

Arhitektuur[muuda | muuda lähteteksti]

Kubernetese arhitektuuri skeem

Kubernetese kontrollpaneel (master)[muuda | muuda lähteteksti]

Kubernetese Master on peamine klastrit kontrolliv üksus, mis haldab klastrite töökoormust ja juhib suhtlust üle kogu süsteemi. Kubernetese kontrollpaneel 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 kontrollpaneeli erinevad komponendid on järgmised:

etcd[muuda | muuda lähteteksti]

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[muuda | muuda lähteteksti]

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[muuda | muuda lähteteksti]

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[muuda | muuda lähteteksti]

Kontrollerite haldaja on protsess mis jooksutab Kubernetese tuum-kontrolloreid, milleks on näiteks DaemonSet kontroller ja Replikatsiooni kontroller.

Viited[muuda | muuda lähteteksti]

  1. "What is Kubernetes?". Kubernetes. Vaadatud 31.03.2017. 
  2. "Google Made Its Secret Blueprint Public to Boost Its Cloud" (en-US keeles). Originaali arhiivikoopia seisuga 1.07.2016. Vaadatud 27.06.2016. 
  3. "Google Open Sources Its Secret Weapon in Cloud Computing". Wired. Originaali arhiivikoopia seisuga 10.09.2015. Vaadatud 24.09.2015. 
  4. Abhishek Verma; Luis Pedrosa; Madhukar R. Korupolu; David Oppenheimer; Eric Tune; John Wilkes (April 21–24, 2015). "Large-scale cluster management at Google with Borg". Proceedings of the European Conference on Computer Systems (EuroSys). Originaali arhiivikoopia seisuga 27.07.2017.  Kontrolli kuupäeva väärtust kohas: |date= (juhend)
  5. "Borg, Omega, and Kubernetes - ACM Queue". queue.acm.org. Originaali arhiivikoopia seisuga 9.07.2016. Vaadatud 27.06.2016. 
  6. "As Kubernetes Hits 1.0, Google Donates Technology To Newly Formed Cloud Native Computing Foundation". TechCrunch. Originaali arhiivikoopia seisuga 23.09.2015. Vaadatud 24.09.2015. 
  7. "Cloud Native Computing Foundation". Originaali arhiivikoopia seisuga 3.07.2017. 
  8. Langemak, Jon (11. veebruar 2015). "Kubernetes 101 – Networking". Das Blinken Lichten. Originaali arhiivikoopia seisuga 25.10.2015. Vaadatud 2.11.2015. 
  9. Surana, Ramit (16. september 2015). "Containerizing Docker on Kubernetes". LinkedIn. Vaadatud 2.11.2015. 
  10. "Intro: Docker and Kubernetes training - Day 2". Red Hat. 20. oktoober 2015. Originaali arhiivikoopia seisuga 29.10.2015. Vaadatud 2.11.2015. 
  11. "Overview of a Replication Controller". Documentation. CoreOS. Originaali arhiivikoopia seisuga 22.09.2015. Vaadatud 2.11.2015. 
  12. Langemak, Jon (15. veebruar 2015). "Kubernetes 101 – External Access Into The Cluster". Das Blinken Lichten. Originaali arhiivikoopia seisuga 26.10.2015. Vaadatud 2.11.2015. 
  13. Marhubi, Kamal (26. september 2015). "Kubernetes from the ground up: API server". kamalmarhubi.com. Originaali arhiivikoopia seisuga 29.10.2015. Vaadatud 2.11.2015. 
  14. Ellingwood, Justin (2. mai 2018). "An Introduction to Kubernetes" (html). DigitalOcean (inglise keeles). Originaali arhiivikoopia seisuga 5.07.2018. Vaadatud 20.07.2018. "One of the most important master services is an API server. This is the main management point of the entire cluster as it allows a user to configure Kubernetes' workloads and organizational units. It is also responsible for making sure that the etcd store and the service details of deployed containers are in agreement. It acts as the bridge between various components to maintain cluster health and disseminate information and commands."