Kubernetesről nem tudni, hogy megközelíthető-e. A Kubernetes elsajátításához meg kell értenie, hogy absztrakciói hogyan illeszkednek egymáshoz. A Kubernetes tucatnyi erőforrástípussal rendelkezik, amelyeket felhasználhat az alkalmazásokban. Nézzük meg a leggyakrabban használt erőforrások szerepét.
Hüvelyek
Ha egy Kubernetes-kifejezést kell megtanulni, akkor ez a „Pod”. Hüvelyek a Kubernetes által használt alapvető számítási egység. A futó konténereidet fogadják. Ezért gyakori, hogy a hüvelyeket egy Docker-tároló példányához hasonlítják.
Ez a hasonlóság nem pontos, mivel egyetlen Kubernetes podban több tároló is futhat. A hüvelyeket jobban tekinthetjük a megosztott végrehajtási kontextusú tárolók „csoportjának”. A Pod környezete elszigetelt; a benne lévő egyes konténerkörnyezetek tovább vannak elszigetelve.
A csomagban lévő konténerek mindig ugyanarra a Kubernetes csomópontra vannak ütemezve. Ugyanazon a fizikai gépen fognak futni, és megoszthatják a tárhelyet és a hálózati erőforrásokat.
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: my-image:latest
A fenti jegyzék manuálisan létrehozna egyetlen Pod-ot. A Pod egy konténert futtatna a my-image:latest
kép.
Általában nem közvetlenül a Kubernetesben kezeli a Podokat. A hüvelyeket más erőforrások, például egy Telepítés (lásd alább) hozzáadásának eredményeként hozzák létre. A hüvelyeit mulandó egységként kell kezelnie. A Kubernetes rendelkezik a Pod irányításával, és átütemezheti egy másik csomópontra, ha a fürt erőforrásai korlátozódnak.
Replika szettek
Replika szettek (általában így írják: ReplicaSets
, szóköz nélkül) egy másik absztrakciós réteg a Pods tetején. A ReplicaSets garantálja, hogy adott időpontban meghatározott számú azonos Pod fut majd.
A ReplicaSets használatakor minimális számú Pod-ot kell végrehajtania alkalmazásához. Megadja az egyidejűleg futtatandó podok számát. Ezután a Kubernetes elég Pod-t ütemez, hogy megfeleljen az Ön által meghatározott minimális rendelkezésre állásnak. Ne feledje, hogy az egyes Pod több futó tárolóból állhat, az alkalmazás konfigurációjától függően.
Amikor egy Pod-ot egy ReplicaSet készít, a Kubernetes frissíti a Pod-okat metadata.ownerReferences
mező a ReplicaSet azonosságának megadásához. Ezután a ReplicaSet létrehozhatja az általa ellenőrzött Podokat, így tudja, hogy a minimális rendelkezésre állási cél teljesült-e.
A ReplicaSets rendelkezik a replicas
mező, amely meghatározza a futtatni kívánt hüvelyek számát. Változtassa meg ezt az értéket, és alkalmazza a frissített ReplicaSet jegyzéket a fürtjére, hogy a Kubernetes újrarendezhesse a Podjait az új replikaszámnak megfelelően.
Ez a részlet kiemeli a ReplicaSets fontos szempontját: a Kubernetes csak garantálja a futó Podok számát végül is egyezik a megadott replikaszámmal. Ha megváltoztatja a replikaszámot, lesz egy olyan időszak, amikor több vagy kevesebb Pod fut, mint amennyit a jegyzéke jelez. A ReplicaSet létrehozza vagy törli a hüvelyeket, amíg a kívánt szám meg nem működik.
apiVersion: apps/v1 kind: ReplicaSet metadata: name: my-replicaset labels: my-label: my-value spec: replicas: 3 selector: matchLabels: my-label: my-value template: metadata: labels: my-label: my-value spec: containers: - name: app-container image: my-image:latest
A fenti jegyzék három másolatát futtatná a my-image:latest
tároló kép egy ReplicaSet használatával. Megváltoztathatja a replikák számát a jegyzékben szereplő érték frissítésével és újbóli alkalmazásával (kubectl apply -f my-manifest.yml
).
Telepítések
Míg a ReplicaSets megkönnyíti a Pods használatát, azokat is ritkán használják közvetlenül. Telepítések egy absztrakció a ReplicaSets tetején. Telepítést általában akkor hoz létre, amikor új munkaterhelést ad hozzá a fürthöz.
A telepítési erőforrások lehetővé teszik a Pods és a ReplicaSets deklaratív frissítését. Lehetővé teszik a ReplicaSets gördülő frissítéseinek elvégzését, ahol a Pod-okat minden szolgáltatás leállás nélkül ütemezik. A Pods és a ReplicaSets külön-külön cserélődik, lehetővé téve a régi és az új verziók rövid együttélését.
A telepítések szükségessége Kubernetes replikákra vonatkozó történelmi megközelítéséből adódott. A ReplicaSets kifejlődött Replikációs vezérlők. A replikációs vezérlők a ReplicaSetshez hasonló funkciókat kínáltak, de beépített méretezési támogatással rendelkeznek.
A replikációvezérlők azonban nem ajánlottak deklaratív méretezést. Manuálisan kellett használnia kubectl rolling-update
hogy a replikákat leállás nélkül méretezzék. Ez ellentmondott más Kubernetes-erőforrások deklaratív, manifeszt alapú megközelítésének.
A ReplicaSets-hez képest a Telepítések elsődleges előnye, hogy támogatják a folyamatos frissítéseket. A replikák számának megváltoztatása a ReplicaSet készletben nem garantálja, hogy a Pod-k száma a megadott állapotban maradjon a bevezetés során. A központi telepítéssel biztos lehet abban, hogy az alkalmazás folytatja a forgalom kezelését, még akkor is, ha a telepítés még nem fejeződött be.
Ma Kubernetes azt tanácsolja, hogy a Deployments használatával jelezze a munkaterhelést. Telepítései automatikusan lefutnak és méretezik a ReplicaSets készletet; A ReplicaSets viszont kezeli a hüvelyeket. A telepítés gördülő frissítését a replicas
mező a manifesztumában. Ezután a Kubernetes biztosítja, hogy az alkalmazás elérhető maradjon a változás során, lehetővé téve az új és a régi Podok ideiglenes együttélését.
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: my-label: my-value spec: replicas: 3 selector: matchLabels: my-label: my-value template: metadata: labels: my-label: my-value spec: containers: - name: app-container image: my-image:latest
A fenti jegyzék létrehoz egy telepítést, amely három replikából áll, amelyek mindegyike fut a my-image:latest
konténer kép. A replicas
érték az alapul szolgáló ReplicaSets és Pods frissülő frissítését indítaná el.
Más típusú források
A három típusú erőforrás, amelyet megvizsgáltunk, a leggyakoribb objektumok, amelyekkel találkozhat, amikor a Kubernetesszel dolgozik. Ezeket használják az alkalmazás munkaterhelésének konfigurálására és a tárolók kezelésére.
Más típusú erőforrást kell használnia, mivel többet dolgozik a Kubernetes szolgáltatással. ConfigMaps és Titkok lehetővé teszi a konfiguráció beillesztését a Pod-ba, lehetővé téve számukra a külső értékek elérését. Kötetek és Állandó kötetek a Pods számára megosztott írható fájlrendszert biztosít, amely az adatok tárolására használható, a Pod kilépéskor elveszett alapértelmezett elmúlékony tárhely helyett.
További erőforráskészlet segít kezelni a munkaterhelés hálózati beállításait. Szolgáltatások lehetővé teszi, hogy a Pods készletét egyetlen hálózati szolgáltatásként, egy IP-címmel tegye ki. Behatolások lehetővé teszi, hogy külsőleg tegye ki a szolgáltatásokat. Olyan attribútumok alapján irányítják a forgalmat a fürtjébe egy célszolgáltatásba, mint a gazdagépnév, a port és az URL elérési útja.
Végül vannak metaforrások, amelyek leírják a fürtöt. A névtereket az egyes munkaterhelések elkülönítésére használják, megakadályozva a névütközéseket. Általában minden önálló munkaterheléshez új névteret kell létrehoznia. A csomópontok egyfajta erőforrás, amely a Pod-okat futtató fizikai gépeket reprezentálja. Minden csomópont általában több Pod-t fog fogadni. A Kubernetes kidolgozza a munkaterhelések ütemezését az egyes csomópontok és a kényszeríti.
Futtatással megtekintheti a fürt teljes erőforráslistáját kubectl api-resources
. A beépített erőforrások mellett a munkaterhelések hozzáadhatják a saját egyéni erőforrás-definícióikat (CRD), amelyek lehetővé teszik új típusú objektumok létrehozását. A Kubernetes automatikusan biztosítja az API-végpontokat az egyéni erőforrás-meghatározásokhoz.
Következtetés
A Kubernetes tanulása azt jelenti, hogy megismerkedünk az új absztrakciókkal és terminológiákkal. Bár ez széles API felületet eredményez, minden Kubernetes objektumnak viszonylag szűk a célja.
Gyakran képes lesz betartani a magas szintű absztrakciókat, például a Telepítéseket. Nem kell az alapvető erőforrástípusokat, például a Podokat mikrokezelnie, kivéve, ha összetett követelményei vannak, amelyeket egyedül a Telepítések és a ReplicaSets nem tud megoldani.