Nā kiʻi i hoʻomākaukau ʻia no k8s

ʻO kēia moʻolelo e pili ana i ke ʻano o kā mākou hoʻohana ʻana i nā ipu i loko o kahi hana hana, ʻo ia hoʻi ʻo Kubernetes. Hoʻolaʻa ka ʻatikala i ka ʻohi ʻana i nā metric a me nā lāʻau mai nā pahu, a me ke kūkulu ʻana i nā kiʻi.

Nā kiʻi i hoʻomākaukau ʻia no k8s

No mākou mai ka hui fintech ʻo Exness, nāna e hoʻomohala i nā lawelawe no ke kālepa pūnaewele a me nā huahana fintech no B2B a me B2C. He nui nā hui like ʻole o kā mākou R&D, ʻo ka ʻoihana hoʻomohala he 100+ mau limahana.

Ke kū nei mākou i ka hui i kuleana no ka paepae no kā mākou mea hoʻomohala e hōʻiliʻili a holo i ka code. ʻO ka mea kūikawā, na mākou ke kuleana no ka hōʻiliʻili, mālama ʻana a me ka hōʻike ʻana i nā metric, log, a me nā hanana mai nā noi. Ke hana nei mākou i kēia manawa ma kahi o ʻekolu kaukani pahu Docker i loko o kahi ʻenehana hana, mālama i kā mākou waihona ʻikepili nui 50 TB, a hāʻawi i nā hoʻonā hale kūkulu i kūkulu ʻia a puni kā mākou ʻoihana: Kubernetes, Rancher, a me nā mea hoʻolako kapuaʻi lehulehu. 

ʻO kā mākou hoʻoikaika

He aha ke ahi? ʻAʻohe mea hiki ke pane. Aia i hea ke kapuahi? He paʻakikī ke hoʻomaopopo. I ka manawa hea i wela ai ke ahi? Hiki iā ʻoe ke ʻike, akā ʻaʻole koke. 

Nā kiʻi i hoʻomākaukau ʻia no k8s

No ke aha ke kū nei kekahi mau pahu a ua hāʻule kekahi? ʻO wai ka pahu i hewa? Ma hope o nā mea a pau, ua like ka waho o nā pahu, akā i loko o kēlā me kēia me kona Neo pono'ī.

Nā kiʻi i hoʻomākaukau ʻia no k8s

He poʻe akamai kā mākou mea hoʻomohala. Hana lākou i nā lawelawe maikaʻi e lawe mai i ka waiwai i ka ʻoihana. Akā aia nā hemahema ke hele hewa nā pahu me nā noi. Hoʻopau kekahi pahu i ka CPU nui, hoʻopau kekahi i ka pūnaewele, hoʻopau ke kolu i nā hana I/O, a ʻaʻole maopopo loa ka hā i kāna hana me nā kumu. Hāʻule nā ​​mea a pau a hāʻule ka moku. 

Na Agena

No ka hoʻomaopopo ʻana i ka mea e hana nei i loko, ua hoʻoholo mākou e kau pololei i nā mea hana i loko o nā pahu.

Nā kiʻi i hoʻomākaukau ʻia no k8s

Ke kāohi nei kēia mau ʻelele i nā polokalamu e mālama i nā pahu i kahi kūlana i ʻole lākou e uhaʻi kekahi i kekahi. Hoʻonohonoho ʻia nā Agents, a ʻae kēia i kahi ala kūpono i ka lawelawe ʻana i nā ipu. 

I kā mākou hihia, pono nā ʻelele e hāʻawi i nā lāʻau i kahi ʻano maʻamau, i kau ʻia a hoʻopaʻa ʻia. Pono lākou e hāʻawi iā mākou i nā metric maʻamau i hoʻonui ʻia mai kahi hiʻohiʻona noiʻi ʻoihana.

ʻO nā Agents kekahi mau pono no ka hana a me ka mālama ʻana i hiki ke hana i nā ʻōnaehana orkestra ʻokoʻa e kākoʻo ana i nā kiʻi like ʻole (Debian, Alpine, Centos, etc.).

ʻO ka mea hope loa, pono e kākoʻo nā ʻelele i ka CI/CD maʻalahi me nā faila Docker. A i ʻole, e hāʻule ka moku, no ka mea, e hoʻomaka ana nā pahu e hāʻawi ʻia ma nā kaʻa "keke".

Kaʻina hana a me ka mea paahana kiʻi kiʻi

No ka mālama pono ʻana i nā mea āpau, pono e hahai ʻia kekahi ʻano kaʻina hana maʻamau. No laila, ua hoʻoholo mākou e hōʻiliʻili i nā ipu e nā ipu - ʻo kēia ka recursion.

Nā kiʻi i hoʻomākaukau ʻia no k8s

Eia nā pahu i hōʻike ʻia e nā outline paʻa. I ka manawa like, ua hoʻoholo lākou e hoʻokomo i nā pahu hāʻawi i loko o lākou i "ʻaʻole like ke ola me nā raspberry." No ke aha i hana ʻia ai kēia, e wehewehe mākou ma lalo nei.
 
ʻO ka hopena he mea hana kūkulu—he pahu kikoʻī kikoʻī e kuhikuhi ana i nā mana hoʻolaha kikoʻī a me nā mana kikoʻī kikoʻī.

Pehea mākou e hoʻohana ai? Loaʻa iā mākou kahi Docker Hub i loaʻa kahi pahu. Hoʻohālikelike mākou iā ia i loko o kā mākou ʻōnaehana e hoʻopau i nā hilinaʻi o waho. ʻO ka hopena he pahu i kaha ʻia i ka melemele. Hana mākou i kahi laʻana e hoʻokomo i nā māhele a pau a me nā palapala e pono ai mākou i loko o ka ipu. Ma hope o kēlā, hōʻuluʻulu mākou i kahi kiʻi mākaukau e hoʻohana: hoʻokomo nā mea hoʻomohala i nā code a me kekahi o kā lākou mau hilinaʻi kūikawā i loko. 

He aha ka maikaʻi o kēia ala? 

  • ʻO ka mua, ka mana piha o nā mea hana kūkulu - kūkulu ipu, palapala a me nā mana hoʻolaha. 
  • ʻO ka lua, ua hoʻokō mākou i ka standardization: hana mākou i nā templates, waena a me ka mākaukau hoʻohana kiʻi ma ke ʻano like. 
  • ʻO ke kolu, hāʻawi nā pahu iā mākou i ka portability. I kēia lā, hoʻohana mākou iā Gitlab, a ʻapōpō e hoʻololi mākou i TeamCity a i ʻole Jenkins a hiki iā mākou ke holo i kā mākou mau ipu ma ke ʻano like. 
  • ʻO ka hā, e hōʻemi i nā hilinaʻi. ʻAʻole ia he mea kūpono ʻole i hoʻokomo mākou i nā pahu hāʻawi i loko o ka pahu, no ka mea hiki iā mākou ke pale i ka hoʻoiho ʻana iā lākou mai ka Pūnaewele i kēlā me kēia manawa. 
  • ʻO ka lima, ua hoʻonui ʻia ka wikiwiki o ke kūkulu ʻana - ʻo ka loaʻa ʻana o nā kope kūloko o nā kiʻi e hiki ai iā ʻoe ke pale aku i ka manawa ma ka hoʻoiho ʻana, no ka mea aia kahi kiʻi kūloko. 

I nā huaʻōlelo ʻē aʻe, ua hoʻokō mākou i kahi kaʻina hui hoʻomalu a maʻalahi. Hoʻohana mākou i nā mea hana like no ke kūkulu ʻana i nā pahu piha piha. 

Pehea e hana ai kā mākou hana kūkulu

Nā kiʻi i hoʻomākaukau ʻia no k8s

Hoʻomaka ʻia ka hui me hoʻokahi kauoha, hana ʻia ke kaʻina hana ma ke kiʻi (i hōʻike ʻia i ka ʻulaʻula). Loaʻa i ka mea hoʻomohala kahi faila Docker (i hōʻike ʻia i ka melemele), hāʻawi mākou iā ia, e hoʻololi i nā ʻano me nā waiwai. A ma ke ala, hoʻohui mākou i nā poʻo a me nā wāwae - ʻo kā mākou mau ʻelele kēia. 

Hoʻohui ke poʻo i nā māhele mai nā kiʻi pili. A hoʻokomo ka footer i kā mākou lawelawe i loko, hoʻonohonoho i ka hoʻomaka ʻana o ka hana, logging a me nā mea hana ʻē aʻe, hoʻololi i ka helu komo, etc. 

Nā kiʻi i hoʻomākaukau ʻia no k8s

Ua noʻonoʻo mākou no ka manawa lōʻihi inā e hoʻokomo i kahi luna. I ka hopena, ua hoʻoholo mākou e pono mākou iā ia. Ua koho mākou iā S6. Hāʻawi ka luna hoʻomalu i ka hoʻokele ipu: hiki iā ʻoe ke hoʻopili iā ia inā hāʻule ke kaʻina hana nui a hāʻawi i ka hoʻokele lima o ka ipu me ka hana ʻole ʻana. ʻO nā logs a me nā metric nā kaʻina e holo nei i loko o ka ipu. Pono lākou e hoʻomalu ʻia i kekahi ʻano, a hana mākou i kēia me ke kōkua o kahi luna. ʻO ka hope, mālama ka S6 i ka mālama hale, ka hana hōʻailona a me nā hana ʻē aʻe.

No ka mea, hoʻohana mākou i nā ʻōnaehana orkestra ʻē aʻe, ma hope o ke kūkulu ʻana a me ka holo ʻana, pono e hoʻomaopopo ka ipu i ke ʻano o ia wahi a hana e like me ke kūlana. ʻo kahi laʻana:
ʻO kēia ka mea e hiki ai iā mākou ke kūkulu i hoʻokahi kiʻi a holo i loko o nā ʻōnaehana orkestra ʻokoʻa, a e hoʻokuʻu ʻia me ka noʻonoʻo ʻana i nā kikoʻī o kēia ʻōnaehana orkestra.

 Nā kiʻi i hoʻomākaukau ʻia no k8s

No ka pahu hoʻokahi, loaʻa iā mākou nā lāʻau kaʻina hana like ʻole ma Docker a me Kubernetes:

Nā kiʻi i hoʻomākaukau ʻia no k8s

Hoʻokō ʻia ka uku uku ma lalo o ka nānā ʻana o S6. E noʻonoʻo i ka ʻohi a me nā hanana - ʻo kēia kā mākou mau luna kuleana no nā lāʻau a me nā ana. ʻAʻole loaʻa iā Kubernetes, akā loaʻa iā Docker. No ke aha mai? 

Inā mākou e nānā i ka kikoʻī o ka "pod" (ma hope aku - Kubernetes pod), e ʻike mākou ua hoʻokō ʻia ka pahu hanana i loko o kahi pod, nona kahi pahu hōʻiliʻili ʻokoʻa e hana ana i ka hana o ka hōʻiliʻili ʻana i nā metric a me nā lāʻau. Hiki iā mākou ke hoʻohana i nā mana o Kubernetes: e holo ana i nā ipu i loko o hoʻokahi pod, i hoʻokahi kaʻina hana a/a i ʻole ke kikowaena pūnaewele. E hoʻolauna maoli i kāu mau ʻelele a hana i kekahi mau hana. A inā hoʻokuʻu ʻia ka pahu like ma Docker, e loaʻa iā ia nā mana like a pau e like me ka hoʻopuka ʻana, ʻo ia hoʻi, hiki iā ia ke hoʻopuka i nā lāʻau a me nā metric, no ka mea e hoʻokuʻu ʻia nā ʻelele i loko. 

Nā ana a me nā moʻolelo

He hana paʻakikī ka hāʻawi ʻana i nā metric a me nā lāʻau. Nui nā ʻano o kāna hoʻoholo.
Hoʻokumu ʻia ka ʻōnaehana no ka hoʻokō ʻana i ka uku, ʻaʻole no ka lawe nui ʻana i nā lāʻau. ʻO ia hoʻi, pono e hoʻokō ʻia kēia kaʻina hana me ka liʻiliʻi o nā pono waiwai pahu. Hoʻoikaika mākou e kōkua i kā mākou mea hoʻomohala: "E kiʻi i kahi pahu Docker Hub, holo ia, a hiki iā mākou ke hāʻawi i nā lāʻau." 

ʻO ka ʻaoʻao ʻelua ke kaupalena ʻana i ka nui o nā lāʻau. Inā loaʻa ka piʻi ʻana o ka nui o nā lāʻau i loko o kekahi mau pahu (e hoʻopuka ana ka noi i kahi pūʻulu i loko o kahi loop), piʻi ka ukana ma ka CPU, nā ala kamaʻilio, a me ka ʻōnaehana hoʻoponopono lāʻau, a pili kēia i ka hana o ka host ma ke ʻano he holoʻokoʻa a me nā ipu ʻē aʻe ma luna o ka mea hoʻokipa, a i kekahi manawa ke alakaʻi nei kēia i ka "hāʻule" o ka mea hoʻokipa. 

ʻO ke kolu o ka ʻaoʻao he mea pono ia e kākoʻo i nā ʻano hana hōʻiliʻili metric e like me ka hiki ma waho o ka pahu. Mai ka heluhelu ʻana i nā faila a me ke koho balota Prometheus-endpoint i ka hoʻohana ʻana i nā protocol kikoʻī.

A ʻo ka ʻaoʻao hope e hoʻemi i ka hoʻohana waiwai.

Ua koho mākou i kahi hoʻonā Go open source i kapa ʻia ʻo Telegraf. He mea hoʻohui honua kēia e kākoʻo ana ma mua o 140 mau ʻano o nā ala komo (input plugins) a me 30 mau ʻano o nā ala puka (output plugins). Ua hoʻopau mākou a i kēia manawa e haʻi mākou iā ʻoe pehea mākou e hoʻohana ai iā Kubernetes ma ke ʻano he laʻana. 

Nā kiʻi i hoʻomākaukau ʻia no k8s

E ʻōlelo kākou e kau ka mea hoʻomohala i kahi haʻahaʻa hana a loaʻa iā Kubernetes kahi noi e hana i kahi pod. I kēia manawa, hana ʻia kahi pahu i kapa ʻia ʻo Collector no kēlā me kēia pod (hoʻohana mākou i ka mutation webhook). ʻO ka mea hōʻiliʻili ko mākou luna. I ka hoʻomaka, hoʻonohonoho kēia pahu iā ia iho e hana pū me Prometheus a me ka ʻōnaehana hōʻiliʻili lāʻau.

  • No ka hana ʻana i kēia, hoʻohana ʻo ia i nā annotations pod, a ma muli o kāna ʻike, hana, e ʻōlelo, kahi Prometheus end-point; 
  • Ma muli o ka kikoʻī pod a me nā hoʻonohonoho pahu kikoʻī, hoʻoholo ia pehea e hāʻawi ai i nā lāʻau.

E hōʻiliʻili mākou i nā lāʻau ma o ka Docker API: pono nā mea hoʻomohala e hoʻokomo iā lākou i stdout a i ʻole stderr, a e hoʻokaʻawale ʻo Collector. ʻOhi ʻia nā lāʻau i loko o nā ʻāpana me kahi lohi e pale ai i ka hoʻouka ʻana o ka host. 

Hōʻiliʻili ʻia nā ana ma waena o nā manawa hana (kaʻina hana) i loko o nā pahu. Hoʻopili ʻia nā mea a pau: namespace, ma lalo, a pēlā aku, a laila hoʻohuli ʻia i ke ʻano Prometheus - a loaʻa no ka hōʻiliʻili ʻana (koe wale nā ​​lāʻau). Hoʻouna pū mākou i nā lāʻau, metric a me nā hanana iā Kafka a ʻoi aku:

  • Loaʻa nā lāʻau ma Graylog (no ka nānā ʻana i nā hiʻohiʻona);
  • Hoʻouna ʻia nā logs, metrics, nā hanana i Clickhouse no ka mālama lōʻihi.

Hana like nā mea a pau ma AWS, hoʻololi wale mākou iā Graylog me Kafka me Cloudwatch. Hoʻouna mākou i nā lāʻau ma laila, a ua kūpono nā mea a pau: ʻike koke ʻia i ka hui a me ka pahu. Pēlā nō ia no Google Stackdriver. ʻO ia hoʻi, hana kā mākou papahana ma ka hale me Kafka a ma ke ao. 

Inā ʻaʻohe Kubernetes me nā pods, ʻoi aku ka paʻakikī o ka hoʻolālā, akā hana ia ma nā loina like.

Nā kiʻi i hoʻomākaukau ʻia no k8s

Hoʻokō ʻia nā kaʻina hana like i loko o ka pahu, hoʻonohonoho ʻia lākou me ka hoʻohana ʻana iā S6. Ke holo nei nā kaʻina hana like i loko o ka pahu hoʻokahi.

A? Acoeuoaoa,

Ua hana mākou i kahi hopena piha no ke kūkulu ʻana a me ka hoʻokuʻu ʻana i nā kiʻi, me nā koho no ka hōʻiliʻili a me ka hāʻawi ʻana i nā lāʻau a me nā ana:

  • Ua hoʻomohala mākou i kahi ala maʻamau i ka hui ʻana i nā kiʻi, a ma muli o ia mea mākou i kūkulu ai i nā template CI;
  • ʻO nā ʻelele hōʻiliʻili ʻikepili kā mākou hoʻonui Telegraf. Ua hoʻāʻo maikaʻi mākou iā lākou i ka hana ʻana;
  • Hoʻohana mākou i ka mutation webhook e hoʻokō i nā ipu me nā mea hana i loko o nā pods; 
  • Hoʻohui ʻia i loko o ke kaiaola Kubernetes/Rancher;
  • Hiki iā mākou ke hoʻokō i nā pahu like i nā ʻōnaehana orkestra ʻokoʻa a loaʻa ka hopena a mākou e manaʻo ai;
  • Hana ʻia kahi hoʻonohonoho hoʻonohonoho hoʻokele pahu pahu. 

Mea kākau pū: Ilya Prudnikov

Source: www.habr.com

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