10 Nga Hapa Ake Ina Whakamahi Kubernetes

Tuhipoka. whakamaori.: Ko nga kaituhi o tenei tuhinga he miihini mai i tetahi kamupene Czech iti, pipetail. I kaha ratou ki te whakahiato i tetahi rarangi whakamiharo o [i etahi wa karekau, engari ano] nga raru nui me nga pohehe e pa ana ki te mahi a nga tautau Kubernetes.

10 Nga Hapa Ake Ina Whakamahi Kubernetes

I roto i nga tau o te whakamahi i nga Kubernetes, kua mahi tahi matou me te maha o nga tautau (he mea whakahaere me te kore whakahaere - i runga i te GCP, AWS me Azure). I te roaraa o te tau, ua haamata matou i te ite e ua tapiti-noa-hia te tahi mau hape. Heoi, kaore he whakama i roto i tenei: kua mahia e matou te nuinga o ratou!

Kei roto i te tuhinga nga hapa tino noa me te korero ano me pehea te whakatika.

1. Rauemi: tono me nga rohe

Ko tenei taonga e tika ana kia tino arohia me te waahi tuatahi ki te raarangi.

PTM tono tikanga karekau i tohua, he iti rawa ranei te uara (ki te whakatakoto i te maha o nga pona ki ia pona ka taea). No reira, ka taumaha rawa nga pona. I nga wa o te kawenga nui, ka whakamahia katoatia te mana tukatuka o te node, a ka riro noa i tetahi kawenga mahi te mea "i tono" e ia. Te pupuhi PTM. Ma tenei ka piki ake te roanga o te tono, te taima, me era atu hua kino. (Pānuihia atu mo tenei i roto i ta maatau whakamaoritanga hou: "Ko nga tepe PTM me te tarai kaitaua ki Kubernetes" - āhua. whakawhiti.)

BestEffort (tino e kore tūtohutia):

resources: {}

Tino iti te tono PTM (tino e kore tūtohutia):

   resources:
      Requests:
        cpu: "1m"

I tetahi atu taha, ko te waahi o te rohe CPU ka arahi ki te mokowhiti ohorere o nga huringa karaka e nga pene, ahakoa kaore i te tino utaina te tukatuka node. Ano, ka nui ake te roa o tenei wa. Kei te haere tonu nga tautohetohe huri noa i te tawhā PTM CFS motunga i roto i te Linux kernel me te CPU throttling i runga i nga waahanga kua whakaritea, me te whakakore i te motunga CFS ... Aue, ka nui ake nga raruraru ka taea e nga rohe CPU te whakaoti. Ka kitea etahi atu korero mo tenei i te hono i raro nei.

He nui rawa te kowhiringa (whakaaetanga nui) Ko nga raruraru mahara ka nui ake nga raruraru. Ko te eke ki te tepe PTM ka pekehia nga huringa karaka, ka eke ki te tepe maumahara ka mate te pene. Kua kite koe OOMkill? Ae, koira tonu ta matou e korero nei.

Kei te pirangi koe ki te whakaiti i te tupono ka pa mai tenei? Kaua e nui te tohatoha mahara me te whakamahi i te QoS (Kounga o te Ratonga) ma te whakarite i te tono mahara ki te rohe (penei i te tauira i raro nei). Pānuitia atu mo tenei i roto i Henning Jacobs whakaaturanga (Kaiwhakahaere Kaihanga i Zalando).

Burstable (he nui ake te tupono ka mate OOMkill):

   resources:
      requests:
        memory: "128Mi"
        cpu: "500m"
      limits:
        memory: "256Mi"
        cpu: 2

Kua whakamanahia:

   resources:
      requests:
        memory: "128Mi"
        cpu: 2
      limits:
        memory: "128Mi"
        cpu: 2

He aha pea ka awhina ina whakarite rauemi?

Ma te awhina o metrics-server Ka taea e koe te kite i te kohi rauemi a te PTM o naianei me te whakamahi mahara e nga poti (me nga ipu kei roto). Ko te mea pea, kei te whakamahi kē koe. Whakahaerehia nga whakahau e whai ake nei:

kubectl top pods
kubectl top pods --containers
kubectl top nodes

Heoi, ka whakaatu noa i te whakamahinga o naianei. Ka taea e koe te whakaaro nui mo te raupapa o te nui, engari i te mutunga ka hiahia koe te hitori o nga huringa o nga inenga i roto i te waa (ki te whakautu i nga patai penei: "He aha te tihi o te uta CPU?", "He aha te utaina inanahi i te ata?", etc.). Mo tenei ka taea e koe te whakamahi Prometheus, Kui Raraunga me etahi atu taputapu. Ka whiwhi noa ratou i nga inenga mai i te metrics-server ka penapena, ka taea e te kaiwhakamahi te uiui me te whakatakoto i a raatau.

PoutūPodAutoscaler āhei te reira mahi aunoa tenei tukanga. Ka whai i te PTM me te hitori o te whakamahi mahara me te whakarite i nga tono me nga rohe hou i runga i enei korero.

Ehara i te mea ngawari te whakamahi hiko rorohiko. He rite ki te takaro Tetris i nga wa katoa. Mena kei te utu nui koe mo te hiko rorohiko me te iti o te kohi toharite (me kii ~10%), ka tūtohu kia tirohia nga hua i runga i te AWS Fargate, Virtual Kubelet ranei. He mea hanga ki runga i te tauira nama nama kore-kaupapa/utu-ia-whakamahi, tera pea ka iti ake te utu i roto i enei ahuatanga.

2. Te ora me te hihiko o nga rangahau

Ma te taunoa, karekau te arowhai oranga me te hihiko i te Kubernetes. A i etahi wa ka wareware ratou ki te huri i a raatau ...

Engari me pehea e taea ai e koe te whakaara ano i te ratonga mena ka puta he hapa mate? A me pehea e mohio ai te taurite kawenga kua reri te putea ki te whakaae waka? Ka taea ranei e ia te whakahaere i etahi atu waka?

Ko enei whakamatautau he maha nga wa e raruraru ana tetahi ki tetahi:

  • Ora — te tirotiro "te oranga", ka whakaara ano i te peera mena ka rahua;
  • Tika Panui — tirohia te reri, ki te rahua, ka momotuhia te poti mai i te ratonga Kubernetes (ka taea te tirotiro ma te whakamahi kubectl get endpoints) a karekau nga waka e tae mai kia oti ra ano te haki e whai ake nei.

Ko enei arowhai e rua I WHAKAMAHI I TE ORA KATOA O TE POD. He mea tino nui.

Ko te pohehe noa ko nga rangahau reri ka whakahaerehia i te tiimatanga kia mohio ai te kaitaurite kua reri te peera (Ready) a ka taea te timata ki te tukatuka waka. Heoi, koinei tetahi o nga whiringa mo to raatau whakamahi.

Ko tetahi atu ko te tupono ka kitea he nui rawa te waka i runga i te poti me te taumaha rawa atu (ka mahia ranei e te pona nga tataunga-a-rauemi). I roto i tenei take, ka awhina te tirotiro rite whakaitihia te kawenga i runga i te pākākano ka "matao" i te reira. Ka taea e te whakaoti angitu o te haki reri a meake nei whakanuia ano te pikaunga ki runga i te poti. I tenei keehi (mehemea ka rahua te whakamatautau iririri), he tino whakahē te kore o te whakamatautau ora. He aha te take ka whakaara ano i te pene e ora ana, e kaha ana te mahi?

No reira, i etahi wa, karekau he arowhai he pai ake i te whakaahei me nga tawhā whirihora hē. Ka rite ki te korero i runga ake nei, mena tirohia ora nga kape titiro reri, katahi ka raru koe. Ko te whiringa pea ko te whirihora whakamātautau rite anakea ora kino waiho ki tahaki.

Ko nga momo arowhai e rua kia kaua e taka ina rahua nga whakawhirinakitanga noa, ki te kore ka arai tenei ki te koretake o nga putunga katoa. Arā, kei kino koe.

3. LoadBalancer mo ia ratonga HTTP

Ko te nuinga, kei a koe nga ratonga HTTP kei roto i to huinga ka hiahia koe ki te tuku atu ki te ao o waho.

Mena ka whakatuwherahia e koe te ratonga hei type: LoadBalancer, ko tana kaiwhakahaere (i runga i te kaiwhakarato ratonga) ka whakarato me te whiriwhiringa i tetahi LoadBalancer o waho (kaore i te whakahaere i runga i te L7, engari i runga ano i te L4), a ka pa atu pea tenei ki te utu (te wahitau IPv4 pateko o waho, te mana rorohiko, te pire ia-rua. ) na te hiahia ki te hanga i te maha o nga rauemi penei.

I roto i tenei take, he nui ake te arorau ki te whakamahi i tetahi taurite kawenga o waho, te whakatuwhera i nga ratonga hei type: NodePort. He pai ake ranei, whakawhānuihia tetahi mea penei nginx-ingress-mana (ranei traefik), ko wai anake TaurangiPort te pito mutunga e hono ana ki te taurite kawenga o waho ka arataki i nga waka i roto i te tautau ma te whakamahi hararei-Kubernetes rauemi.

Ko etahi atu ratonga kapoipoi (micro) e taunekeneke ana ki a raua ano ka "whakawhitiwhiti" ma te whakamahi i nga ratonga penei RōpūIP me tetahi tikanga rapu ratonga i hangaia ma te DNS. Kaua rawa e whakamahi i a raatau DNS/IP mo te iwi whanui, na te mea ka pa ki te waatea me te whakapiki i te utu mo nga ratonga kapua.

4. Whakatau-aunoa i te kahui me te kore e whai whakaaro ki ona ahuatanga

I te taapiri i nga kohanga me te tango i a raatau mai i te kapoi, kaua koe e whakawhirinaki ki etahi inenga taketake penei i te whakamahinga CPU i runga i aua pona. Me whai whakaaro ki te maha o nga mahere o te pod herenga, penei i te hononga pod/node, taints me te whakamanawanui, tono rauemi, QoS, etc. Ma te whakamahi i te autoscaler o waho kaore e aro ki enei ahuatanga ka raru pea.

Whakaarohia me whakarite tetahi pona, engari ka tonohia te mana PTM katoa e waatea ana me te peera ka mau ki roto i te ahua Pending. Ka kitea e te Kaitautoko o waho te taumaha o naianei CPU (ehara i te mea i tonohia) karekau e timata te roha (tauine-atu) - kaore e taapiri i tetahi atu pona. Ko te mutunga mai, kare e whakaritea tenei pod.

I roto i tenei take, whakamuri tauine (tauine-mai) — Ko te tango i te node mai i te tautau he uaua ake ki te whakatinana. Whakaarohia kei a koe he putea ahua (me te hono tonu te rokiroki). Nga pukapuka mau tonu no te nuinga rohe wātea motuhake a karekau e tukuruatia i te rohe. No reira, ki te whakakorehia e te kaitarai-aunoa o waho tetahi node me tenei pod, karekau e taea e te kaihōtaka te whakarite i tenei pona ki runga i tetahi atu node, na te mea ka taea anake tenei i roto i te waahi waatea kei reira te rokiroki pumau. Ka mau te Pod ki te ahua Pending.

Tino rongonui i roto i te hapori Kubernetes cluster-autoscaler. Ka rere i runga i te kahui, ka tautoko i nga API mai i nga kaiwhakarato kapua nui, ka whai whakaaro ki nga here katoa ka taea te tauine i nga keehi o runga ake nei. Ka taea ano e ia te awhi i te wa e mau tonu ana nga rohe kua whakaritea, na reira ka penapena moni (ka pau mo te kaha kaore i whakamahia).

5. Te wareware i nga kaha IAM/RBAC

Kia tupato ki te whakamahi i nga kaiwhakamahi IAM me nga mea ngaro tonu mo mihini me nga tono. Whakaritea te urunga rangitahi ma te whakamahi i nga mahi me nga kaute ratonga (pūkete ratonga).

He maha nga wa ka pa ki a matou ko nga taviri uru (me nga mea ngaro) he mea pakeke i roto i te whirihoranga tono, me te kore e aro ki te hurihanga o nga mea ngaro ahakoa te uru ki te Cloud IAM. Whakamahia nga mahi IAM me nga kaute ratonga hei utu mo nga kaiwhakamahi ina tika.

10 Nga Hapa Ake Ina Whakamahi Kubernetes

Wareware mo te kube2iam ka haere totika ki nga mahi IAM mo nga kaute ratonga (penei i te korero i roto tuhipoka o taua ingoa Štěpán Vraný):

apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/my-app-role
  name: my-serviceaccount
  namespace: default

Kotahi te korero. Ehara i te mea uaua, tika?

Ano hoki, kaua e tukuna he mana mo nga kaute ratonga me nga tohu tauira admin и cluster-adminki te kore e hiahiatia e ratou. He iti ake te uaua ki te whakatinana, ina koa i roto i nga RBAC K8, engari he tino pai te whakapau kaha.

6. Kaua e ti'aturi i runga i te hononga-anti-aunoa mo nga pene

Whakaarohia kei a koe e toru nga tauira o etahi whakaurunga ki runga i te node. Ka taka te node, me nga tauira katoa. He ahuatanga kino, tika? Engari he aha i noho ai nga tauira katoa ki te node kotahi? Ehara i te mea ko nga Kubernetes te mea ka whakarato i te waatea nui (HA)?!

Ko te mea pouri, ko te Kaihoko Kubernetes, na runga i tana ake kaupapa, karekau e whai ki nga ture o te noho motuhake (whakaaro-arotahi) mo nga pene. Me tino korero:

// опущено для краткости
      labels:
        app: zk
// опущено для краткости
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                    - zk
              topologyKey: "kubernetes.io/hostname"

Heoi ano. Inaianei ka whakaritea nga pona ki runga i nga pona rereke (ka tirohia tenei ahuatanga i te wa e whakaritea ana, engari kaua i te wa e mahi ana - no reira requiredDuringSchedulingIgnoredDuringExecution).

I konei e korero ana matou podAntiAffinity i runga i nga pona rereke: topologyKey: "kubernetes.io/hostname", - ehara i te mea mo nga waahi waatea rereke. Hei whakatinana i te HA katoo, me keri hohonu koe ki tenei kaupapa.

7. Kaua e aro ki nga PodDisruptionBudgets

Whakaarohia he kawenga whakangao kei runga i te kahui Kubernetes. I ia wa, me whakahou (me whakakorehia ranei nga pona me te kapoi). Ko te PodDisruptionBudget (PDB) he rite ki te kirimana taurangi ratonga i waenga i nga kaiwhakahaere tautau me nga kaiwhakamahi.

Ka taea e te PDB te karo i nga aukati ratonga na te kore o nga pona:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: zk-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: zookeeper

I tenei tauira, ko koe, he kaiwhakamahi o te tautau, ka kii atu ki nga kaiwhakahaere: "Hei, he ratonga kaitiaki kararehe taku, ahakoa he aha taau mahi, e hiahia ana ahau kia 2 pea nga tauira o tenei ratonga kia waatea i nga wa katoa. .”

Ka taea e koe te panui atu mo tenei konei.

8. He maha nga kaiwhakamahi, he taiao ranei kei roto i te huinga noa

Mokowāingoa Kubernetes (mokowāingoa) kaua e whakarato i te whakamatao kaha.

Ko te pohehe noa ko te mea ka tukuna e koe he kawenga kore-prod ki tetahi mokowā ingoa me te uta prod ki tetahi atu, katahi ka e kore e whakaawe tetahi ki tetahi i tetahi huarahi... Heoi, ka taea te whakatutuki i tetahi taumata motuhake ma te whakamahi i nga tono rauemi/whakaiti, te whakarite i nga motunga, me te whakatau i nga karaehe matua. Ko etahi waahanga "tinana" i roto i te rererangi raraunga ka whakaratohia e nga hononga, te whakamanawanui, nga taaka (me nga kaitoha pooti ranei), engari he tino rerekee taua wehenga. he uaua whakatinana.

Ko te hunga e hiahia ana ki te whakakotahi i nga momo mahi e rua i roto i te roopu kotahi ka pa ki te uaua. Mena kaore he hiahia pera, ka taea e koe te utu kotahi ano te tautau (mea atu, i roto i te kapua whanui), katahi ka pai ake te mahi. Ma tenei ka eke ki te taumata teitei ake o te whakamaarama.

9. wahoTrafficPolicy: Cluster

I te nuinga o nga wa ka kite tatou ko nga waka katoa i roto i te tautau ka puta mai i roto i te ratonga penei i te NodePort, i whakaritea ai te kaupapa here taunoa externalTrafficPolicy: Cluster... Ko te tikanga o tera TaurangiPort kei te tuwhera ki nga pona katoa i roto i te tautau, a ka taea e koe te whakamahi i tetahi o enei ki te taunekeneke me te ratonga e hiahiatia ana (te huinga o nga pene).

10 Nga Hapa Ake Ina Whakamahi Kubernetes

I te wa ano, ko nga putea tuuturu e hono ana ki te ratonga NodePort kua whakahuahia ake nei ka waatea noa i runga i tetahi te wahanga o enei pona. I etahi atu kupu, ki te hono atu ahau ki tetahi pona karekau he pona e hiahiatia ana, ka tukuna atu te waka ki tetahi atu pona, te taapiri i te hop me te whakanui ake i te torohūtanga (mehemea kei roto i nga waahi waatea rereke/pokapū raraunga, ka tino teitei te torohūtanga; hei taapiri, ka piki ake nga utu waka puta).

I tetahi atu taha, mena he kaupapa here ta tetahi ratonga Kubernetes externalTrafficPolicy: Local, ka tuwhera noa a NodePort ki runga i nga pona kei te rere tonu nga putunga e hiahiatia ana. A, no te whakamahi i te taurite kawenga o waho e arowhai ana i te ahua (te tirotiro hauora) nga pito mutunga (pehea te mahi AWS ELB), ia ka tuku waka ki nga pona e tika ana, ka whai painga ki nga whakaroa, nga matea rorohiko, nga pire puta noa (me nga tikanga noa te whakahau).

He nui te tupono kei te whakamahi koe i tetahi mea penei traefik ranei nginx-ingress-mana hei tohu mutunga NodePort (ko LoadBalancer ranei, e whakamahi ana hoki i a NodePort) ki te arataki i nga waka urunga HTTP, me te whakarite i tenei whiringa ka tino whakaitihia te noho mo enei tono.

В tenei whakaputanga Ka taea e koe te ako atu mo wahoTrafficPolicy, ona painga me ona huakore.

10. Kaua e herea ki nga tautau, kaua hoki e tukino i te waka rererangi

I mua, he tikanga ki te karanga i nga kaitoro ma nga ingoa tika: Anton, HAL9000 me Colossus... I tenei ra kua whakakapihia e nga tohu tohu kua hangaia matapōkeretia. Heoi, i mau tonu te tikanga, inaianei ka haere nga ingoa tika ki nga tautau.

He korero angamaheni (i runga i nga kaupapa tuturu): i timata katoa me te tohu o te ariā, no reira he ingoa whakahīhī te kāhui whakamātautau... Kua pahemo nga tau, kei te whakamahia tonu ki te hanga, ka mataku nga tangata katoa ki te pa atu.

Kare he mea ngahau mo nga tautau ka huri hei mokai, no reira ka tūtohu kia tangohia i ia wa i te wa e whakangungu ana whakaora aituā (ka awhina tenei hangahanga hepohepo — āhua. whakawhiti.). I tua atu, kaore e kino te mahi i runga i te paparanga mana (rererangi mana). Ko te mataku ki te pa atu ki a ia ehara i te tohu pai. etc. kua mate? E tama ma, kei te tino raruraru koutou!

I tetahi atu taha, kaua koe e kaha ki te raweke. Me te wa ka puhoi pea te paparanga mana. Ko te mea pea, na te maha o nga mea ka hangaia me te kore hurihanga (he ahuatanga noa i te wa e whakamahi ana i te Helm me nga tautuhinga taunoa, na reira kaore i whakahouhia tona ahuatanga i roto i nga mahere whirihora / ngaro - na te mea, he maha nga mano o nga taonga e whakaemi ana ki roto. te paparanga mana) me te whakatika tonu ranei o nga mea kube-api (mo te whakatauira aunoa, mo te CI/CD, mo te aro turuki, nga raarangi takahanga, nga kaiwhakahaere, me etahi atu).

I tua atu, ka tūtohu kia tirohia nga kirimana SLA/SLO me te kaiwhakarato Kubernetes whakahaere me te aro ki nga taurangi. Ka taea e te kaihoko te whakamana te wātea paparanga mana (ko ona waahanga iti ranei), engari kaua ko te p99 whakaroa o nga tono ka tukuna atu e koe. I etahi atu kupu, ka taea e koe te whakauru kubectl get nodes, ka whiwhi whakautu i muri i nga meneti 10 anake, kaore tenei e takahi i nga tikanga o te kirimana ratonga.

11. Takoha: te whakamahi i te tohu hou

Engari he matarohia tenei. I enei ra kua iti ake te kite i tenei tikanga, na te mea he maha, kua ako mai i nga wheako kawa, kua mutu te whakamahi i te tohu :latest a ka timata ki te titi putanga. Hore!

ECR ka mau tonu te kore whakarereke o nga tohu whakaahua; Ka tūtohu matou kia waia koe ki tenei ahuatanga whakamiharo.

Whakarāpopoto

Kaua e whakaaro ka mahi nga mea katoa mo te po: Ehara a Kubernetes i te rongoa. Taupānga kino ka noho penei ahakoa i Kubernetes (a ka kino pea). Ma te kore e tupato ka nui te uaua, te puhoi me te taumaha o te mahi o te paparanga mana. I tua atu, ka tupono ka mahue koe kaore he rautaki whakaora aituā. Kaua e whakaaro ka tukuna e Kubernetes te noho motuhake me te waatea nui mai i te pouaka. Whakapaia he wa ki te hanga i to tono he kapua taketake.

Ka taea e koe te mohio ki nga wheako kore angitu o nga tini kapa i roto tenei kohinga korero na Henning Jacobs.

Ko te hunga e hiahia ana ki te taapiri atu ki te rarangi o nga hapa ka tukuna mai i tenei tuhinga ka taea te whakapiri mai ki a matou i runga i Twitter (@MarekBartik, @MstrsObserver).

PS mai i te kaiwhakamaori

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero