Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Kubernetes шилдэг туршлагууд. Жижиг сав бий болгох

Та илүү олон Kubernetes үйлчилгээг үүсгэж эхлэхийн хэрээр эхэндээ энгийн байсан ажлууд илүү төвөгтэй болж эхэлдэг. Жишээлбэл, хөгжүүлэлтийн багууд ижил нэрээр үйлчилгээ эсвэл байршуулалт үүсгэж чадахгүй. Хэрэв танд олон мянган хонхорцог байгаа бол зүгээр л жагсаахад маш их цаг хугацаа шаардагдах бөгөөд тэдгээрийг зөв удирдах нь байтугай. Мөн энэ бол мөсөн уулын зөвхөн орой юм.

Нэрийн орон зай нь Kubernetes нөөцийг удирдахад хэрхэн хялбар болохыг харцгаая. Тэгэхээр нэрийн орон зай гэж юу вэ? Нэрийн орон зайг таны Kubernetes кластер доторх виртуал кластер гэж үзэж болно. Та нэг Kubernetes кластер дотор бие биенээсээ тусгаарлагдсан олон нэрийн орон зайтай байж болно. Тэд танд болон танай багт зохион байгуулалт, аюулгүй байдал, тэр ч байтугай системийн гүйцэтгэлд үнэхээр тусалж чадна.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Ихэнх Kubernetes түгээлтүүд дээр кластер нь "өгөгдмөл" нэртэй нэрийн орон зайтай хайрцагнаас гарч ирдэг. Үнэндээ Кубернетесийн харьцдаг гурван нэрийн орон зай байдаг: анхдагч, kube-систем, kube-public. Одоогоор Kube-public нь тийм ч их ашиглагддаггүй.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Kube нэрийн орон зайг дангаар нь үлдээх нь сайн санаа, ялангуяа Google Kubernetes Engine гэх мэт удирддаг систем дээр. Энэ нь "өгөгдмөл" нэрийн орон зайг таны үйлчилгээ, программ үүсгэх газар болгон ашигладаг. Kubernetes үүнийг ашиглахаар тохируулагдсан тул та үүнийг устгах боломжгүй гэдгээс өөр онцгой зүйл байхгүй. Энэ нь эхлүүлэхэд тохиромжтой, бага гүйцэтгэлтэй системүүд боловч би том үйлдвэрлэлийн системүүд дээр анхдагч нэрийн орон зайг ашиглахыг зөвлөдөггүй. Сүүлчийн тохиолдолд нэг хөгжүүлэлтийн баг өөр хэн нэгний кодыг амархан дахин бичиж, өөр багийн ажлыг өөрөө ч мэдэлгүй эвдэж болно.

Тиймээс та олон нэрийн орон зай үүсгэж, тэдгээрийг ашиглан үйлчилгээгээ удирдах боломжтой нэгж болгон хуваах хэрэгтэй. Нэрийн орон зайг нэг тушаалаар үүсгэж болно. Хэрэв та test нэртэй нэрийн орон зай үүсгэхийг хүсвэл $ kubectl create namespace test командыг ашиглана уу эсвэл зүгээр л YAML файл үүсгээд үүнийг бусад Kubernetes нөөцийн нэгэн адил ашиглана уу.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Та $ kubectl get namespace командыг ашиглан бүх нэрийн орон зайг харж болно.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Үүнийг хийж дууссаны дараа та гурван нэрийн орон зай болон "тест" нэртэй шинэ нэрийн орон зайг харах болно. Под үүсгэх энгийн YAML файлыг харцгаая. Нэрийн орон зайн талаар дурдаагүй байгааг та анзаарах болно.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Хэрэв та энэ файлыг ажиллуулахдаа kubectl ашигладаг бол энэ нь одоо идэвхтэй байгаа нэрийн талбарт mypod модулийг үүсгэх болно. Энэ нь таныг өөрчлөх хүртэл өгөгдмөл нэрийн орон зай байх болно. Kubernetes-д нөөцөө ямар нэрийн талбарт үүсгэхийг хүсч байгаагаа хэлэх 2 арга бий. Эхний арга бол нөөц үүсгэх үед нэрийн зайны тугийг ашиглах явдал юм.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Хоёрдахь арга бол YAML мэдэгдэлд нэрийн орон зайг зааж өгөх явдал юм.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Хэрэв та YAML-д нэрийн орон зайг зааж өгвөл нөөц үргэлж тухайн нэрийн талбарт үүсгэгдэнэ. Хэрэв та нэрийн зайны тугийг ашиглаж байхдаа өөр нэрийн орон зайг ашиглахыг оролдвол тушаал амжилтгүй болно. Одоо та нар хонгио олох гэж оролдвол олж чадахгүй.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Энэ нь бүх тушаалууд нь одоогийн идэвхтэй нэрийн зайнаас гадуур хийгдэж байгаа тул тохиолддог. Pod-оо олохын тулд та нэрийн зайн туг ашиглах хэрэгтэй, гэхдээ энэ нь хурдан хуучирдаг, ялангуяа та өөрийн нэрийн орон зайг ашигладаг багийн хөгжүүлэгч бөгөөд команд бүрт энэ тугийг ашиглахыг хүсэхгүй байгаа бол. Үүнийг хэрхэн засахаа харцгаая.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Таны идэвхтэй нэрийн орон зайг анхдагч гэж нэрлэдэг. Хэрэв та YAML нөөцөд нэрийн орон зайг заагаагүй бол бүх Kubernetes тушаалууд энэ идэвхтэй өгөгдмөл нэрийн орон зайг ашиглана. Харамсалтай нь kubectl ашиглан идэвхтэй нэрийн орон зайг удирдах оролдлого бүтэлгүйтэж магадгүй юм. Гэсэн хэдий ч, энэ үйл явцыг ихээхэн хөнгөвчлөх Kubens хэмээх маш сайн хэрэгсэл байдаг. Та kubens командыг ажиллуулах үед идэвхтэй нэрийн талбарыг тодруулсан бүх нэрийн орон зайг харах болно.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Идэвхтэй нэрийн орон зайг тестийн нэрийн талбар руу шилжүүлэхийн тулд та зүгээр л $kubens тест командыг ажиллуулна. Хэрэв та $kubens командыг дахин ажиллуулбал шинэ идэвхтэй нэрийн орон зай хуваарилагдсан болохыг харах болно - test.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Энэ нь тестийн нэрийн талбар дахь pod-ыг харахын тулд танд нэрийн зайны туг хэрэггүй гэсэн үг юм.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Ингэснээр нэрийн орон зайг бие биенээсээ нуусан боловч бие биенээсээ тусгаарлахгүй. Нэг нэрийн талбар дахь үйлчилгээ нь өөр нэрийн талбар дахь үйлчилгээтэй амархан холбогдож чаддаг бөгөөд энэ нь ихэвчлэн маш хэрэгтэй байдаг. Өөр өөр нэрийн орон зайд харилцах чадвар нь таны хөгжүүлэгчдийн үйлчилгээ өөр нэрийн орон зайд өөр хөгжүүлэгч багийн үйлчилгээтэй холбогдох боломжтой гэсэн үг юм.

Ер нь таны аппликейшн Kubernetes үйлчилгээнд хандахыг хүсвэл та суулгасан DNS илрүүлэх үйлчилгээг ашиглаж, програмдаа үйлчилгээнийхээ нэрийг л өгнө. Гэсэн хэдий ч үүнийг хийснээр та олон нэрийн талбарт ижил нэрээр үйлчилгээ үүсгэж болох бөгөөд энэ нь хүлээн зөвшөөрөгдөхгүй.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Аз болоход, DNS хаягийн өргөтгөсөн хэлбэрийг ашиглан үүнийг даван туулахад хялбар байдаг. Kubernetes дахь үйлчилгээнүүд нь нийтлэг DNS загвар ашиглан төгсгөлийн цэгээ ил гаргадаг. Энэ нь иймэрхүү харагдаж байна:

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Ерөнхийдөө танд зөвхөн үйлчилгээний нэр хэрэгтэй бөгөөд DNS нь бүрэн хаягийг автоматаар тодорхойлох болно.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Гэсэн хэдий ч, хэрэв та өөр нэрийн орон зай дахь үйлчилгээнд хандах шаардлагатай бол үйлчилгээний нэрийг нэмээд нэрийн зайны нэрийг ашиглана уу:

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Жишээлбэл, хэрэв та тестийн нэрийн талбар дахь үйлчилгээний мэдээллийн сантай холбогдохыг хүсвэл хаягийн мэдээллийн сангийн database.test-г ашиглаж болно.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Хэрэв та бүтээгдэхүүний нэрийн талбар дахь үйлчилгээний мэдээллийн санд холбогдохыг хүсвэл database.prod-г ашигладаг.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Хэрэв та нэрийн зайн хандалтыг үнэхээр тусгаарлаж, хязгаарлахыг хүсэж байгаа бол Kubernetes танд үүнийг Kubernetes Network Policies ашиглан хийхийг зөвшөөрдөг. Би энэ тухай дараагийн дугаарт ярих болно.

Би хэдэн нэрийн орон зай үүсгэх, ямар зорилгоор ашиглах вэ гэсэн асуултыг байнга асуудаг. Удирддаг өгөгдлийн хэсэг гэж юу вэ?

Хэрэв та хэт олон нэрийн орон зай үүсгэвэл тэдгээр нь таны замд саад болно. Хэрэв тэдгээр нь хэтэрхий цөөн байвал та ийм шийдлийн бүх ашиг тусыг алдах болно. Байгууллагын бүтцээ бүрдүүлэхдээ компани бүр үндсэн дөрвөн үе шат дамждаг гэж би боддог. Танай төсөл эсвэл компаний хөгжлийн үе шатаас хамааран та тохирох нэрийн стратегийг хэрэгжүүлэхийг хүсч болно.

Та 5-10 микро үйлчилгээг хөгжүүлэхээр ажиллаж байгаа жижиг багийн нэг хэсэг бөгөөд бүх хөгжүүлэгчдийг нэг өрөөнд хялбархан цуглуулж чадна гэж төсөөлөөд үз дээ. Ийм нөхцөлд бүх бүтээгдэхүүний үйлчилгээг анхдагч нэрийн талбарт ажиллуулах нь зүйтэй юм. Мэдээжийн хэрэг, илүү уян хатан болгохын тулд та 2 нэрийн орон зайг ашиглаж болно - бүтээгдэхүүн болон хөгжүүлэлтийн хувьд тусад нь. Та Minikube гэх мэт зүйлийг ашиглан дотоод компьютер дээрээ хөгжүүлэлтийг туршиж үзэх магадлалтай.

Бүх зүйл өөрчлөгдсөн гэж бодъё, та одоо 10 гаруй микро үйлчилгээн дээр ажиллаж байгаа хурдацтай хөгжиж буй багтай боллоо. Хэд хэдэн кластер эсвэл нэрийн орон зайг бүтээгдэхүүн болон хөгжүүлэлтийн хувьд тусад нь ашиглах шаардлагатай үе ирдэг. Та багийг хэд хэдэн дэд баг болгон хувааж болох бөгөөд ингэснээр тус бүр өөрийн гэсэн бичил үйлчилгээтэй бөгөөд эдгээр баг бүр програм хангамжийн хөгжүүлэлт, хувилбарыг удирдах үйл явцыг хөнгөвчлөхийн тулд өөрийн нэрийн орон зайг сонгох боломжтой.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Багийн гишүүн бүр систем бүхэлдээ хэрхэн ажилладаг талаар ойлголттой болох тусам өөрчлөлт бүрийг бусад бүх хөгжүүлэгчидтэй зохицуулах нь улам хэцүү болж байна. Орон нутгийн машин дээрээ бүтэн стекийг эргүүлэх гэж оролдох нь өдөр бүр хэцүү болж байна.

Томоохон компаниудад хөгжүүлэгчид хэн яг юу дээр ажиллаж байгааг мэддэггүй. Багууд үйлчилгээний гэрээг ашиглан харилцдаг эсвэл Istio тохиргооны хэрэгсэл гэх мэт сүлжээгээр хийсвэрлэх давхаргыг нэмдэг үйлчилгээний тор технологийг ашигладаг. Орон нутгийн хэмжээнд стекийг бүхэлд нь ажиллуулахыг оролдох нь зүгээр л боломжгүй юм. Би Kubernetes дээрх Spinnaker гэх мэт тасралтгүй хүргэх (CD) платформыг ашиглахыг зөвлөж байна. Тиймээс команд бүрт өөрийн гэсэн нэрийн орон зай хэрэгтэй болох үе ирдэг. Баг бүр хөгжүүлэлтийн орчин болон үйлдвэрлэлийн орчинд олон нэрийн орон зайг сонгох боломжтой.

Эцэст нь, нэг бүлэг хөгжүүлэгчид бусад бүлгүүд байгаа талаар огт мэддэггүй томоохон бизнес эрхэлдэг компаниуд байдаг. Ийм компани ерөнхийдөө сайн баримтжуулсан API-уудаар дамжуулан түүнтэй харилцдаг гуравдагч талын хөгжүүлэгчдийг хөлсөлж болно. Ийм бүлэг бүр хэд хэдэн баг, хэд хэдэн микро үйлчилгээг агуулдаг. Энэ тохиолдолд та өмнө нь ярьсан бүх хэрэгслийг ашиглах хэрэгтэй.

Kubernetes шилдэг туршлагууд. Нэрийн орон зайтай Кубернетесийн зохион байгуулалт

Программистууд үйлчилгээг гараар байршуулах ёсгүй бөгөөд өөрт хамааралгүй нэрийн орон зайд хандах эрхгүй байх ёстой. Энэ үе шатанд муу тохируулагдсан програмуудын "тэсэлгээний радиус" -ыг багасгах, тооцооны үйл явц, нөөцийн менежментийг хялбарчлахын тулд хэд хэдэн кластертай байхыг зөвлөж байна.

Тиймээс танай байгууллагын нэрийн орон зайг зөв ашиглах нь Кубернетесийг илүү удирдах боломжтой, хянах боломжтой, аюулгүй, уян хатан болгох боломжийг танд олгоно.

Kubernetes шилдэг туршлагууд. Кубернетесийн амьд байдлыг бэлэн байдал ба амьд байдлын тестээр баталгаажуулах

Зарим зар 🙂

Бидэнтэй хамт байсанд баярлалаа. Манай нийтлэл танд таалагдаж байна уу? Илүү сонирхолтой контент үзэхийг хүсч байна уу? Захиалга өгөх эсвэл найзууддаа санал болгох замаар биднийг дэмжээрэй, 4.99 доллараас эхлэн хөгжүүлэгчдэд зориулсан үүлэн VPS, Бидний танд зориулж бүтээсэн анхны түвшний серверүүдийн өвөрмөц аналоги: VPS (KVM) E5-2697 v3 (6 цөм) 10GB DDR4 480GB SSD 1Gbps-ийн 19 ам.долларын үнэ эсвэл серверийг хэрхэн хуваалцах тухай бүх үнэн үү? (RAID1 болон RAID10, 24 хүртэлх цөм, 40 ГБ хүртэл DDR4-тэй байх боломжтой).

Амстердам дахь Equinix Tier IV дата төвд Dell R730xd 2 дахин хямд байна уу? Зөвхөн энд 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ 199 доллараас Нидерландад! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - 99 доллараас! тухай уншина уу Дэд бүтцийн корпорацийг хэрхэн барих вэ. нэг пенни нь 730 еврогийн үнэтэй Dell R5xd E2650-4 v9000 сервер ашиглах анги?

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх