Ahoana ny fampandehanana Istio mampiasa Kubernetes amin'ny famokarana. Fizarana 1
Inona no Istio? Ity no antsoina hoe Service mesh, teknolojia izay manampy sosona abstraction amin'ny tambajotra. Manakana ny fifamoivoizana rehetra na ampahany amin'ny cluster izahay ary manao hetsika maromaro miaraka aminy. Iza amin'ireo? Ohatra, manao routing marani-tsaina izahay, na mampihatra ny fomba fiatoana fitetezam-paritra, afaka mandamina ny "fametrahana canary", mamadika ampahany amin'ny fifamoivoizana amin'ny dikan-teny vaovao amin'ny serivisy, na afaka mametra ny fifandraisana ivelany sy mifehy ny dia rehetra manomboka amin'ny cluster mankany amin'ny serivisy. tambajotra ivelany. Azo atao ny mametraka fitsipika momba ny politika hifehezana ny dia eo amin'ny serivisy micro samihafa. Farany, azontsika atao ny mahazo ny sarintanin'ny fifaneraserana amin'ny tambajotra manontolo ary manao ny fitambaran'ny metrika ho mangarahara tanteraka amin'ny fampiharana.
Azonao atao ny mamaky momba ny mekanisma amin'ny asa antontan-taratasy ofisialy. Istio dia fitaovana mahery vaika ahafahanao mamaha asa sy olana maro. Amin'ity lahatsoratra ity dia tiako ny hamaly ireo fanontaniana lehibe izay matetika mipoitra rehefa manomboka amin'ny Istio. Hanampy anao hiatrika izany haingana kokoa izany.
Ahoana no fiasan'izy
Istio dia misy faritra roa lehibe - ny fiaramanidina fanaraha-maso sy ny fiaramanidina data. Ny fiaramanidina fanaraha-maso dia misy ireo singa fototra izay miantoka ny fiasan'ny ambiny. Amin'ny dikan-teny ankehitriny (1.0) ny fiaramanidina fanaraha-maso dia manana singa telo lehibe: Pilot, Mixer, Citadel. Tsy hihevitra ny Citadel izahay, ilaina ny mamorona taratasy fanamarinana mba hiantohana ny TLS eo amin'ny serivisy. Andeha hojerentsika akaiky ny fitaovana sy ny tanjon'ny Pilot sy Mixer.
Pilot no singa fanaraha-maso lehibe izay mizara ny fampahalalana rehetra momba ny zavatra ananantsika ao amin'ny cluster - serivisy, ny fiafaran'izy ireo ary ny fitsipiky ny lalana (ohatra, ny fitsipika momba ny fametrahana Canary na ny fitsipiky ny fiatoana faritra).
Mixer dia singa fiaramanidina fanaraha-maso azo atao izay manome fahafahana manangona metrika, logs ary fampahalalana momba ny fifandraisana amin'ny tambajotra. Manara-maso ny fanarahana ny fitsipika politika sy ny fanarahana ny fetran'ny sarany ihany koa izy.
Ny fiaramanidina data dia ampiharina amin'ny alΓ lan'ny kaontenera proxy sidecar. Powerful dia ampiasaina amin'ny alΓ lan'ny default. iraka proxy. Azo soloina fampiharana hafa, toy ny nginx (nginmesh).
Mba ahafahan'i Istio miasa mangarahara tanteraka amin'ny fampiharana dia misy ny rafitra tsindrona mandeha ho azy. Ny fampiharana farany dia mety amin'ny Kubernetes 1.9+ version (mutational admission webhook). Ho an'ny Kubernetes version 1.7, 1.8 dia azo atao ny mampiasa ny Initializer.
Ny kaontenera Sidecar dia mifandray amin'ny Pilot amin'ny alΓ lan'ny protocol GRPC, izay ahafahanao manatsara ny modely fanosehana amin'ny fanovana mitranga ao amin'ny cluster. Ny GRPC dia nampiasaina tamin'ny Envoy nanomboka tamin'ny version 1.6, ao amin'ny Istio dia efa nampiasaina hatramin'ny version 0.8 ary mpanamory fiaramanidina - fonosana golang amin'ny iraka izay manitsy ny safidy fandefasana.
Pilot sy Mixer dia singa tsy misy fanjakana tanteraka, tazonina ao anaty fitadidiana ny fanjakana rehetra. Ny fanamafisana ho azy ireo dia napetraka amin'ny endrika Kubernetes Custom Resources, izay voatahiry ao amin'ny etcd.
Istio-agent dia mahazo ny adiresin'ny Pilot ary manokatra stream GRPC ho azy.
Araka ny nolazaiko, Istio dia mampihatra ny fiasa rehetra mangarahara tanteraka amin'ny fampiharana. Andeha hojerentsika hoe ahoana. Ny algorithm dia:
Mametraka kinova vaovaon'ny serivisy.
Miankina amin'ny fomba fanindronana kaontenera sidecar, ny kaontenera istio-init sy ny fitoeran-jiro istio-agent (iraka) dia ampiana amin'ny dingan'ny fampiharana ny fanamafisana, na efa azo ampidirina amin'ny tanana ao amin'ny famaritana ny orinasa Kubernetes Pod.
Ny container istio-init dia script izay mampihatra ny fitsipika iptables amin'ny pod. Misy safidy roa hanefena ny fifamoivoizana mba hofonosina ao anaty fitoeran-javatra istio-agent: mampiasa fitsipika redirect iptables, na TPROXY. Amin'ny fotoana anoratana, ny fomba fanao mahazatra dia amin'ny fitsipika redirect. Ao amin'ny istio-init, azo atao ny manitsy izay fifamoivoizana tokony hosakanana ary alefa any amin'ny istio-agent. Ohatra, mba hisakanana ny fifamoivoizana miditra sy mivoaka rehetra dia mila mametraka ny masontsivana ianao -i ΠΈ -b amin'ny dikany *. Azonao atao ny mamaritra ny seranana manokana hanakanana. Mba tsy hanakanana subnet manokana dia azonao atao ny mamaritra izany amin'ny alΓ lan'ny saina -x.
Aorian'ny famonoana ireo kaontenera init dia atomboka ny lehibe indrindra, anisan'izany ny mpanamory-agent (iraka). Izy io dia mifandray amin'ny Pilot efa napetraka amin'ny alΓ lan'ny GRPC ary mahazo fampahalalana momba ny serivisy rehetra misy sy ny politikan'ny lalana ao amin'ny cluster. Araka ny angon-drakitra voaray dia amboarina ireo cluster ary apetrany mivantana any amin'ny faran'ny fampiharana ataontsika ao amin'ny cluster Kubernetes. Ilaina ihany koa ny manamarika teboka manan-danja iray: ny iraka dia manitsy ny mpihaino (IP, port pairs) izay manomboka mihaino azy. Noho izany, rehefa miditra ao amin'ny pod ny fangatahana, dia averina amin'ny alΓ lan'ny fitsipika iptables redirect ao amin'ny sidecar, ny iraka dia efa afaka mandamina tsara ireo fifandraisana ireo ary mahafantatra hoe aiza no hisolo tena ny fifamoivoizana. Amin'ity dingana ity ihany koa dia alefa any amin'ny Mixer ny fampahalalana, izay hojerentsika any aoriana, ary alefa ny tracing span.
Vokatr'izany dia mahazo tambajotra iray manontolo ny mpizara proxy iraka izay azontsika amboarina avy amin'ny teboka iray (Pilot). Ny fangatahana miditra sy mivoaka rehetra dia mandeha amin'ny alΓ lan'ny iraka. Ambonin'izany, ny fifamoivoizana TCP ihany no voasakana. Midika izany fa ny serivisy Kubernetes IP dia voavaha amin'ny fampiasana kube-dns amin'ny UDP nefa tsy miova. Avy eo, aorian'ny fanapahan-kevitra, ny fangatahana mivoaka dia voasakana sy karakarain'ny iraka, izay efa manapa-kevitra hoe aiza no tokony handefasana ny fangatahana (na tsy alefa, raha misy ny politikam-pidirana na ny fisintahana ny algorithm).
Nahafantatra an'i Pilot izahay, izao dia mila mahatakatra ny fomba fiasan'ny Mixer sy ny antony ilΓ na azy. Azonao atao ny mamaky ny antontan-taratasy ofisialy momba izany eto.
Ny Mixer amin'ny endriny ankehitriny dia misy singa roa: istio-telemetry, istio-politika (talohan'ny version 0.8 dia singa iray istio-mixer). Izy ireo dia mixer, izay samy tompon'andraikitra amin'ny asany manokana. Istio telemetry dia mahazo vaovao momba izay mandeha aiza sy amin'ny inona avy amin'ny masontsivana avy amin'ny sidecar Report container amin'ny GRPC. Istio-policy dia manaiky ny fangatahana Check mba hanamarina fa afa-po ny fitsipiky ny politika. Ny fisavana politika dia mazava ho azy fa tsy natao ho an'ny fangatahana rehetra, fa voatahiry ao amin'ny mpanjifa (ao amin'ny sidecar) mandritra ny fotoana iray. Ny fisavana tatitra dia alefa toy ny fangatahana batch. Andeha hojerentsika ny fomba fanamboarana sy ny masontsivana tokony halefa taty aoriana kely.
Ny Mixer dia heverina ho singa tena azo ampiasaina izay miantoka ny asa tsy tapaka amin'ny fanangonana sy ny fanodinana ny angona telemetry. Ny rafitra dia azo vokatry ny buffer multi-level. Amin'ny voalohany, ny angon-drakitra dia apetraka eo amin'ny sisin'ny kaontenera, avy eo amin'ny lafiny mixer, ary avy eo alefa any amin'ny antsoina hoe backend mixer. Vokatr'izany, raha tsy mahomby ny singa iray amin'ny rafitra, dia mitombo ny buffer ary mipoitra rehefa avy naverina tamin'ny laoniny ny rafitra. Ny backend mixer dia teboka farany handefasana angon-drakitra telemetry: statsd, newrelic, sns. Azonao atao ny manoratra ny backend anao manokana, tena tsotra, ary ho hitantsika ny fomba hanaovana izany.
Raha fintinina, ny tetika miasa amin'ny istio-telemetry dia toy izao manaraka izao.
Ny serivisy 1 dia mandefa fangatahana amin'ny serivisy 2.
Rehefa miala amin'ny serivisy 1, ny fangatahana dia fonosina amin'ny fiara misy azy manokana.
Ny iraky ny Sidecar dia manara-maso ny fandehan'ny fangatahana amin'ny serivisy 2 ary manomana ny fampahalalana ilaina.
Avy eo dia alefaso any amin'ny istio-telemetry amin'ny alΓ lan'ny fangatahana Report.
Istio-telemetry dia mamaritra raha tokony halefa any amin'ny backends ity Tatitra ity, izay angon-drakitra tokony halefa.
Istio-telemetry dia mandefa tatitra any amin'ny backend raha ilaina.
Andeha hojerentsika ny fomba fametrahana Istio ao amin'ny rafitra, tsy misy afa-tsy ny singa fototra (Pilot sy iraka sidecar).
Voalohany, andeha hojerentsika ny rafitra fototra (mesh) izay novakian'i Pilot:
Mba hanombohan'ny zava-drehetra amim-pahombiazana dia mila mamorona ServiceAccount, ClusterRole, ClusterRoleBinding, CRD ho an'ny Pilot ianao, ny famaritana izay azo jerena. eto.
Vokatr'izany dia tokony hanomboka amim-pahombiazana ny serivisy izay itsindrohanay sidecar miaraka amin'ny iraka, handray ny zavatra hita rehetra avy amin'ny mpanamory sy ny fangatahana.
Zava-dehibe ny mahatakatra fa ny singa rehetra amin'ny fiaramanidina fanaraha-maso dia fampiharana tsy misy fanjakana ary azo atao mitsivalana tsy misy olana. Ny angon-drakitra rehetra dia voatahiry ao amin'ny etcd amin'ny endrika famaritana manokana momba ny loharano Kubernetes.
Ary koa, Istio (mbola andrana) dia manana fahafahana mihazakazaka ivelan'ny cluster ary afaka mijery sy manjavozavo ny fitadiavana serivisy eo anelanelan'ny cluster Kubernetes maromaro. Afaka mamaky bebe kokoa momba izany ianao eto.
Ho an'ny fametrahana multicluster, tandremo ireto fetra manaraka ireto:
Ny Pod CIDR sy ny Service CIDR dia tsy maintsy miavaka amin'ny cluster rehetra ary tsy tokony hifanindry.
Ny CIDR Pods rehetra dia tsy maintsy azo idirana avy amin'ny CIDR Pods eo anelanelan'ny cluster.
Ny mpizara Kubernetes API rehetra dia tsy maintsy azo idirana.
Ity no fampahalalana voalohany hanampy anao hanomboka amin'ny Istio. Na izany aza, mbola maro ny fandrika. Ohatra, ny endri-javatra amin'ny fampandehanana ny fifamoivoizana ivelany (eo ivelan'ny cluster), ny fomba debug ny sidecars, ny profiling, ny fametrahana mixer ary ny fanoratana ny backend mixer mahazatra, ny fametrahana mekanika fanaraha-maso sy ny asany amin'ny alΓ lan'ny iraka.
Izany rehetra izany dia hodinihintsika ao aminβny boky manaraka. Anontanio ny fanontanianao, hiezaka aho hamaly azy ireo.