Ke hana ʻana i kahi kahua kubernetes ma Pinterest

I loko o nā makahiki, ua hana nā mea hoʻohana 300 miliona o Pinterest ma mua o 200 biliona pine ma mua o 4 biliona papa. No ka lawelawe ʻana i kēia pūʻali o nā mea hoʻohana a me ka waihona ʻike nui, ua hoʻomohala ka portal i nā kaukani o nā lawelawe, mai nā microservices hiki ke mālama ʻia e kekahi mau CPU, i nā monoliths nunui e holo ana ma nā ʻauwaʻa holoʻokoʻa o nā mīkini virtual. A laila hiki mai ka manawa i hāʻule ai nā maka o ka hui ma k8s. No ke aha i maikaʻi ai ka "cube" ma Pinterest? E aʻo ʻoe e pili ana i kēia mai kā mākou unuhi ʻana i kahi ʻatikala hou mai blog Pinterest ʻenehana.

Ke hana ʻana i kahi kahua kubernetes ma Pinterest

No laila, he mau haneli miliona o nā mea hoʻohana a me nā haneli miliona o nā pine. No ka lawelawe ʻana i kēia pūʻali o nā mea hoʻohana a me ka waihona ʻike nui, ua kūkulu mākou i nā kaukani o nā lawelawe, mai nā microservices hiki ke mālama ʻia e kekahi mau CPU, a hiki i nā monolith nunui e holo ana ma nā ʻauwaʻa holoʻokoʻa o nā mīkini virtual. Eia kekahi, loaʻa iā mākou nā ʻano hana like ʻole e koi ai i ka CPU, ka hoʻomanaʻo, a i ʻole ke komo I/O.

I ka mālama ʻana i kēia zoo o nā mea hana, ke kū nei ka hui hoʻomohala i nā pilikia he nui:

  • ʻAʻohe ala like ʻole no ka poʻe ʻenekinia e holo i kahi ʻano hana. Hoʻokumu ʻia nā lawelawe mokuʻāina ʻole, nā lawelawe Stateful a me nā papahana ma lalo o ka hoʻomohala ʻana ma luna o nā waihona ʻenehana ʻokoʻa loa. Ua alakaʻi kēia i ka hoʻokumu ʻana i kahi papa hoʻomaʻamaʻa holoʻokoʻa no nā mea ʻenekinia, a paʻakikī pū kekahi i ka hana o kā mākou hui ʻoihana.
  • Hoʻokumu nā mea hoʻomohala me kā lākou ʻauwaʻa ponoʻī o nā mīkini virtual i kahi kaumaha nui ma luna o nā luna hoʻomalu kūloko. ʻO ka hopena, ʻo nā hana maʻalahi e like me ka hoʻonui ʻana i ka OS a i ʻole AMI e lawe i nā pule a me nā mahina. Ke alakaʻi nei kēia i ka hoʻonui ʻana i ka hana i nā kūlana i kēlā me kēia lā.
  • Paʻakikī i ka hana ʻana i nā mea hana hoʻokele waiwai honua ma luna o nā hoʻonā i loaʻa. ʻOi aku ka paʻakikī o ke kūlana ma ka ʻike ʻana ʻaʻole maʻalahi ka loaʻa ʻana o nā mea nona nā mīkini virtual. ʻO ia hoʻi, ʻaʻole maopopo iā mākou inā hiki ke hoʻoneʻe ʻia kēia mana no ka hana ma nā wahi ʻē aʻe o kā mākou ʻoihana.

ʻO nā ʻōnaehana orchestration pahu kahi ala e hoʻohui i ka hoʻokele hana. Wehe lākou i ka puka no ka hoʻonui ʻana i ka wikiwiki o ka hoʻomohala ʻana a hoʻomaʻamaʻa i ka hoʻokele waiwai, no ka mea, mālama ʻia nā kumuwaiwai āpau e pili ana i ka papahana e hoʻokahi ʻōnaehana kikowaena.

Ke hana ʻana i kahi kahua kubernetes ma Pinterest

Kiʻi 1: ʻO nā mea nui o ka ʻoihana (kūpono, hana hoʻomohala, a me ka pono).

Ua ʻike ka hui Cloud Management Platform ma Pinterest i nā K8 i 2017. Ma ka hapa mua o 2017, ua kākau mākou i ka hapa nui o kā mākou hana hana, me ka API a me kā mākou mau kikowaena pūnaewele āpau. Ma hope iho, ua hana mākou i kahi loiloi piha o nā ʻōnaehana like ʻole no ka hoʻonohonoho ʻana i nā hoʻonā ipu, ke kūkulu ʻana i nā pūʻulu a me ka hana pū me lākou. Ma ka hopena o 2017, ua hoʻoholo mākou e hoʻohana iā Kubernetes. Ua maʻalahi a kākoʻo nui ʻia i ke kaiāulu hoʻomohala.

I kēia lā, ua kūkulu mākou i kā mākou mau hāmeʻa puʻupuʻu puʻupuʻu e pili ana i nā Kops a ua neʻe aku i nā ʻāpana ʻenehana i loaʻa e like me ka networking, security, metrics, logging, identity management, a me ka hele ʻana i Kubernetes. Ua hoʻokō pū mākou i kahi ʻōnaehana hoʻohālike hana no kā mākou kumu waiwai, ka paʻakikī o ia mea i hūnā ʻia mai nā mea hoʻomohala. I kēia manawa ke nānā aku nei mākou i ka hōʻoia ʻana i ka paʻa o ka puʻupuʻu, ka hoʻonui ʻana a me ka hoʻopili ʻana i nā mea kūʻai aku hou.

Kubernetes: Ke ala Pinterest

ʻO ka hoʻomaka ʻana me Kubernetes ma ka pālākiō o Pinterest ma ke ʻano he kahua e makemake ai kā mākou poʻe ʻenekinia i hele mai me nā pilikia he nui.

Ma ke ʻano he hui nui, ua kālele nui mākou i nā mea hana ʻenehana. ʻO nā laʻana e pili ana i nā mea hana palekana e mālama ana i ka hoʻoili ʻana i ka palapala hōʻoia a me ka hāʻawi ʻana i nā kī, nā ʻāpana hoʻokele kaʻa, nā ʻōnaehana ʻike lawelawe, nā ʻāpana ʻike, a me nā ʻāpana hoʻouna a me nā metric. Ua hōʻiliʻili ʻia kēia mau mea a pau no ke kumu: ua hele mākou ma ke ala maʻamau o ka hoʻāʻo a me ka hewa, a no laila makemake mākou e hoʻohui i kēia mau mea hana a pau i ka ʻōnaehana hou ma Kubernetes ma kahi o ka hana hou ʻana i ka huila kahiko ma kahi kahua hou. Ua maʻalahi kēia ʻano hana i ka neʻe ʻana, no ka mea, aia nā kākoʻo noi āpau a ʻaʻole pono e hana ʻia mai ka ʻohi ʻana.

Ma ka ʻaoʻao ʻē aʻe, ʻaʻole lawa nā hiʻohiʻona wānana ukana ma Kubernetes ponoʻī (e like me ka hoʻolālā ʻana, nā hana, a me nā hoʻonohonoho Daemon) no kā mākou papahana. ʻO kēia mau pilikia hoʻohana he mea pale nui i ka neʻe ʻana i Kubernetes. No ka laʻana, ua lohe mākou i nā mea hoʻomohala lawelawe e hoʻopiʻi nei no ka nalo ʻana a i ʻole ka hewa o ka hoʻonohonoho ʻana. Ua loaʻa pū mākou i ka hoʻohana hewa ʻole ʻana i nā ʻenekini template, i ka wā i hana ʻia ai nā haneli o nā kope me ka kikoʻī like a me ka hana, a ua hopena i nā pilikia debugging pōʻino.

He mea paʻakikī hoʻi ka mālama ʻana i nā mana like ʻole i ka pūʻulu hoʻokahi. E noʻonoʻo i ka paʻakikī o ke kākoʻo o ka mea kūʻai aku inā pono ʻoe e hana i ka manawa like i nā mana he nui o ka ʻano holo manawa like, me nā pilikia āpau, nā pōpoki a me nā mea hou.

Pinterest nā mea hoʻohana a me nā mea hoʻomalu

I mea e maʻalahi ai kā mākou poʻe ʻenekinia e hoʻokō i nā Kubernetes, a me ka maʻalahi a me ka wikiwiki i kā mākou ʻoihana, ua kūkulu mākou i kā mākou wehewehe kumu waiwai ponoʻī (CRDs).

Hāʻawi nā CRD i kēia mau hana:

  1. Ka hoʻohui ʻana i nā kumuwaiwai Kubernetes ʻōiwi like ʻole i hana lākou ma ke ʻano he hana hoʻokahi. No ka laʻana, loaʻa i ka punaewele PinterestService kahi hoʻolālā, kahi lawelawe komo, a me kahi palapala hoʻonohonoho. ʻAe kēia i nā mea hoʻomohala ʻaʻole hopohopo e pili ana i ka hoʻonohonoho DNS.
  2. E hoʻokō i ke kākoʻo noi pono. Pono ka mea hoʻohana e nānā wale i ka kikoʻī pahu e like me kā lākou loiloi ʻoihana, aʻo ka mea hoʻokele CRD e hoʻokō i nā pahu init pono āpau, nā ʻano hoʻololi a me nā kikoʻī pod. Hāʻawi kēia i kahi pae ʻokoʻa o ka hōʻoluʻolu no nā mea hoʻomohala.
  3. Mālama pū nā mea hoʻoponopono CRD i ke ola o nā kumuwaiwai maoli a hoʻomaikaʻi i ka loaʻa debug. Hoʻopili kēia i ka hoʻoponopono ʻana i nā kikoʻī i makemake ʻia a me nā kikoʻī maoli, ka hoʻonui ʻana i ke kūlana CRD a me ka mālama ʻana i nā loina hanana, a me nā mea hou aku. Me ka ʻole o CRD, e koi ʻia nā mea hoʻomohala e hoʻokele i nā kumuwaiwai he nui, e hoʻonui wale ai i ka hewa.

Eia kekahi laʻana o kahi PinterestService a me kahi kumuwaiwai kūloko i mālama ʻia e kā mākou mea hoʻoponopono:

Ke hana ʻana i kahi kahua kubernetes ma Pinterest

E like me kāu e ʻike ai ma luna, no ke kākoʻo ʻana i kahi pahu maʻamau pono mākou e hoʻohui i kahi pahu init a me kekahi mau mea hoʻohui e hoʻolako i ka palekana, ʻike ʻia, a me ka ʻoihana pūnaewele. Eia kekahi, ua hana mākou i nā palapala palapala hoʻonohonoho hoʻonohonoho a hoʻokō i ke kākoʻo no nā mamana PVC no nā hana puʻupuʻu, a me ka nānā ʻana i nā ʻano hoʻololi kaiapuni he nui e nānā i ka ʻike, ka hoʻohana waiwai, a me ka hōʻiliʻili ʻōpala.

He mea paʻakikī ke noʻonoʻo e makemake ana nā mea hoʻomohala e kākau i kēia mau faila hoʻonohonoho ma ka lima me ke kākoʻo ʻole o CRD, e waiho wale i ka mālama a me ka debug i nā hoʻonohonoho.

Kaʻina hana hoʻolālā noi

Ke hana ʻana i kahi kahua kubernetes ma Pinterest

Hōʻike ke kiʻi ma luna aʻe pehea e kau ai i kahi kumuwaiwai maʻamau Pinterest i kahi pūʻulu Kubernetes:

  1. Hoʻopili nā mea hoʻomohala me kā mākou hui Kubernetes ma o ka CLI a me ka mea hoʻohana.
  2. Hoʻihoʻi nā mea hana CLI/UI i nā faila YAML hoʻonohonoho kaʻina hana a me nā waiwai kūkulu ʻē aʻe (ID version like) mai Artifactory a laila e hoʻouna iā lākou i ka Service Submission Service. Mālama kēia ʻanuʻu i ka hāʻawi ʻia ʻana o nā mana hana i ka pūʻulu.
  3. He ʻīpuka ʻo JSS no nā paepae like ʻole, me nā Kubernetes. Maʻaneʻi ua hōʻoia ʻia ka mea hoʻohana, hoʻopuka ʻia nā quota a nānā ʻia ka hoʻonohonoho ʻana o kā mākou CRD.
  4. Ma hope o ka nānā ʻana i ka CRD ma ka ʻaoʻao JSS, hoʻouna ʻia ka ʻike i ka API platform k8s.
  5. Mālama kā mākou mea hoʻoponopono CRD i nā hanana ma nā kumuwaiwai mea hoʻohana āpau. Hoʻololi ia i nā CR i nā kumuwaiwai k8s maoli, hoʻohui i nā modula e pono ai, hoʻonohonoho i nā ʻano hoʻololi kaiapuni kūpono, a hana i nā hana kākoʻo ʻē aʻe e hōʻoia i ka loaʻa ʻana o ke kākoʻo o nā mea hoʻohana pahu pahu.
  6. Hāʻawi ka mea hoʻoponopono CRD i ka ʻikepili i loaʻa i ka Kubernetes API i hiki ke hana ʻia e ka mea hoʻonohonoho a hoʻokomo i ka hana.

i hoʻopuka: Ua hoʻokumuʻia kēia kaʻina hana mua o ka hoʻolālāʻana no nā mea hoʻohana mua o ka papahana k8s hou. Ke hana nei mākou i ka hoʻomaʻemaʻe ʻana i kēia kaʻina hana e hoʻohui piha me kā mākou CI/CD hou. ʻO ia hoʻi ʻaʻole hiki iā mākou ke haʻi iā ʻoe i nā mea āpau e pili ana iā Kubernetes. Manaʻo mākou i ka haʻi ʻana i kā mākou ʻike a me ka holomua o ka hui ma kēia ʻaoʻao ma kā mākou pou blog e hiki mai ana, "Ke kūkulu ʻana i kahi kahua CI/CD no Pinterest."

Nā ʻano waiwai kūikawā

Ma muli o nā pono kikoʻī o Pinterest, ua kūkulu mākou i kēia mau CRD e kūpono i nā kaʻina hana like ʻole:

  • ʻO PinterestService nā lawelawe mokuʻāina ʻole i holo lōʻihi. Hoʻokumu ʻia ka nui o kā mākou ʻōnaehana kumu ma kahi hoʻonohonoho o ia mau lawelawe.
  • Hoʻohālike ʻo PinterestJobSet i nā hana puʻupuʻu holoʻokoʻa. ʻO kahi hiʻohiʻona maʻamau ma Pinterest ʻo ia ka holo ʻana o nā hana he nui i nā pahu like i ka like, me ka nānā ʻole i nā kaʻina hana like ʻole.
  • Hoʻohana nui ʻia ʻo PinterestCronJob me nā ukana liʻiliʻi. He wīwī kēia no ka hana cron maoli me nā mīkini kākoʻo Pinterest nona ke kuleana no ka palekana, kaʻahele, nā lāʻau a me nā ana.
  • PinterestDaemon komo nā Daemons. Ke hoʻomau nei ka ulu ʻana o kēia ʻohana ke hoʻohui mākou i ke kākoʻo hou aku i kā mākou hui.
  • Hoʻonui ʻia ʻo PinterestTrainingJob i nā kaʻina Tensorflow a me Pytorch, e hāʻawi ana i ka pae like o ke kākoʻo manawa holo e like me nā CRD ʻē aʻe. No ka hoʻohana ikaika ʻana o Pinterest iā Tensorflow a me nā ʻōnaehana aʻo mīkini ʻē aʻe, loaʻa iā mākou ke kumu e kūkulu ai i kahi CRD ʻokoʻa a puni lākou.

Ke hana pū nei mākou ma PinterestStatefulSet, e hoʻololi koke ʻia no nā hale waihona ʻikepili a me nā ʻōnaehana stateful ʻē aʻe.

Kākoʻo manawa holo

Ke holo ka pod noi ma nā Kubernetes, loaʻa iā ia kahi palapala hōʻoia e hoʻomaopopo iā ia iho. Hoʻohana ʻia kēia palapala hōʻoia no ke komo ʻana i kahi waihona huna a i ʻole e kamaʻilio me nā lawelawe ʻē aʻe ma o mTLS. I kēia manawa, e hoʻoiho ka Container Init Configurator a me Daemon i nā hilinaʻi āpau e pono ai ma mua o ka holo ʻana i ka noi containerized. Ke mākaukau nā mea a pau, e hoʻopaʻa inoa ka sidecar a me Daemon i ka helu IP o ka module me kā mākou Zookeeper i hiki i nā mea kūʻai ke ʻike. E hana kēia mau mea a pau no ka mea ua hoʻonohonoho ʻia ka module network ma mua o ka hoʻomaka ʻana o ka noi.

ʻO nā mea i luna nei he mau hiʻohiʻona maʻamau o ke kākoʻo runtime no nā haʻahaʻa hana. Pono paha nā ʻano hana ʻē aʻe i ke kākoʻo ʻokoʻa, akā hele mai lākou a pau ma ke ʻano o nā sidecars pod-level, node-level a i ʻole nā ​​Daemons level machine virtual. Hoʻopaʻa mākou e kau ʻia kēia mau mea a pau i loko o ka ʻōnaehana hoʻokele a paʻa i nā noi, ʻo ia ka mea e hōʻemi nui ai i ke kaumaha ma ke ʻano o ka hana ʻenehana a me ke kākoʻo o nā mea kūʻai aku.

Ka ho'āʻo a me ka QA

Ua kūkulu mākou i kahi paipu hoʻāʻo hope-a-hope ma luna o nā ʻōnaehana hoʻāʻo Kubernetes e kū nei. Pili kēia mau ho'āʻo ʻana i kā mākou hui āpau. Ua hele kā mākou pipeline i nā hoʻoponopono hou ma mua o ka lilo ʻana i ʻāpana o ka pūʻulu huahana.

Ma waho aʻe o nā ʻōnaehana hoʻāʻo, loaʻa iā mākou ka nānā ʻana a me nā ʻōnaehana makaʻala e nānā mau i ke kūlana o nā ʻāpana ʻōnaehana, ka hoʻohana ʻana i nā kumuwaiwai a me nā hōʻailona koʻikoʻi ʻē aʻe, e hoʻolaha wale iā mākou inā pono ke komo ʻana o ke kanaka.

Nā meaʻokoʻa

Ua nānā mākou i kekahi mau mea ʻē aʻe i nā kumuwaiwai maʻamau, e like me ka mutation access controllers a me nā ʻōnaehana template. Eia naʻe, hele mai lākou a pau me nā luʻina hana koʻikoʻi, no laila ua koho mākou i ke ala CRD.

Ua hoʻohana ʻia kahi mea hoʻoponopono hoʻololi e hoʻolauna i nā sidecars, nā ʻano hoʻololi kaiapuni, a me nā kākoʻo holo manawa ʻē aʻe. Eia naʻe, ua kū i nā pilikia like ʻole, e like me ka hoʻopaʻa ʻana i nā kumuwaiwai a me ka hoʻokele ola ʻana, kahi i kū ʻole ai ia mau pilikia ma CRD.

'Ōlelo Aʻo: Hoʻohana nui ʻia nā ʻōnaehana template e like me nā pakuhi Helm e holo i nā noi me nā hoʻonohonoho like. Eia nō naʻe, ʻokoʻa loa kā mākou noi hana no ka mālama ʻana me ka hoʻohana ʻana i nā templates. Ma ka hoʻomau mau ʻana, nui nā hewa i ka hoʻohana ʻana i nā templates.

Ka hana e hiki mai ana

Ke hana nei mākou i kēia manawa me ka ukana huikau ma waena o kā mākou hui āpau. No ke kākoʻo ʻana i nā kaʻina hana o nā ʻano like ʻole a me nā nui, hana mākou ma nā wahi aʻe:

  • Hāʻawi kahi hōʻiliʻili o nā puʻupuʻu i nā noi nui ma nā hui like ʻole no ka scalability a me ka paʻa.
  • E hōʻoia i ka paʻa ʻana o ka puʻupuʻu, scalability a me ka ʻike e hana i ka hoʻopili ʻana i ka noi a me nā SLA.
  • Ka mālama ʻana i nā kumuwaiwai a me nā puʻupuʻu i ʻole e kūʻē nā noi kekahi i kekahi, a mālama ʻia ka pālākiō o ka pūʻulu ma kā mākou ʻaoʻao.
  • He kahua CI/CD hou no ke kākoʻo ʻana a me ka lawe ʻana i nā noi ma nā Kubernetes.

Source: www.habr.com

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