A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

A Kubernetes legjobb gyakorlatai. Kis konténerek létrehozása

Ahogy egyre több Kubernetes szolgáltatást kezdesz el létrehozni, a kezdetben egyszerű feladatok bonyolultabbá válnak. Például a fejlesztői csapatok nem tudják ugyanazzal a névvel létrehozni a szolgáltatásokat vagy a telepítéseket. Ha ezer podod van, az egyszerű felsorolás rengeteg időt vesz igénybe, nem is beszélve arról, hogy megfelelően kezeld őket. És ez csak a jéghegy csúcsa.

Nézzük meg, hogyan könnyíti meg a névsorral való kezelés a Kubernetes erőforrásait. Tehát mi az a névsor? A névsor virtuális klaszterként tekinthető a Kubernetes klaszteredben. Több elkülönített, egymástól független névsor is létezhet egy Kubernetes klaszteren belül. Valóban segíthetnek neked és csapatodnak a szervezésben, biztonságban és akár a rendszer teljesítményében is.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

A Kubernetes legtöbb disztribúciója alapértelmezés szerint egy "default" névsorral érkezik. Valójában három névsor létezik, amellyel a Kubernetes foglalkozik: default, kube-system és kube-public. Jelenleg a kube-public nem annyira gyakran használt.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

A kube névsor megérintése jó ötlet, különösen egy olyan menedzselt rendszerben, mint a Google Kubernetes Engine. Ez a "default" névsor használatára van beállítva, ahol a szolgáltatásaidat és alkalmazásaidat létrehozzák. Nincs benne semmi különös, kivéve, hogy a Kubernetes alapértelmezés szerint az ő használatára van beállítva, és nem tudod törölni. Ez nagyszerű a kezdéshez és alacsony teljesítményű rendszerekhez, de nem javaslom a default névsor használatát nagyobb prod rendszerekben. Utóbbi esetben egy fejlesztőcsapat könnyedén felülírhatja mások kódját, és ezzel megzavarhatja egy másik csapat munkáját anélkül, hogy ezt tudnák.

Ezért érdemes több névsor létrehozása és azok használata a szolgáltatásaid szegmentálására. A névsor egy parancs segítségével létrehozható. Ha egy "test" nevű névsorot szeretnél létrehozni, akkor használd a $ kubectl create namespace test parancsot, vagy egyszerűen hozz létre egy YAML fájlt, és használd úgy, mint bármely más Kubernetes erőforrást.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

A névtér megtekintéséhez használja a $ kubectl get namespace parancsot.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

A parancs végrehajtása után három beépített névteret és egy új "test" nevű névteret fog látni. Nézzünk meg egy egyszerű YAML-fájlt, amelyet a pod létrehozására szántak. Érdemes észrevenni, hogy nem tartalmaznak említést a névről.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Ha a kubectl-t használja ennek a fájlnak a futtatására, akkor létrehoz egy mypod modult az aktuális aktív névtérben. Ez az alapértelmezett névtér lesz, amíg meg nem változtatja. Két módja van annak, hogy megmondja a Kubernetesnek, melyik névtérben szeretné létrehozni az erőforrást. Az első mód a névtér zászlójának használata az erőforrás létrehozásakor.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

A második mód az, hogy a névtér megadásával a YAML-deklarációban történik.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Ha megadja a névteret a YAML-ben, az erőforrás mindig ebben a névtérben jön létre. Ha más névteret próbál meg használni a névtér zászlójával, a parancs hibaüzenettel fog végződni. Most, ha megpróbálja megkeresni a pod-ját, nem fogja tudni.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Ez azért van, mert minden parancs a jelenlegi aktív névterven kívül hajtódik végre. Ahhoz, hogy megtalálja a podját, használnia kell a névtér zászlaját, de ez hamar unalmassá válik, különösen, ha egy fejlesztőként dolgozik egy olyan csoportban, amely saját névteret használ, és nem szeretné ezt a zászlót minden egyes parancsnál használni. Nézzük meg, hogyan lehet ezt megoldani.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Alapértelmezés szerint az aktív névtér neve default. Ha nem határozza meg a névteret a YAML erőforrásban, akkor minden Kubernetes parancs ezt az aktív default névteret fogja használni. Sajnos a kubectl-lel való aktív névtér kezelése gyakran meghiúsulhat. Van azonban egy nagyon jó eszköz, a Kubens, amely sokkal egyszerűbbé teszi ezt a folyamatot. Amikor kiadja a kubens parancsot, látni fogja az összes névteret, megjelölve az aktív névteret.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Az aktív névtér teszt névtérre való váltásához egyszerűen futtassa a $ kubens test parancsot. Ha ezután újra beírja a $ kubens parancsot, láthatja, hogy most már egy új aktív névtér, a test van kiemelve.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Ez azt jelenti, hogy nincs szüksége névtér zászlóra, hogy láthassa a pod-ot a test névtérben.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Így a neveket elválasztják egymástól, de nem izolálják. Az egyik névtér szolgáltatása könnyen kommunikálhat egy másik névtér szolgáltatásával, ami gyakran nagyon hasznos. A különböző névterek közötti kommunikáció lehetősége azt jelenti, hogy a fejlesztői szolgáltatás kapcsolatba léphet egy másik fejlesztőcsapat szolgáltatásával egy másik névtérben.

Általában, amikor az alkalmazása hozzá akar férni a Kubernetes szolgáltatáshoz, a beépített DNS felfedező szolgáltatást használja, és egyszerűen megadja az alkalmazásának a szolgáltatás nevét. De ezzel lehetőséget ad arra, hogy több névtérben is létrehozhasson szolgáltatást ugyanazzal a névvel, ami nem elfogadható.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Szerencsére ezt könnyen megkerülheti a DNS-cím kibővített formájának használatával. A Kubernetes szolgáltatások a végpontjaikat egy közös DNS-minta alapján állítják ki. Ez körülbelül így néz ki:

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Általában csak a szolgáltatás neve szükséges, és a DNS automatikusan meghatározza a teljes címet.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Ha azonban egy másik névtérben lévő szolgáltatáshoz szeretne hozzáférni, egyszerűen használja a szolgáltatás nevét plusz a névtér nevét:

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Például, ha csatlakozni szeretne a teszt névtérbeli adatbázis szolgáltatáshoz, használhatja a database.test címet.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Ha viszont a prod névtérben lévő adatbázis szolgáltatáshoz szeretne csatlakozni, akkor a database.prod címet használja.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Ha valóban izolálni és korlátozni kívánja a névtérhez való hozzáférést, a Kubernetes lehetővé teszi ezt a Kubernetes Hálózati Politika segítségével. Erről a következő részben mesélek.

Gyakran felteszik nekem a kérdést, hogy hány névteret kell létrehozni és milyen célokra? Mi is az a kezelhető adatfragmentum?

Ha túl sok névteret hozol létre, az csak útban lesz neked. Ha viszont túl kevés lesz, elveszíted mindazokat az előnyöket, amelyeket ez a megoldás kínál. Úgy gondolom, hogy négy fő szakasz létezik, amelyeken minden cég keresztülmegy, amikor megalkotja a szervezeti felépítését. A projekted vagy céged fejlődési szakaszától függően alkalmazhatsz megfelelő névtér-képzési stratégiát.

Képzeld el, hogy egy kis csapat része vagy, amely 5-10 mikroszolgáltatáson dolgozik, és könnyedén összegyűjtheted az összes fejlesztőt egy szobában. Ebben a helyzetben értelme van annak, hogy az összes prod-szolgáltatást a default névtérben futtassuk. Természetesen, ha nagyobb mozgástérre van szükséged, használhatsz 2 névteret – külön a prod és dev számára. Valószínűleg a fejlesztésedet a helyi számítógépeden teszteled valamilyen Minikube-szerű eszköz segítségével.

Tegyük fel, hogy a körülmények megváltoztak, és most egy gyorsan növekvő csapatod van, amely egyszerre több mint 10 mikroszolgáltatáson dolgozik. Elérkezik az a pillanat, amikor több klasztert vagy névteret kell használnod, külön a prod és dev számára. A csapatot több alcsoportba lehet osztani, így mindegyiknek saját mikroszolgáltatásai lesznek, és minden egyes csapat kiválaszthatja a saját névterét, hogy megkönnyítse a fejlesztési és szoftverkiadási folyamatok kezelését.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

Ahogy a csapat minden tagja egyre jobban megismeri a rendszer működését, egyre nehezebb és nehezebb koordinálni minden változást a többi fejlesztővel. A teljes technológiai stack helyi gépen való futtatásának próbálkozása napról napra egyre bonyolultabbá válik.

Nagyvállalatoknál a fejlesztők általában nem tudják, ki dolgozik pontosan min. A csapatok szolgáltatási szerződésekkel kommunikálnak, vagy Service mesh technológiát használnak, amely egy absztrakciós szintet ad a hálózat fölé, mint az Istio konfigurációs eszköz. Az egész stack helyi futtatásának megkísérlése egyszerűen lehetetlen. Határozottan javaslom, hogy a Kubernetesben használjon olyan folyamatos szállítási (CD) platformot, mint a Spinnaker. Itt az a pillanat következik, amikor minden csapatnak határozottan szüksége van saját névtérre. Minden csapat akár több névteret is választhat a dev és a prod környezethez.

Végül vannak nagyvállalati cégek, ahol az egyik fejlesztőcsapat még csak nem is tud a másik csoport létezéséről. Az ilyen cégek akár külső fejlesztőket is felvehetnek, akik jól dokumentált API-kon keresztül lépnek kapcsolatba. Minden ilyen csapatban több csapat és több mikroszolgáltatás található. Ilyen esetben mindezek az eszközök szükségesek, amelyeket korábban említettem.

A Kubernetes legjobb gyakorlatai. A Kubernetes szervezése névsorral

A programozóknak nem szabad kézzel telepíteniük a szolgáltatásokat, és nem szabad hozzáférésük legyen az őket nem érintő névterekhez. Ezen a ponton érdemes több klasztert fenntartani a nem megfelelően beállított alkalmazások "robbanási sugarának" csökkentése végett, valamint a számlázási folyamatok és az erőforrás-kezelés egyszerűsítése érdekében.

Így a szervezete által helyesen használt névterek a Kubernetes-t kezelhetőbbé, ellenőrizhetőbbé, biztonságosabbá és rugalmasabbá teszik.

Kubernetes legjobb gyakorlatai. A Kubernetes életképességének ellenőrzése Ready és Liveness tesztekkel

Videó lejátszása

Egy kis reklám 🙂

Köszönjük, hogy velünk maradtál. Tetszenek a cikkeink? Szeretnél több érdekes anyagot látni? Támogass minket, és rendelés leadásával vagy ismerősöknek ajánlással segíts nekünk. Felhőalapú VPS fejlesztőknek 4,99 dollártól, Egyedülálló alternatívája az entry-level szervereknek, amelyet Önnek találtunk ki: Minden igazság a VPS (KVM) E5-2697 v3 (6 mag) 10GB DDR4 480GB SSD 1Gbps áron 19 dollártól, vagy hogyan oszd fel helyesen a szervert? (elérhetők RAID1 és RAID10 opciók, akár 24 magig és 40GB DDR4-ig).

Dell R730xd kétszer olcsóbban a Tier IV Equinix adatközpontban Amszterdamban? Csak nálunk 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB 199 dollártól Hollandiában! Dell R420 — 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — 99 dollártól! Olvasd el ezt Hogyan építsünk vállalati szintű infrastruktúrát Dell R730xd E5-2650 v4 szerverekkel, amelyek költsége 9000 euróban van megszabva?

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster