Istio a me Kubernetes i ka hana. Mahele 2. Ka Huli

I ka hope loa 'ōlelo Ua nānā mākou i nā ʻāpana kumu o Service Mesh Istio, kamaʻāina me ka ʻōnaehana a pane i nā nīnau nui e kū maʻamau i ka wā e hoʻomaka ai e hana me Istio. Ma kēia ʻāpana e nānā mākou pehea e hoʻonohonoho ai i ka hōʻiliʻili o ka ʻike ʻike ma luna o kahi pūnaewele.

Istio a me Kubernetes i ka hana. Mahele 2. Ka Huli

ʻO ka mea mua i hiki i ka noʻonoʻo no ka nui o nā mea hoʻomohala a me nā luna ʻōnaehana ke lohe lākou i nā huaʻōlelo Service Mesh e huli nei. ʻOiaʻiʻo, hoʻohui mākou i kahi kikowaena proxy kūikawā i kēlā me kēia node pūnaewele kahi e hele ai nā kaʻa TCP āpau. Me he mea lā ua hiki ke hoʻouna maʻalahi i ka ʻike e pili ana i nā pilina pūnaewele āpau ma ka pūnaewele. ʻO ka mea pōʻino, i ka ʻoiaʻiʻo he nui nā nuances e pono e noʻonoʻo. E nānā kākou iā lākou.

Kuhihewa helu ʻekahi: hiki iā mākou ke kiʻi i ka ʻikepili hele wāwae pūnaewele me ka manuahi.

ʻO ka ʻoiaʻiʻo, no ka manuahi, hiki iā mākou ke kiʻi wale i nā nodes o kā mākou ʻōnaehana i hoʻopili ʻia e nā pua a me ka helu ʻikepili i hala ma waena o nā lawelawe (ʻoiaʻiʻo, ʻo ka helu wale nō o nā bytes i kēlā me kēia manawa). Eia naʻe, i ka hapanui o nā hihia, ke kamaʻilio nei kā mākou lawelawe ma luna o kekahi ʻano protocol layer application, e like me HTTP, gRPC, Redis, a pēlā aku. A, ʻoiaʻiʻo, makemake mākou e ʻike i ka ʻike kikoʻī no kēia mau protocols; makemake mākou e ʻike i ka helu noi, ʻaʻole ka helu data. Makemake mākou e hoʻomaopopo i ka latency o nā noi e hoʻohana ana i kā mākou protocol. ʻO ka mea hope loa, makemake mākou e ʻike i ke ala holoʻokoʻa i lawe ʻia e kahi noi mai ka hoʻopaʻa inoa ʻana i kā mākou ʻōnaehana i ka loaʻa ʻana o kahi pane mai ka mea hoʻohana. ʻAʻole maʻalahi kēia pilikia e hoʻoponopono.

ʻO ka mea mua, e nānā kākou i ke ʻano o ka hoʻouna ʻana i nā spans mai kahi hiʻohiʻona hoʻolālā ma Istio. E like me kā mākou e hoʻomanaʻo ai mai ka hapa mua, loaʻa iā Istio kahi ʻāpana ʻokoʻa i kapa ʻia ʻo Mixer no ka hōʻiliʻili ʻana i ka telemetry. Eia nō naʻe, i ka mana o kēia manawa 1.0.*, hoʻouna pololei ʻia mai nā kikowaena proxy, ʻo ia hoʻi, mai ka ʻelele proxy. Kākoʻo ʻo Envoy proxy i ka hoʻouna ʻana i nā spans me ka hoʻohana ʻana i ka protocol zipkin ma waho o ka pahu. Hiki ke hoʻohui i nā protocols ʻē aʻe, akā ma o kahi plugin wale nō. Me Istio, loaʻa koke mākou i kahi proxy ʻelele i ʻākoakoa a hoʻonohonoho ʻia, e kākoʻo wale ana i ka protocol zipkin. Inā makemake mākou e hoʻohana, no ka laʻana, ka protocol Jaeger a hoʻouna i nā tracing spans ma o UDP, a laila pono mākou e kūkulu i kā mākou kiʻi istio-proxy. Aia ke kākoʻo no nā plugins maʻamau no istio-proxy, akā aia nō ia i ka alpha alpha. No laila, inā makemake mākou e hana me ka ʻole o ka nui o nā hoʻonohonoho maʻamau, ua hoʻemi ʻia ka laulā o nā ʻenehana i hoʻohana ʻia no ka mālama ʻana a me ka loaʻa ʻana o ka tracing spans. ʻO nā ʻōnaehana nui, ʻoiaʻiʻo, hiki iā ʻoe ke hoʻohana iā Zipkin iā ia iho, a i ʻole Jaeger, akā e hoʻouna i nā mea āpau ma laila me ka hoʻohana ʻana i ka protocol zipkin compatible (ʻoi aku ka maikaʻi ʻole). ʻO ka protocol zipkin ponoʻī e pili ana i ka hoʻouna ʻana i nā ʻike hulina āpau i nā mea hōʻiliʻili ma o ka protocol HTTP, ʻoi aku ke kumukūʻai.

E like me kaʻu i ʻōlelo ai, makemake mākou e ʻimi i nā protocol pae noi. ʻO ia hoʻi, pono e hoʻomaopopo nā kikowaena proxy e kū kokoke ana i kēlā me kēia lawelawe i ke ʻano o ka launa pū ʻana i kēia manawa. Ma ka paʻamau, hoʻonohonoho ʻo Istio i nā awa āpau i TCP maʻamau, ʻo ia hoʻi, ʻaʻole e hoʻouna ʻia nā meheu. I mea e hoʻouna ʻia ai nā traces, pono ʻoe e hoʻololi i kēia koho i ka config mesh nui a, ʻo ka mea nui loa, e inoa i nā awa āpau o nā hui lawelawe kubernetes e like me ka protocol i hoʻohana ʻia i ka lawelawe. ʻO ia, no ka laʻana, e like me kēia:

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  ports:
  - port: 80
    targetPort: 80
    name: http
  selector:
    app: nginx

Hiki iā ʻoe ke hoʻohana i nā inoa hui e like me http-magic (E ʻike ʻo Istio i ka http a e ʻike i kēlā awa ma kahi http endpoint). ʻO ke ʻano: proto-extra.

I ʻole e hoʻopaʻa i ka nui o nā hoʻonohonoho e hoʻoholo ai i ka protocol, hiki iā ʻoe ke hoʻohana i kahi workaround lepo: e hoʻopili i ka ʻāpana Pilot i ka manawa wale nō. hana i ka loina wehewehe protocol. I ka hopena, ʻoiaʻiʻo, pono e hoʻololi i kēia loiloi i ka maʻamau a hoʻololi i kahi hui inoa no nā awa āpau.

I mea e hoʻomaopopo ai inā ua wehewehe pololei ʻia ka protocol, pono ʻoe e hele i loko o kekahi o nā pahu sidecar me ka ʻelele proxy a noi aku i ke awa admin o ka interface ʻelele me ka wahi /config_dump. I ka hopena hoʻonohonoho, pono ʻoe e nānā i ke kahua hana o ka lawelawe i makemake ʻia. Hoʻohana ʻia ia ma Istio ma ke ʻano he ʻike no kahi i hana ʻia ai ka noi. I mea e hoʻopilikino ai i ka waiwai o kēia ʻāpana ma Istio (e ʻike mākou iā ia ma kā mākou ʻōnaehana tracing), pono ia e kuhikuhi i ka hae serviceCluster ma ke kahua o ka hoʻokuʻu ʻana i ka pahu sidecar. No ka laʻana, hiki ke helu ʻia e like me kēia mai nā mea hoʻololi i loaʻa mai ka API kubernetes i lalo:

--serviceCluster ${POD_NAMESPACE}.$(echo ${POD_NAME} | sed -e 's/-[a-z0-9]*-[a-z0-9]*$//g')

He kumu hoʻohālike maikaʻi e hoʻomaopopo ai i ka hana ʻana o ka huli ʻana ma ka ʻelele maanei.

Pono e kuhikuhi ʻia ka ʻaoʻao hope no ka hoʻouna ʻana i nā kikoʻī i loko o nā hae hoʻomaka ʻelele proxy, no ka laʻana: --zipkinAddress tracing-collector.tracing:9411

Manaʻo kuhi helu ʻelua: hiki iā mākou ke loaʻa ma ke kumukūʻai piha o nā noi ma o ka ʻōnaehana ma waho o ka pahu

ʻO ka mea pōʻino, ʻaʻole ia. ʻO ka paʻakikī o ka hoʻokō ʻana ma muli o ke ʻano āu i hoʻokō ai i ka pilina o nā lawelawe. No ke aha ia?

ʻO ka mea ʻoiaʻiʻo i mea e hiki ai i ka istio-proxy ke hoʻomaopopo i ka pili ʻana o nā noi e komo mai ana i kahi lawelawe me ka poʻe e haʻalele ana i ka lawelawe like, ʻaʻole lawa ka hoʻopili wale ʻana i nā kaʻa āpau. Pono ʻoe e loaʻa i kekahi ʻano mea ʻike kamaʻilio. Hoʻohana ʻo HTTP envoy proxy i nā poʻomanaʻo kūikawā, kahi e hoʻomaopopo ai ka ʻelele i ka noi kikoʻī i ka lawelawe e hoʻopuka i nā noi kikoʻī i nā lawelawe ʻē aʻe. Ka papa inoa o ia mau poʻomanaʻo:

  • x-noi-id,
  • x-b3-traceid,
  • x-b3-Sepania,
  • x-b3-mākua makua,
  • x-b3-laana,
  • x-b3-hae,
  • x-ot-span-context.

Inā loaʻa iā ʻoe kahi helu hoʻokahi, no ka laʻana, kahi mea kūʻai maʻamau, kahi e hiki ai iā ʻoe ke hoʻohui i kēlā loiloi, a laila maikaʻi nā mea a pau, pono ʻoe e kali i kēia waihona e hoʻonui ʻia no nā mea kūʻai aku a pau. Akā inā loaʻa iā ʻoe kahi ʻōnaehana heterogeneous a ʻaʻohe hoʻohui i ka neʻe ʻana mai kahi lawelawe i ka lawelawe ma luna o ka pūnaewele, a laila he pilikia nui kēia. Me ka ʻole o ka hoʻohui ʻana i kēlā loiloi, ʻo ka ʻike ʻike ʻike āpau e "pae hoʻokahi". ʻO ia hoʻi, e loaʻa iā mākou nā pilina ma waena o ka lawelawe, akā ʻaʻole lākou e hoʻopili ʻia i nā kaulahao hoʻokahi o ke ala ma o ka pūnaewele.

hopena

Hāʻawi ʻo Istio i kahi mea hana maʻalahi no ka hōʻiliʻili ʻana i ka ʻike ma luna o kahi pūnaewele, akā pono ʻoe e hoʻomaopopo no ka hoʻokō ʻana pono ʻoe e hoʻololi i kāu ʻōnaehana a noʻonoʻo i nā hiʻohiʻona o ka hoʻokō Istio. ʻO ka hopena, pono e hoʻoholo i ʻelua mau manaʻo nui: ka wehewehe ʻana i ka protocol level application (pono e kākoʻo ʻia e ka ʻelele proxy) a me ka hoʻonohonoho ʻana i ka hoʻouna ʻana i ka ʻike e pili ana i ka pilina o nā noi i ka lawelawe mai nā noi mai ka lawelawe (e hoʻohana ana i nā poʻo. , i ka hihia o ka protocol HTTP). Ke hoʻoholo ʻia kēia mau pilikia, loaʻa iā mākou kahi mea hana ikaika e hiki ai iā mākou ke hōʻiliʻili i ka ʻike mai ka pūnaewele, ʻoiai i nā ʻōnaehana heterogeneous i kākau ʻia i nā ʻōlelo a me nā ʻano like ʻole.

Ma ka ʻatikala aʻe e pili ana i ka Service Mesh, e nānā mākou i kekahi o nā pilikia nui loa me Istio - ka hoʻohana nui ʻana o ka RAM e kēlā me kēia pahu koho sidecar a kūkākūkā pehea ʻoe e hana ai me ia.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka