Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

Whakataurite uta me te whakanui i nga hononga roa i Kubernetes
Ma tenei tuhinga ka awhina koe ki te mohio me pehea te mahi o te pauna utauta i Kubernetes, he aha te mea ka tupu i te wa e whakanui ana i nga hononga roa, me te aha me whakaaro koe ki te whakataurite taha-kiritaki mena ka whakamahi koe i te HTTP/2, gRPC, RSockets, AMQP, me etahi atu kawa roa . 

He korero iti mo te tohatoha o nga waka ki Kubernetes 

Ka whakaratohia e Kubernetes nga tangohanga pai e rua mo te tuku tono: Ratonga me te Whakamahinga.

Ko nga tukunga e whakaatu ana me pehea me te maha o nga kape o to tono me whakahaere i nga wa katoa. Ko ia tono ka tukuna hei Pod ka whakawhiwhia he wahitau IP.

He rite nga mahi a nga ratonga ki te taurite kawenga. I hoahoatia hei tohatoha waka puta noa i nga putunga maha.

Kia kite tatou he aha te ahua.

  1. I te hoahoa i raro nei ka kite koe e toru nga ahuatanga o te tono kotahi me te taurite kawenga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  2. Ko te taurite kawenga ka kiia he Ratonga, ka whakawhiwhia he wahitau IP. Ko nga tono taumai ka tukuna ki tetahi o nga putunga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  3. Ko te tauari tukunga ka whakatau i te maha o nga tauira o te tono. Kare rawa koe e toro tika ki raro:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  4. Ka whakawhiwhia ki ia pod tana ake wahitau IP:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

He pai ki te whakaaro mo nga ratonga hei kohinga o nga wahitau IP. Ia wa ka uru koe ki te ratonga, ka tohua tetahi o nga wahitau IP mai i te rarangi ka whakamahia hei wahitau ūnga.

He penei te ahua.

  1. Ka tae mai he tono curl 10.96.45.152 ki te ratonga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  2. Ka tohua e te ratonga tetahi o nga wahitau pod e toru hei haerenga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  3. Ka tukuna atu te waka ki tetahi putunga motuhake:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

Mena kei roto i to tono he pito o mua me te tuara, katahi ka whiwhi koe i te ratonga me te tohatoha mo ia.

Ina tono te pito o mua ki te pito o muri, kaore e tika kia mohiohia te maha o nga pene e mahi ana te pito o muri: kotahi pea, tekau, kotahi rau ranei.

Ano hoki, karekau te pito o mua e mohio mo nga wahitau o nga poti e mahi ana i te tuara.

I te wa e tono ana te pito o mua ki te tuara, ka whakamahia e ia te IP IP o te ratonga o muri, kaore e rereke.

Ko te ahua tenei.

  1. I raro i te 1 ka tono i te waahanga tuara o roto. Engari ki te kowhiri i tetahi mea motuhake mo te tuara, ka tono tono ki te ratonga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  2. Ka kowhiria e te ratonga tetahi o nga putunga o muri hei wahitau ūnga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  3. Ka haere te waka mai i te Pod 1 ki te Pod 5, i tohua e te ratonga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  4. I raro i te 1 kaore e tino mohio e hia nga pene penei i raro i te 5 e huna ana i muri o te ratonga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

Engari me pehea te tohatoha tono a te ratonga? Te ahua nei kei te whakamahia te whakataurite huri noa? Kia mohio tatou. 

Te taurite i roto i nga ratonga Kubernetes

Karekau he ratonga Kubernetes. Kaore he tukanga mo te ratonga kua tohua he wahitau IP me te tauranga.

Ka taea e koe te manatoko i tenei ma te takiuru ki tetahi node i roto i te roopu me te whakahaere i te tono netstat -ntlp.

Kare e kitea e koe te wahitau IP kua tohaina ki te ratonga.

Ko te wahitau IP o te ratonga kei roto i te paparanga mana, i roto i te kaiwhakahaere, ka tuhia ki roto i te papaarangi - etcd. Ko te wahitau ano e whakamahia ana e tetahi atu waahanga - kube-proxy.
Ka whiwhi a Kube-proxy i te rarangi o nga wahitau IP mo nga ratonga katoa me te whakaputa i te huinga o nga ture iptables ki ia node o te roopu.

E kii ana enei ture: "Mena ka kite tatou i te wahitau IP o te ratonga, me whakarereke e tatou te wahitau ūnga o te tono ka tukuna atu ki tetahi o nga poti."

Ko te wahitau IP ratonga ka whakamahia anake hei waahi urunga kaore e tukuna e tetahi tukanga whakarongo ki taua wahitau IP me te tauranga.

Kia titiro tatou ki tenei

  1. Whakaarohia te huinga o nga pona e toru. Kei ia node nga putunga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  2. He waahanga o te ratonga nga peera here kua peitahia te beige. Na te mea karekau te ratonga i te noho hei tukanga, ka whakaatuhia ki te hina:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  3. Ka tono te poti tuatahi ki tetahi ratonga me haere ki tetahi o nga poti e hono ana:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  4. Engari karekau te ratonga, karekau te tukanga. Me pehea te mahi?

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  5. I mua i te wehe atu o te tono i te node, ka haere i roto i nga ture iptables:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  6. Kei te mohio nga ture iptables karekau te ratonga i te noho me te whakakapi i tana wahitau IP ki tetahi o nga wahitau IP o nga pene e hono ana ki taua ratonga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  7. Ka whiwhi te tono i tetahi wahitau IP whaimana hei wahitau ūnga me te tukatuka i te tikanga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  8. I runga ano i te topology whatunga, ka tae te tono ki te pod:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

Ka taea e nga iptables te uta toenga?

Kao, ka whakamahia nga iptables mo te tātari, kaore i hangaia mo te whakataurite.

Heoi, ka taea te tuhi i tetahi huinga ture e mahi ana pseudo-balancer.

A koinei tonu te mea kua whakatinanahia ki Kubernetes.

Mēnā e toru ō pōro, mā kube-proxy e tuhi ngā ture e whai ake nei:

  1. Tīpakohia te iti tuatahi me te 33% te tūponotanga, ki te kore haere ki te ture e whai ake nei.
  2. Kōwhiria te tuarua me te 50% te tūponotanga, ki te kore haere ki te ture e whai ake nei.
  3. Tīpakohia te tuatoru i raro.

Ko tenei punaha ka kowhiria ia pene me te 33%.

Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

A kaore he taurangi ka kowhiria te Pod 2 i muri mai i te Pod 1.

parau: Ka whakamahia e te iptables tetahi waahanga tatauranga me te tohatoha matapōkere. No reira, ko te taurite algorithm e ahu mai ana i runga i te kowhiringa matapōkere.

Inaianei kua mohio koe ki te mahi o nga ratonga, me titiro ki nga ahuatanga ratonga whakamere.

Ko nga hononga roa i Kubernetes e kore e tauine ma te taunoa

Ko ia tono HTTP mai i mua ki te tuara ka tukuna e tetahi hononga TCP motuhake, ka whakatuwherahia, ka kati.

Mena ka tukuna e te pito o mua nga tono 100 mo ia hekona ki te pito o muri, ka whakatuwherahia, ka kati nga hononga TCP rereke 100.

Ka taea e koe te whakaiti i te wa tukatuka tono me te utaina ma te whakatuwhera i tetahi hononga TCP me te whakamahi mo nga tono HTTP katoa e whai ake nei.

Kei te kawa HTTP tetahi ahuatanga e kiia ana ko te HTTP keep-alive, he hononga hono ranei. I tenei keehi, ka whakamahia he hononga TCP kotahi ki te tuku me te whiwhi i nga tono me nga whakautu HTTP maha:

Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

Ko tenei ahuatanga kaore i te whakahohea ma te taunoa: me whirihora te tūmau me te kiritaki.

Ko te tatūnga ake he maamaa me te waatea mo te nuinga o nga reo hotaka me nga taiao.

Anei etahi hononga ki nga tauira i roto i nga reo rereke:

Ka aha mena ka whakamahi tatou i te noho-ora i roto i te ratonga Kubernetes?
Me whakaaro kei te tautoko te pito o mua me te tuara kia ora tonu.

Kotahi te kape o te pito o mua me te toru o nga kape o te tuara. Ko te pito o mua te tono tuatahi me te whakatuwhera i tetahi hononga TCP ki te tuara. Ka tae atu te tono ki te ratonga, ka tohua tetahi o nga putunga o muri hei wahitau ūnga. Ka tukuna e te tuara he whakautu, ka riro mai i te pito o mua.

Kaore i rite ki nga ahuatanga o mua ka kati te hononga TCP i muri i te whiwhi urupare, ka noho tuwhera inaianei mo etahi atu tono HTTP.

Ka aha mena ka tukuna e te pito o mua nga tono ki te tuara?

Hei tuku i enei tono, ka whakamahia he hononga TCP tuwhera, ka haere nga tono katoa ki te tuara kotahi i haere ai te tono tuatahi.

Karekau ranei nga iptables e tohatoha ano i nga waka?

Kaore i tenei keehi.

Ina hangahia he hononga TCP, ka haere ki roto i nga ture iptables, ka kowhiri i tetahi tuara motuhake ka haere te waka.

I te mea ko nga tono katoa o muri mai kei runga i te hononga TCP kua tuwhera, kua kore e karangahia nga ture iptables.

Kia kite tatou he aha te ahua.

  1. Ka tukuna e te pod tuatahi he tono ki te ratonga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  2. Kua mohio koe he aha nga mea ka pa mai. Karekau te ratonga, engari he ture iptables hei tukatuka i te tono:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  3. Ka kowhiria tetahi o nga putunga o muri hei wahitau ūnga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  4. Ka tae te tono ki te poti. I tenei wa, ka whakapumautia he hononga TCP pumau i waenga i nga putunga e rua:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  5. Ko nga tono o muri mai i te pona tuatahi ka haere ma te hononga kua oti te whakarite:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

Ko te hua he tere ake te wa whakautu me te whakaputanga teitei ake, engari ka ngaro koe i te kaha ki te tauine i te tuara.

Ahakoa e rua nga pene kei te tuara, me te hono tonu, ka haere tonu nga waka ki tetahi o aua mea.

Ka taea tenei te whakatika?

I te mea kaore a Kubernetes e mohio ki te whakataurite i nga hononga pumau, ka taka tenei mahi ki a koe.

Ko nga ratonga he kohinga o nga wahitau IP me nga tauranga e kiia ana ko nga pito mutunga.

Ka taea e to tono te tiki rarangi o nga pito mutunga mai i te ratonga me te whakatau me pehea te tohatoha tono ki waenga i a raatau. Ka taea e koe te whakatuwhera i tetahi hononga tohe ki ia pod me nga tono taurite i waenga i enei hononga ma te whakamahi i te round-robin.

Tono atu ranei hātepe taurite matatini.

Ko te waehere taha-kiritaki e mau ana ki te whakataurite me whai i tenei arorau:

  1. Tikina he rarangi o nga pito mutunga mai i te ratonga.
  2. Tuwhera he hononga tohe mo ia pito mutunga.
  3. Ina hiahia tono, whakamahia tetahi o nga hononga tuwhera.
  4. Whakahouhia te rarangi o nga pito mutunga, hangaia he mea hou, katia ranei nga hononga tawhito tawhito mena ka huri te rarangi.

Ka penei te ahua.

  1. Engari ki te tuku tono tuatahi ki te ratonga, ka taea e koe te whakataurite i nga tono ki te taha o te kiritaki:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  2. Me tuhi koe i te waehere e patai ana ko wai nga putunga he waahanga o te ratonga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  3. Kia whiwhi koe i te rarangi, tiakina ki te taha o te kiritaki ka whakamahi hei hono atu ki nga poti:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

  4. Kei a koe te kawenga mo te huringa taurite kawenga:

    Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

Inaianei ka puta ake te patai: ka pa noa tenei raru ki te HTTP kia ora tonu?

Taurite kawenga taha Kiritaki

Ehara ko HTTP anake te kawa ka taea te whakamahi i nga hononga TCP pumau.

Mena ka whakamahia e to tono he papaa raraunga, karekau he hononga TCP e tuwhera i nga wa katoa e hiahia ana koe ki te tono tono, ki te tiki tuhinga ranei mai i te papaaarangi. 

Engari, ka whakatuwherahia, ka whakamahia he hononga TCP tohe ki te papaaarangi.

Mēnā ka horahia tō pātengi raraunga ki runga i ngā Kubernetes, ā, ka tukuna te uru hei ratonga, ka tūtaki koe i ngā raru e whakaahuatia ana i te wāhanga o mua.

Ka nui ake te utaina o tetahi tauira raraunga i era atu. Karekau a Kube-proxy me Kubernetes e awhina ki te whakataurite i nga hononga. Me whai whakaaro koe ki te whakataurite i nga patai ki to papaunga raraunga.

I runga i te whare pukapuka e whakamahia ana e koe ki te hono atu ki te paataka raraunga, he rereke pea nga whiringa hei whakaoti i tenei raru.

Kei raro nei he tauira mo te uru atu ki te kahui raraunga MySQL mai i Node.js:

var mysql = require('mysql');
var poolCluster = mysql.createPoolCluster();

var endpoints = /* retrieve endpoints from the Service */

for (var [index, endpoint] of endpoints) {
  poolCluster.add(`mysql-replica-${index}`, endpoint);
}

// Make queries to the clustered MySQL database

He maha atu nga kawa e whakamahi ana i nga hononga TCP pumau:

  • Tukutuku me nga Paetukutuku haumaru
  • HTTP / 2
  • gRPC
  • RSockets
  • AMQP

Me mohio koe ki te nuinga o enei tikanga.

Engari mena he tino rongonui enei kawa, he aha te take karekau he otinga whakataurite? He aha te take me huri te arorau a te kiritaki? He otinga Kubernetes taketake?

Kua hoahoatia te Kube-proxy me nga iptables ki te kapi i te nuinga o nga keehi whakamahi noa i te wa e tuku ana ki a Kubernetes. He pai tenei.

Mena kei te whakamahi koe i tetahi ratonga tukutuku e whakaatu ana i te REST API, kei te waimarie koe - i tenei keehi, kaore e whakamahia nga hononga TCP tohe, ka taea e koe te whakamahi i tetahi ratonga Kubernetes.

Engari ka timata koe ki te whakamahi i nga hononga TCP tohe, me whakaaro koe me pehea te tohatoha i te kawenga puta noa i nga pito o muri. Ko nga Kubernetes kaore he otinga kua rite mo tenei keehi.

Heoi ano, he maha nga whiringa ka taea te awhina.

Te whakataurite i nga hononga roa i Kubernetes

E wha nga momo ratonga kei Kubernetes:

  1. RōpūIP
  2. TaurangiPort
  3. LoadBalancer
  4. Te upoko

Ko nga ratonga tuatahi e toru e mahi ana i runga i te wahitau IP mariko, e whakamahia ana e te kube-proxy ki te hanga ture iptables. Engari ko te kaupapa matua o nga ratonga katoa he ratonga upoko kore.

Ko te ratonga upoko kore he wahitau IP e hono ana ki a ia, ka tukuna noa he tikanga mo te tiki i te rarangi o nga wahitau IP me nga tauranga o nga pona (nga pito) e hono ana.

Ko nga ratonga katoa kei runga i te ratonga upoko kore.

He ratonga upoko kore te ratonga ClusterIP me etahi taapiri: 

  1. Ka whakawhiwhia e te paparanga whakahaere he wahitau IP.
  2. Ka hangaia e Kube-proxy nga ture iptables e tika ana.

Ma tenei ka taea e koe te wareware i te kube-proxy me te whakamahi tika i te rarangi o nga tohu mutunga i riro mai i te ratonga upoko kore ki te uta i te toenga o to tono.

Engari me pehea e taea ai e tatou te taapiri i nga whakaaro rite ki nga tono katoa kua tukuna ki roto i te roopu?

Mena kua tukuna kee to tono, kare pea e taea tenei mahi. Heoi ano, he whiringa kee.

Ka awhina koe i a Service Mesh

Kua kite pea koe he tino paerewa te rautaki whakataurite kawenga taha-kiritaki.

Ka timata te tono, ka:

  1. Ka whiwhi rarangi o nga wahitau IP mai i te ratonga.
  2. Ka whakatuwhera me te pupuri i tetahi puna hononga.
  3. Whakahouhia te puna wai ma te taapiri, te tango ranei i nga pito mutunga.

Ina hiahia te tono ki te tono tono, ka:

  1. Ka whiriwhiri i tetahi hononga e waatea ana ma te whakamahi i etahi arorau (hei tauira, round-robin).
  2. Ka mahia te tono.

Ka mahi enei mahi mo nga hononga WebSockets, gRPC, me te AMQP.

Ka taea e koe te wehe i tenei arorau ki tetahi whare pukapuka motuhake ka whakamahi i roto i o tono.

Heoi, ka taea e koe te whakamahi meshes ratonga penei i a Istio, Linkerd ranei.

Ka whakanuia e te Service Mesh to tono me te tukanga e:

  1. Ka rapu aunoa mo nga wahitau IP ratonga.
  2. Ka whakamatau i nga hononga penei i te WebSockets me te gRPC.
  3. Whakatauritehia nga tono ma te whakamahi i te kawa tika.

Ka awhina a Service Mesh ki te whakahaere i nga waka i roto i te roopu, engari he tino kaha rawa. Ko etahi atu whiringa kei te whakamahi i nga whare pukapuka tuatoru penei i a Netflix Ribbon, i nga takawaenga ka taea te whakarite pera i te Envoy.

Ka aha mena ka wareware koe ki te whakataurite i nga take?

Ka taea e koe te kowhiri kia kaua e whakamahi i te whakataurite kawenga me te kore e kite i nga huringa. Kia titiro tatou ki etahi ahuatanga mahi.

Mena he maha ake o kaihoko atu i nga kaitoro, ehara tenei i te raru nui.

Me kii e rima nga kaihoko e hono ana ki nga kaitoro e rua. Ahakoa karekau he taurite, ka whakamahia nga tūmau e rua:

Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

Kaore pea nga hononga e tohatoha noa: e wha pea nga kaihoko e hono ana ki te tūmau kotahi, engari he pai te tupono ka whakamahia nga tūmau e rua.

Ko te mea tino raruraru ko te ahua ke.

Mena he iti ake o kaihoko me te maha atu o nga kaitoro, ka iti te whakamahi o o rauemi, ka puta mai he kohanga pounamu.

Me kii e rua nga kaihoko me nga kaitoro e rima. I roto i te take pai, ka rua nga hononga pumau ki nga tūmau e rua mai i te rima.

Ka noho mangere nga toenga tūmau:

Whakataurite uta me te whakanui i nga hononga roa i Kubernetes

Ki te kore e taea e enei tūmau e rua te whakahaere i nga tono a te kiritaki, ka kore te whakatauine whakapae e awhina.

mutunga

Kua hoahoatia nga ratonga Kubernetes kia mahi i roto i te nuinga o nga ahuatanga o te tono paetukutuku paerewa.

Heoi, ka timata koe ki te mahi me nga kawa tono e whakamahi ana i nga hononga TCP mau tonu, penei i nga papaunga raraunga, gRPC, WebSockets ranei, kua kore e pai nga ratonga. Karekau a Kubernetes e whakarato i nga tikanga o roto mo te whakataurite i nga hononga TCP pumau.

Ko te tikanga me tuhi koe i nga tono me te whakaaro taurite ki te taha-kiritaki.

Whakamaoritanga na te kapa Kubernetes aaS mai i Mail.ru.

He aha atu hei panui mo te kaupapa:

  1. E toru nga taumata o te tauine-aunoa i Kubernetes me pehea te whakamahi tika
  2. Kubernetes i roto i te wairua o te kaipahua me te tauira mo te whakatinanatanga.
  3. To tatou hongere Telegram mo te huringa mamati.

Source: will.com

Tāpiri i te kōrero