E rima nga ngaro i te wa e tukuna ana te tono tuatahi ki runga i nga Kubernetes

E rima nga ngaro i te wa e tukuna ana te tono tuatahi ki runga i nga KubernetesRahua na Aris-Dreamer

He maha nga tangata e whakapono ana ka nui noa te heke i te tono ki Kubernetes (ma te whakamahi i te Helm, ma te ringaringa ranei) ka koa ratou. Engari ehara i te mea ngawari.

rōpū Mail.ru Cloud Solutions i whakamaoritia he tuhinga na te miihini DevOps Julian Gindi. Ka tohatohahia e ia nga raru i pa ki tana kamupene i te wa o te hekenga kia kore koe e eke ki runga i te rake kotahi.

Hipanga Tuatahi: Whakaritea Nga Tono Pod me nga Tepe

Me timata ma te whakarite i tetahi taiao ma e rere ai o tatou pene. He pai te mahi a Kubernetes ki te whakarite i nga putunga me te whakahaere i nga tikanga kore. Engari ka kitea ko etahi wa kare e taea e te kai-whakarite te whakatakoto i te pona mena he uaua ki te whakatau tata ki te maha o nga rauemi hei mahi angitu. I konei ka puta nga tono mo nga rauemi me nga rohe. He maha nga tautohetohe mo te huarahi pai ki te whakatakoto tono me nga rohe. I etahi wa ko te ahua he nui ake te toi i te putaiao. Anei ta matou huarahi.

Nga tono Pod - Koinei te uara matua e whakamahia ana e te kaihōtaka ki te whakanoho pai i te peera.

Tuhinga ka whai mai Nga tuhinga Kubernetes: Ko te taahiraa tātari ka whakatau i te huinga o nga pona ka taea te whakarite i te pona. Hei tauira, ka tirohia e te tātari PodFitsResources mena he nui nga rauemi o tetahi pona hei whakatutuki i nga tono rauemi motuhake a te pona.

Ka whakamahia e matou nga tono tono kia taea ai te whakamahi ki te whakatau tata i te maha o nga rauemi i te meka Me tika te mahi a te tono. Ma tenei ka taea e te kaihōtaka te whakanoho i nga pona. I te tuatahi i pirangi matou ki te whakatakoto i nga tono whai tawhē kia mohio ai he nui rawa te maha o nga rauemi o ia poti, engari i kite matou i tino piki haere nga wa whakarite, a, kaore ano i tino whakaritea etahi poti, me te mea kaore he tono rauemi i tae mai mo ratou.

I tenei keehi, he maha nga wa ka panaia e te kai-whakarite nga pene karekau e taea te whakarite i a raatau na te mea karekau te waka rererangi i mohio ki te maha o nga rauemi e hiahiatia ana e te tono, he waahanga matua o te huringa algorithm.

Nga rohe Pod - he rohe marama ake tenei mo te pene. He tohu mo te nui rawa o nga rauemi ka tohaina e te tautau ki te ipu.

Ano, mai tuhinga whaimana: Mēnā he 4 GiB tepe pūmahara o tētahi ipu, ka whakamanahia e te kubelet (me te wā whakahaere ipu). Ko te wa whakahaere e kore e taea e te ipu te whakamahi neke atu i te tepe rauemi kua tohua. Hei tauira, ki te ngana tetahi tukanga i roto i te ipu ki te whakamahi neke atu i te nui o te mahara e whakaaetia ana, ka whakamutua e te pata o te punaha te tukanga me te hapa "kei te maumahara" (OOM).

Ka taea e te ipu te whakamahi i nga rauemi maha atu i te mea kua tohua i roto i te tono rauemi, engari kaore e taea te whakamahi neke atu i nga mea kua tohua ki te rohe. He uaua tenei uara ki te whakarite tika, engari he mea nui.

Ko te mea pai, ko te hiahia kia huri nga whakaritenga rauemi o te pona i roto i te huringa ora o te tukanga me te kore e pokanoa ki etahi atu tukanga i roto i te punaha—koira te whainga ki te whakarite rohe.

Engari, kaore e taea e au te tuku tohutohu motuhake mo nga uara hei whakarite, engari ko taatau ake e whai ana ki nga ture e whai ake nei:

  1. Ma te whakamahi i tetahi taputapu whakamatautau uta, ka whakatauritehia e matou te taumata o te waka me te aro turuki i te whakamahinga o nga rauemi pod (mahara me te tukatuka).
  2. Ka whakatauhia e matou nga tono putea ki te uara iti (me te tepe rauemi tata ki te 5 nga wa te uara o nga tono) ka tirohia. Ina he iti rawa nga tono, kaore e taea te tiimata te mahi, he maha nga hapa ka puta i te wa whakahaere a Haere.

Kia mahara ko nga tepe rauemi teitei ake ka uaua ake te whakarite na te mea e hiahia ana te pona ki te kopuku whainga me te nui o nga rauemi e waatea ana.

Whakaarohia he ahuatanga kei a koe he tūmau tukutuku mama me te tepe rawa nui rawa atu, me kii te 4 GB o te mahara. Ko tenei tukanga me awhatatia whakapae, a me whakarite ia kōwae hou ki runga i te node me te 4 GB o te mahara e waatea ana. Mēnā karekau he kōpuku pēnei, me whakauru e te kāhui he kōpuku hōu hei tukatuka i taua kōpuku, ka roa pea. He mea nui ki te pupuri i te rereketanga i waenga i nga tono rauemi me nga rohe ki te iti rawa kia pai ai te tere me te maeneene.

Hipanga tuarua: te whakarite i nga whakamatautau Ora me te Riri

Koinei tetahi atu kaupapa ngawari e korerohia ana i roto i te hapori Kubernetes. He mea nui kia pai te mohio ki nga whakamatautau Ora me te Riri na te mea ka whakaratohia he tikanga mo te rere pai o te rorohiko me te whakaiti i te wa heke. Heoi, ka raru pea to tono ki te kore e whirihora tika. Kei raro nei he whakarāpopototanga o ngā tauira e rua.

Ora ka whakaatu mena kei te rere te ipu. Ki te rahua, ka patua e te kubelet te ipu, ka whakahohea he kaupapa here whakaara ano. Mena karekau te ipu ki te tirotiro Liveness, ka angitu te ahua taunoa - koinei te korero i roto Nga tuhinga Kubernetes.

Me iti te utu o nga tirotiro oranga, te tikanga kia kaua e pau te maha o nga rauemi, na te mea ka rere auau, me whakamohio atu ki a Kubernetes kei te haere te tono.

Mena ka whakatauhia e koe te kowhiringa kia rere ia hekona, ka taapirihia he 1 tono mo ia hekona, na kia mohio koe ka hiahiatia etahi atu rauemi hei whakahaere i tenei hokohoko.

I ta maatau kamupene, ka tirohia e nga whakamatautau Liveness nga waahanga matua o te tono, ahakoa kaore e tino uru atu nga raraunga (hei tauira, mai i te papaaarangi mamao, keteroki ranei).

Kua whirihorahia e matou nga taupānga me te waahi "hauora" ka whakahoki noa i te waehere whakautu o te 200. He tohu tenei kei te rere te tukanga me te kaha ki te tukatuka i nga tono (engari kaore ano kia hokohoko).

He tauira Tika Panui e tohu ana mena kua reri te ipu ki te tuku tono. Mena ka rahua te tirotiro, ka tangohia e te kaiwhakahaere ira mutunga te wahitau IP o te pd mai i nga pito o nga ratonga katoa e pa ana ki te pd. Kei te korero ano tenei i roto i nga tuhinga Kubernetes.

He maha ake nga rauemi ka pau i nga tirotirohanga rite na te mea me tuku ki te tuara hei tohu kua reri te tono ki te whakaae ki nga tono.

He nui nga tautohetohe i roto i te hapori mo te uru tika ki te paataka raraunga. I runga i te utu (he maha nga mahi tirotiro, engari ka taea te whakatika), i whakatauhia e matou mo etahi tono, ka tatauhia te reri ki te mahi waka i muri i te manatoko kua whakahokia mai nga rekoata mai i te paataka raraunga. Ko nga whakamatautau rite i hangaia pai i whakapumau i nga taumata teitei ake o te waatea me te whakakore i te wa whakaheke i te wa e tukuna ana.

Mena ka whakatau koe ki te uiui i te paataka korero hei whakamatautau i te reri o to tono, me mohio he iti rawa te utu. Me tango tenei tono:

SELECT small_item FROM table LIMIT 1

Anei tetahi tauira mo te whirihora i enei uara e rua ki Kubernetes:

livenessProbe: 
 httpGet:   
   path: /api/liveness    
   port: http 
readinessProbe:  
 httpGet:    
   path: /api/readiness    
   port: http  periodSeconds: 2

Ka taea e koe te taapiri etahi atu whiringa whirihoranga:

  • initialDelaySeconds — e hia nga hēkona ka pau i waenga i te whakarewatanga o te ipu me te timatanga o nga tauira.
  • periodSeconds — te wa tatari i waenga i nga oma tauira.
  • timeoutSeconds — te maha o nga hēkona i muri mai ka kiia te waeine he ohorere. Wā wā.
  • failureThreshold — te maha o nga rahunga whakamatautau i mua i te tukuna o te tohu whakaara ano ki te pona.
  • successThreshold — te maha o nga rangahau angitu i mua i te urunga o te pd ki te ahua rite (i muri i te korenga, ina timata te pd kia ora ake ranei).

Hipanga tuatoru: te whakarite kaupapa here whatunga taunoa mo te pd

He "papa" te ahua o te whatunga "flat" a Kubernetes; ma te taunoa, ka korero tika nga pene katoa ki a raatau ano. I etahi wa kaore tenei e pai.

Ko tetahi take haumarutanga pea ka taea e te kaitukino te whakamahi i tetahi tono whakaraerae ki te tuku waka ki nga putunga katoa i runga i te whatunga. Pērā ki te maha o nga waahi haumaru, ka pa te kaupapa o te mana iti rawa ki konei. Ko te tikanga, ko nga kaupapa here whatunga me tino whakaatu ko nga hononga i waenga i nga poti ka whakaaetia, ko tehea kaore.

Hei tauira, kei raro nei he kaupapa here ngawari e whakakore ana i nga hokohoko taumai katoa mo tetahi mokowāingoa motuhake:

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:  
 name: default-deny-ingress
spec:  
 podSelector: {}  
 policyTypes:  
   - Ingress

Te tirohanga o tenei whirihoranga:

E rima nga ngaro i te wa e tukuna ana te tono tuatahi ki runga i nga Kubernetes
(https://miro.medium.com/max/875/1*-eiVw43azgzYzyN1th7cZg.gif)
Nga taipitopito atu konei.

Hipanga tuawha: te whanonga ritenga ma te whakamahi matau me nga ipu init

Ko tetahi o a maatau whainga matua ko te tuku tuku ki nga Kubernetes me te kore he wa mo nga kaiwhakawhanake. He uaua tenei na te mea he maha nga whiringa mo te kati i nga tono me te waatea i nga rauemi i whakamahia e ratou.

I puta mai etahi uauatanga Nginx. I kite matou i te wa i horahia ai enei putunga, ka heke nga hononga kaha i mua i te otinga angitu.

Whai muri i nga rangahau maha i runga ipurangi, ka kitea kaore a Kubernetes e tatari kia pau nga hononga Nginx i mua i te whakamutu i te pona. Ma te whakamahi i te matau i mua i te aukati, i whakatinanahia e matou nga mahi e whai ake nei ka whakakorehia te wa heke:

lifecycle: 
 preStop:
   exec:
     command: ["/usr/local/bin/nginx-killer.sh"]

Engari nginx-killer.sh:

#!/bin/bash
sleep 3
PID=$(cat /run/nginx.pid)
nginx -s quit
while [ -d /proc/$PID ]; do
   echo "Waiting while shutting down nginx..."
   sleep 10
done

Ko tetahi atu tauira tino whai hua ko te whakamahi i nga ipu init hei hapai i te tiimata o nga tono motuhake. He tino whai hua tenei ki te mea kei a koe he tukanga hekenga patengi raraunga kaha rawa me whakahaere i mua i te tiimata o te tono. Ka taea hoki e koe te tauwhāiti i te tepe rauemi teitei ake mo tenei mahi me te kore e whakatau i taua rohe mo te tono matua.

Ko tetahi atu kaupapa noa ko te uru atu ki nga mea ngaro i roto i te ipu init e whakarato ana i aua tohu ki te waahanga matua, e aukati ana i te urunga kore mana ki nga mea ngaro mai i te waahanga tono matua ake.

Ka rite ki o mua, korero mai i nga tuhinga: Ko nga ipu Init e whakahaere haumaru ana i te waehere ritenga, i nga taputapu ranei ka whakaiti i te haumarutanga o te ahua ipu tono. Ma te wehe i nga taputapu kore, ka whakawhāitihia te mata whakaeke o te ahua ipu tono.

Hipanga Tuarima: Whirihorahia te Kernel

Ka mutu, me korero tatou mo tetahi tikanga matatau ake.

Ko te Kubernetes he papaa tino ngawari ka taea e koe te whakahaere i nga kawenga mahi kia rite ki taau e pai ai. He maha a matou tono mahi teitei e tino kaha rawa ana nga rauemi. Whai muri i te whakahaere i nga whakamatautau uta nui, i kite matou kei te uaua tetahi tono ki te hapai i te kawenga waka e tumanakohia ana i te wa e mana ana nga tautuhinga taunoa a Kubernetes.

Heoi, ka taea e Kubernetes te whakahaere i tetahi ipu whaimana hei whakarereke i nga tawhā kernel mo tetahi putunga motuhake. Anei nga mea i whakamahia e matou ki te whakarereke i te maha o nga hononga tuwhera:

initContainers:
  - name: sysctl
     image: alpine:3.10
     securityContext:
         privileged: true
      command: ['sh', '-c', "sysctl -w net.core.somaxconn=32768"]

He tikanga matatau ake tenei kaore e hiahiatia. Engari mena kei te uaua to tono ki te kawe i nga kawenga taumaha, ka taea e koe te tarai i etahi o enei tautuhinga. He maha atu nga korero mo tenei tukanga me te whakarite i nga uara rereke - pera tonu i roto i nga tuhinga whai mana.

I te mutunga

Ahakoa te ahua o te Kubernetes he otinga kua rite mai i te pouaka, he iti noa nga waahanga matua hei mahi maau kia rere pai ai o tono.

I roto i to hekenga Kubernetes, he mea nui ki te whai i te "huringa whakamatautau uta": whakarewahia te tono, utaina te whakamatautau, tirohia nga inenga me te whanonga whakawhatu, whakatika i te whirihoranga i runga i taua raraunga, katahi ka tuaruatia ano te huringa.

Kia whai kiko koe mo o hokohoko e tumanakohia ana ka ngana ki te pana ki tua atu kia kite ko nga waahanga ka pakaru tuatahi. Ma tenei huarahi haere tonu, he iti noa nga taunakitanga kua whakarārangihia ka ranea hei whakatutuki angitu. Ka hiahia ranei kia hohonu ake te whakaritenga.

Me ui koe i enei patai i nga wa katoa:

  1. E hia nga rauemi ka pau i nga tono me pehea te whakarereketanga o tenei pukapuka?
  2. He aha nga whakaritenga tauine pono? E hia te nui o nga hokohoko ka whakahaerehia e te taupānga i te toharite? He aha te ahua o nga waka teitei?
  3. E hia nga wa e hiahia ana te ratonga ki te awhatatia whakapae? Kia pehea te tere o te kawe mai i nga pene hou ki te ipurangi kia whiwhi waka?
  4. He pehea te tika o te kati i nga poro? E tika ana ranei tenei? Ka taea te whakatutuki i te tukunga me te kore he wa heke?
  5. Me pehea e taea ai e koe te whakaiti i nga tupono haumarutanga me te whakatiki i te kino mai i nga putunga kua taupatupatuhia? He whakaaetanga, he uru ranei nga ratonga kaore e hiahiatia ana?

Ka whakarato a Kubernetes i tetahi papaa whakamiharo e taea ai e koe te whakamahi i nga tikanga pai mo te tuku mano o nga ratonga i roto i te roopu. Heoi, he rereke nga tono katoa. I etahi wa ka nui ake te mahi ki te whakatinana.

Waimarie, ka whakaratohia e Kubernetes te whirihoranga e tika ana hei whakatutuki i nga whaainga hangarau katoa. Ma te whakakotahitanga o nga tono rauemi me nga rohenga, nga tirotiro mo te Ora me te Riri, nga ipu init, nga kaupapa here whatunga, me te whakakoi i nga kakano ritenga, ka taea e koe te whakatutuki i nga mahi teitei me te pai o te he me te tere tere.

He aha atu hei panui:

  1. Nga mahi pai me nga tikanga pai mo te whakahaere ipu me nga Kubernetes i nga taiao whakangao.
  2. 90+ taputapu whai hua mo Kubernetes: te whakatakotoranga, te whakahaere, te aroturuki, te haumaru me te maha atu.
  3. To tatou hongere huri noa i Kubernetes i Telegram.

Source: will.com

Tāpiri i te kōrero