ProHoster > Blog > Ma'muriyat > Ishlab chiqarishda Kubernetes yordamida Istio qanday ishga tushiriladi. 1-qism
Ishlab chiqarishda Kubernetes yordamida Istio qanday ishga tushiriladi. 1-qism
nima Istio? Bu xizmat tarmog'i deb ataladigan texnologiya bo'lib, tarmoq orqali mavhumlik qatlamini qo'shadi. Biz klasterdagi trafikning to'liq yoki bir qismini ushlab turamiz va u bilan ma'lum operatsiyalar to'plamini bajaramiz. Aynan qanday? Masalan, biz aqlli marshrutlashni amalga oshiramiz yoki o'chirish to'xtatuvchisi yondashuvini amalga oshiramiz, biz "kanareykalarni joylashtirishni" tashkil qilishimiz mumkin, trafikni qisman xizmatning yangi versiyasiga o'tkazamiz yoki tashqi shovqinlarni cheklashimiz va klasterdan tashqi tarmoqqa barcha sayohatlarni boshqarishimiz mumkin. tarmoq. Turli mikroservislar orasidagi sayohatlarni boshqarish uchun siyosat qoidalarini o'rnatish mumkin. Va nihoyat, biz tarmoqning o'zaro ta'sirining butun xaritasini olishimiz va birlashtirilgan o'lchovlar to'plamini ilovalar uchun to'liq shaffof qilishimiz mumkin.
Ish mexanizmi haqida maqolada o'qishingiz mumkin rasmiy hujjatlar. Istio ko'plab vazifalar va muammolarni hal qila oladigan chinakam kuchli vositadir. Ushbu maqolada men odatda Istio bilan ishlashni boshlaganda paydo bo'ladigan asosiy savollarga javob bermoqchiman. Bu sizga u bilan tezroq kurashishga yordam beradi.
Ish printsipi
Istio ikkita asosiy zonadan iborat - boshqaruv tekisligi va ma'lumotlar tekisligi. Boshqaruv tekisligida qolganlarning to'g'ri ishlashini ta'minlaydigan asosiy komponentlar mavjud. Joriy versiyada (1.0) boshqaruv tekisligi uchta asosiy komponentga ega: Pilot, Mixer, Citadel. Biz Citadelni ko'rib chiqmaymiz; xizmatlar o'rtasida o'zaro TLS ishlashini ta'minlash uchun sertifikatlar yaratish kerak. Keling, Pilot va Mixer dizayni va maqsadini batafsil ko'rib chiqaylik.
Uchuvchi - bu klasterda mavjud bo'lgan barcha ma'lumotlarni tarqatadigan asosiy boshqaruv komponenti - xizmatlar, ularning so'nggi nuqtalari va marshrutlash qoidalari (masalan, Kanareykani joylashtirish qoidalari yoki elektron to'xtatuvchidir qoidalari).
Mikser - bu o'lchovlar, jurnallar va tarmoq o'zaro ta'siri haqida har qanday ma'lumotni to'plash qobiliyatini ta'minlaydigan ixtiyoriy boshqaruv tekisligi komponenti. Shuningdek, u Siyosat qoidalariga rioya etilishini va tarif cheklovlariga rioya etilishini nazorat qiladi.
Ma'lumotlar tekisligi sidecar proksi-konteynerlari yordamida amalga oshiriladi. Standart kuchli elchi proksi-server. Uni boshqa dastur bilan almashtirish mumkin, masalan, nginx (nginmesh).
Istio ilovalar uchun to'liq shaffof ishlashi uchun avtomatik in'ektsiya tizimi mavjud. Eng so'nggi dastur Kubernetes 1.9+ versiyalari uchun mos keladi (mutatsion kirish veb-huk). Kubernetes 1.7, 1.8 versiyalari uchun Initializer-dan foydalanish mumkin.
Sidecar konteynerlari GRPC protokoli yordamida Pilotga ulanadi, bu sizga klasterda sodir bo'layotgan o'zgarishlarni surish uchun modelni optimallashtirish imkonini beradi. GRPC Envoy-da 1.6-versiyasidan foydalanila boshlandi, Istio-da u 0.8-versiyasidan beri qo'llanila boshlandi va uchuvchi-agent - ishga tushirish parametrlarini sozlaydigan elchi ustidan golang o'rami.
Pilot va Mixer mutlaqo fuqaroligi yo'q komponentlar bo'lib, barcha holat xotirada saqlanadi. Ular uchun konfiguratsiya va hokazolarda saqlanadigan Kubernetes Custom Resources shaklida o'rnatiladi.
Istio-agent uchuvchi manzilni oladi va unga GRPC oqimini ochadi.
Aytganimdek, Istio barcha funktsiyalarni ilovalar uchun mutlaqo shaffof tarzda amalga oshiradi. Keling, qanday qilib tushunaylik. Algoritm quyidagicha:
Biz xizmatning yangi versiyasini joylashtiramiz.
Yon idishni in'ektsiya qilish yondashuviga qarab, konfiguratsiyani qo'llash bosqichida istio-init konteyneri va istio-agent konteyneri (elchi) qo'shiladi yoki ular allaqachon Kubernetes ob'ektining Pod tavsifiga qo'lda kiritilishi mumkin.
istio-init konteyneri podga iptables qoidalarini qo'llaydigan skriptdir. Δ°stio-agent konteynerida trafikni o'rashni o'rnatishning ikkita varianti mavjud: iptables yo'naltirish qoidalaridan foydalaning yoki TPROXY. Yozish vaqtida, standart yondashuv qayta yo'naltirish qoidalariga ega. Istio-init sizga qanday trafikni ushlab turish va istio-agentga jo'natish kerakligini sozlash imkonini beradi. Masalan, barcha kiruvchi va chiquvchi trafikni ushlab turish uchun siz parametrlarni o'rnatishingiz kerak -i ΠΈ -b ma'noga kiradi *. Siz tutash uchun maxsus portlarni belgilashingiz mumkin. Muayyan pastki tarmoqni ushlab turmaslik uchun uni bayroq yordamida belgilashingiz mumkin -x.
Init konteynerlari bajarilgandan so'ng, asosiylari, shu jumladan uchuvchi-agent (elchi) ishga tushiriladi. U GRPC orqali allaqachon o'rnatilgan Pilotga ulanadi va klasterdagi barcha mavjud xizmatlar va marshrutlash siyosatlari haqida ma'lumot oladi. Qabul qilingan ma'lumotlarga ko'ra, u klasterlarni sozlaydi va ularni bevosita Kubernetes klasteridagi ilovalarimizning so'nggi nuqtalariga tayinlaydi. Yana bir muhim jihatga e'tibor qaratish lozim: elchi tinglashni boshlaydigan tinglovchilarni (IP, port juftlari) dinamik ravishda sozlaydi. Shuning uchun, so'rovlar podkadaga kirganda va iptables qoidalaridan foydalanib, sidecarga qayta yo'naltirilsa, elchi allaqachon bu ulanishlarni muvaffaqiyatli qayta ishlashi va keyingi trafikni qayerga proksi-server qilish kerakligini tushunishi mumkin. Shuningdek, ushbu bosqichda Mixerga ma'lumot yuboriladi, biz uni keyinroq ko'rib chiqamiz va kuzatuv oralig'i yuboriladi.
Natijada, biz bir nuqtadan sozlashimiz mumkin bo'lgan elchi proksi-serverlarning butun tarmog'ini olamiz (Pilot). Barcha kiruvchi va chiquvchi so'rovlar elchi orqali o'tadi. Bundan tashqari, faqat TCP trafik to'xtatiladi. Bu Kubernetes xizmati IP-ni o'zgartirmasdan UDP orqali kube-dns yordamida hal qilinishini anglatadi. Keyin, hal qilingandan so'ng, chiquvchi so'rov elchi tomonidan ushlanadi va qayta ishlanadi, u so'rovni qaysi oxirgi nuqtaga yuborish kerakligini hal qiladi (yoki kirish siyosati yoki elektron to'xtatuvchining algoritmi ishga tushirilganda yuborilmaydi).
Biz Pilotni ajratdik, endi Mixer qanday ishlashini va nima uchun kerakligini tushunishimiz kerak. Siz bu haqda rasmiy hujjatlarni o'qishingiz mumkin shu yerda.
Mikser hozirgi ko'rinishida ikkita komponentdan iborat: istio-temetriya, istio-policy (0.8 versiyasidan oldin bu bitta istio-mikser komponenti edi). Ularning ikkalasi ham mikserdir, ularning har biri o'z vazifasi uchun javobgardir. Istio telemetriya GRPC orqali kim qaerga va qanday parametrlar bilan ketayotgani haqida hisobot konteynerlaridan ma'lumot oladi. Istio-policy Siyosat qoidalariga rioya qilinganligini tekshirish uchun tekshirish soΚ»rovlarini qabul qiladi. Siyosat tekshiruvlari, albatta, har bir so'rov uchun o'tkazilmaydi, lekin ma'lum vaqt davomida mijozda (yangi vagonda) keshlanadi. Hisobot tekshiruvlari ommaviy so'rovlar bilan yuboriladi. Biz uni qanday sozlashni va qanday parametrlarni yuborish kerakligini birozdan keyin ko'rib chiqamiz.
Mikser telemetriya ma'lumotlarini yig'ish va qayta ishlashning uzluksiz ishlashini ta'minlaydigan yuqori darajadagi mavjud komponent bo'lishi uchun mo'ljallangan. Tizim ko'p darajali bufer sifatida tugaydi. Dastlab, ma'lumotlar konteynerlarning yon tomonida, so'ngra mikser tomonida buferlanadi va keyin mikserning orqa tomonlari deb ataladigan joyga yuboriladi. Natijada, tizim komponentlaridan birortasi ishlamay qolsa, bufer o'sadi va tizim qayta tiklanganidan keyin yuviladi. Mikserning orqa tomonlari telemetriya ma'lumotlarini yuborish uchun so'nggi nuqtalardir: statsd, newrelic va boshqalar. Siz o'zingizning backendingizni yozishingiz mumkin, bu juda oddiy va biz buni qanday qilishni ko'rib chiqamiz.
Xulosa qilib aytganda, istio-temetriya bilan ishlash sxemasi quyidagicha.
1-xizmat 2-xizmatga so'rov yuboradi.
1-xizmatdan chiqayotganda so'rov o'zining yonboshiga o'raladi.
Sidecar elchisi so'rov 2-xizmatga qanday borishini nazorat qiladi va kerakli ma'lumotlarni tayyorlaydi.
Keyin u Hisobot so'rovi yordamida uni istio-temetriyaga yuboradi.
Istio-telemetriya ushbu Hisobotni backendlarga jo'natish kerakligini, qaysilari va qanday ma'lumotlarni yuborish kerakligini aniqlaydi.
Agar kerak bo'lsa, Istio-temetry hisobot ma'lumotlarini backendga yuboradi.
Endi keling, faqat asosiy komponentlardan (Pilot va sidecar envoy) tashkil topgan tizimda Istio-ni qanday joylashtirishni ko'rib chiqamiz.
Birinchidan, Pilot o'qigan asosiy konfiguratsiyani (mash) ko'rib chiqaylik:
Hammasi muvaffaqiyatli boshlanishi uchun siz ServiceAccount, ClusterRole, ClusterRoleBinding, Pilot uchun CRD ni yaratishingiz kerak, ularning tavsifini topishingiz mumkin. shu yerda.
Natijada, biz elchi bilan yonbosh mashinasini kiritadigan xizmat muvaffaqiyatli ishga tushishi, uchuvchidan barcha kashfiyotlarni olishi va so'rovlarni ko'rib chiqishi kerak.
Boshqaruv tekisligining barcha komponentlari fuqaroligi bo'lmagan ilovalar ekanligini va muammosiz gorizontal ravishda o'lchanishi mumkinligini tushunish muhimdir. Barcha ma'lumotlar etcd da Kubernetes resurslarining maxsus tavsiflari shaklida saqlanadi.
Istio shuningdek (hali ham eksperimental) klasterdan tashqarida ishlash va bir nechta Kubernetes klasterlari o'rtasida xizmat kashfiyotlarini ko'rish va almashish qobiliyatiga ega. Bu haqda ko'proq o'qishingiz mumkin shu yerda.
Ko'p klasterli o'rnatish uchun quyidagi cheklovlarni ko'rib chiqing:
Pod CIDR va Service CIDR barcha klasterlarda yagona boβlishi va bir-biriga mos kelmasligi kerak.
Barcha Pod CIDRβlarga klasterlar orasidagi istalgan Pod CIDRβlardan kirish mumkin boβlishi kerak.
Barcha Kubernetes API serverlari bir-biri uchun ochiq bo'lishi kerak.
Bu Istio bilan boshlashingizga yordam beradigan asosiy kirish. Biroq, hali ham ko'plab tuzoqlar mavjud. Masalan, tashqi trafikni marshrutlash xususiyatlari (klaster tashqarisi), yon vagonlarni disk raskadrovka qilish yondashuvlari, profil yaratish, mikserni o'rnatish va moslashtirilgan mikserning orqa qismini yozish, kuzatuv mexanizmini sozlash va elchi yordamida uning ishlashi.
Bularning barchasini keyingi nashrlarda ko'rib chiqamiz. Savollaringizni bering, men ularga aniqlik kiritishga harakat qilaman.