Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseks

Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseks

Tere kÔigile! Minu nimi on Oleg Sidorov, töötan ettevÔttes DomClick infrastruktuurimeeskonna juhina. Oleme kasutanud "Kubi" tootmisversioonis juba rohkem kui kolm aastat ning selle aja jooksul oleme kogenud palju erinevaid huvitavaid hetki. TÀna rÀÀgin teile, kuidas Ôige lÀhenemisega saate "puhtast" Kubernetesest veel rohkem vÔimsust vÀlja vÔtta oma klastri jaoks. Valmis, start, mine!

Te kĂ”ik teate, et Kubernetes on avatud koodiga, skaleeritav sĂŒsteem konteinerite orkestreerimiseks; vĂ”i noh, 5 binaarfaili, mis teevad imet, hallates teie mikroteenuste elutsĂŒklit serverikeskkonnas. Lisaks on see ĂŒsna paindlik tööriist, mida saab nagu Lego klotse kokku panna, et maksimaalselt kohandada erinevate ĂŒlesannete jaoks.

Ja tundub, et kĂ”ik on hĂ€sti: viska serverid klastri nagu palk tule, ja muret ei tunne. Kuid kui sa hoolid keskkonnast, siis mĂ”tled: „Kuidas ma saan tuld ahjus hoida, kuid metsast sÀÀsta?“. TeisisĂ”nu, kuidas leida vĂ”imalusi infrastruktuuri tĂ€iustamiseks ja kulude vĂ€hendamiseks.

1. JĂ€lgige meeskondade ja rakenduste ressursikasutust

Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseks

Üks kĂ”ige tavalisemaid, kuid tĂ”husaid meetodeid on piirangute ja nĂ”udmiste seadmine. Jagage rakendusi nimevĂ€ljade kaupa ning nimevĂ€ljad arendusmeeskondade kaupa. MÀÀrake rakendusele enne juurutamist protsessori aja, mĂ€lu ja ajutise salvestusruumi tarbimise vÀÀrtused.

resources:
   requests:
     memory: 2Gi
     cpu: 250m
   limits:
     memory: 4Gi
     cpu: 500m

Kogemusest oleme jĂ”udnud jĂ€reldusele, et nĂ”udmised ei tohiks olla suuremad kui piirangud rohkem kui kaks korda. Klaster arvutatakse nĂ”udmiste pĂ”hjal, ja kui te mÀÀrate rakendustele ressursside erinevuse nĂ€iteks 5-10 korda, siis kujutage ette, mis juhtub teie solgiga, kui see tĂ€itub podidega ja Ă€kitselt koormus suureneb. Midagi head ei juhtu. KĂ”ige vĂ€hem pĂ”hjustab see trottlingut ja kĂ”ige rohkem hĂŒvasti peate te töötajaga ning saad pideva koormuse teistele solgidele, kui podid hakkavad liikuma.

Lisaks saate limitranges Te vĂ”ite konteinerile alguses mÀÀrata ressursside vÀÀrtused – minimaalsed, maksimaalsed ja vaikimisi:

➜  ~ kubectl describe limitranges --namespace ops
Name:       limit-range
Namespace:  ops
Type        Resource           Min   Max   Default Request  Default Limit  Max Limit/Request Ratio
----        --------           ---   ---   ---------------  -------------  -----------------------
Container   cpu                50m   10    100m             100m           2
Container   ephemeral-storage  12Mi  8Gi   128Mi            4Gi            -
Container   memory             64Mi  40Gi  128Mi            128Mi          2

Ära unusta piirata nimeliku ruumi ressursse, et ĂŒks meeskond ei saaks kogu klastrite ressursse endale haarata:

➜  ~ kubectl describe resourcequotas --namespace ops
Name:                   resource-quota
Namespace:              ops
Resource                Used          Hard
--------                ----          ----
limits.cpu              77250m        80
limits.memory           124814367488  150Gi
pods                    31            45
requests.cpu            53850m        80
requests.memory         75613234944   150Gi
services                26            50
services.loadbalancers  0             0
services.nodeports      0             0

Nagu nÀha on kirjelduse jÀrgi resourcequotas, kui ops meeskond soovib juurutada pod'e, mis tarbiks veel 10 cpu, siis planeerija ei lase seda teha ja annab vea:

Error creating: pods "nginx-proxy-9967d8d78-nh4fs" is forbidden: exceeded quota: resource-quota, requested: limits.cpu=5,requests.cpu=5, used: limits.cpu=77250m,requests.cpu=53850m, limited: limits.cpu=10,requests.cpu=10

Sarnase probleemi lahendamiseks saab kirjutada tööriista, nÀiteks nagu seda, mis oskab salvestada ja fikseerida meeskondade ressursside olekuid.

2. Valige optimaalsed failide salvestamiseks

Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseks

Siin tahaksin kĂ€sitleda pĂŒsivate mahtude ja Kubernetes'e worker-node'i ketasĂŒsteemi teemat. Loodan, et keegi ei kasuta „Kubi” HDD-l tootmises, kuid mĂ”nikord ei piisa ka tavalise SSD kohta. Oleme sellise probleemiga silmitsi seisnud, et logid hĂ€vitavad ketast sisse- ja vĂ€ljundoperatsioonide tĂ”ttu, ja lahendusi ei ole just palju:

  • Kasutage kĂ”rgvĂ”imekat SSD-d vĂ”i viige ĂŒle NVMe-le (kui teil on oma riistvara kĂ€sutuses).

  • VĂ€hendage logimise taset.

  • Tehke „nutikas” podide tasakaalustamine, mis koormavad ketast (podAntiAffinity).

Ülalloolev ekraan nĂ€itab, mis juhtub nginx-ingress-controlleriga, kui ketas on logimise access_logs kostus (~12 tuhat logi/s). See seisund vĂ”ib muidugi pĂ”hjustada kĂ”igi rakenduste halvenemist selle node'i peal.

Mis puutub PV-de, siis kahjuks ei ole ma kĂ”iki liike proovinud PĂŒsivad mahutid. Kasutage parimat varianti, mis sobib just teile. Meil on ajalooliselt olnud nii, et vĂ€ike osa teenustest vajab RWX-mahtu, ja juba ammu on selleks otstarbeks kasutatud NFS-salvestust. Odav ja... piisav. Muidugi, me oleme sellest tĂŒdinud — olgu see nii, kuid oleme Ă”ppinud seda hÀÀlestama, ja peavalu pole enam. Ja kui vĂ”imalik, minge ĂŒle objekti salvestusele S3.

3. Koguge optimeeritud pilte

Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseks

Parim on kasutada konteinerite jaoks optimeeritud pilte, et Kubernetes saaks neid kiiremini kÀtte ja tÔhusamalt tÀita. 

Optimeeritus tÀhendab, et pildid:

  • sisaldavad ainult ĂŒhte rakendust vĂ”i tĂ€idavad ainult ĂŒhte funktsiooni;

  • on vĂ€ikesed, sest suured pildid edastatakse halvemini vĂ”rgus;

  • on lĂ”pp-punktid töökindluse ja valmiduse kontrollimiseks, millega Kubernetes saab ettevĂ”tta mingit tegevust seisakute korral;

  • kasutavad konteinerite sĂ”bralikke operatsioonisĂŒsteeme (nagu Alpine vĂ”i CoreOS), mis on konfiguratsioonivigade suhtes vastupidavamad;

  • kasutavad mitmeastmelisi kogumise meetodeid, et saaksite juurutada ainult kompileeritud rakendusi, mitte kaasnevaid lĂ€htekode.

On palju tööriistu ja teenuseid, mis vÔimaldavad reaalajas pilte kontrollida ja optimeerida. Oluline on hoida need alati ajakohased ja turvaliseks kontrollitud. Selle tulemuseks on:

  1. VÔrgu koormuse vÀhenemine kogu klastrile.

  2. Konteineri kÀivitamise aja vÀhenemine.

  3. Teie kogu Docker registry vÀiksem maht.

4. Kasutage DNS-i vahemÀlu

Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseks

Kui rÀÀkida kĂ”rgetest koormustest, siis ilma klastris DNS-sĂŒsteemi hÀÀlestamiseta on elu ĂŒsna kehv. Aegade alguses toetas Kubernetes oma lahendust kube-dns. See viidi ellu ka meie sĂŒsteemis, kuid seda tarkvara ei hÀÀlestatud eriti ja see ei nĂ€idanud vajalikke jĂ”udluse tulemusi, kuigi ĂŒlesanne nĂ€ib olema lihtne. Siis tuli coredns, millele me ĂŒlemineku tegime ja ei kahetsenud, kuna see sai hiljem K8s-is vaikimisi DNS-teenuseks. Ühel hetkel jĂ”udsime 40 000 rps DNS-sĂŒsteemile, ja sellest lahendusest hakkas samuti puudust tundma. Kuid Ă”nneliku juhuse tĂ”ttu ilmus Nodelocaldns, tuntud ka kui node local cache, samuti. NodeLocal DNSCache.

Miks me seda kasutame? Linuxi tuumas on viga, mis mitme vĂ”rgukonfiguratsiooni korral conntrack NAT kaudu UDP kaudu viib joonte kirjutamise rivelikriisi ning osa NAT kaudu liikuvast liiklusest kaob (iga kord, kui lĂ€bi teenuse minnakse — see on NAT). Nodelocaldns lahendab selle probleemi, kĂ”rvaldades NAT ja uuendades ĂŒhenduse TCP-le allstrateegiate DNS-idega ning pakkudes ka kohaliku DNS-i pĂ€ringute vahemĂ€lu (sealhulgas lĂŒhike 5-sekundiline negatiivne vahemĂ€lu).

5. Skaalige podid automaatselt horisontaalselt ja vertikaalselt

Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseks

Kas saate kindlalt öelda, et kĂ”ik teie mikroteenused on valmis kahekordseks vĂ”i kolmekordseks koormuse kasvuks? Kuidas jagada ressursse oma rakendustele Ă”igesti? Paari podi kĂ€itamine töötamise koormusest ĂŒle vĂ”ib osutuda liialdatuks, samas riskite, et Ă€kilise liikluse kasvu korral teenusel tekib seisak. Kulda keskteed aitab saavutada sellised teenused nagu Horisontaalne Pod Autoscaler ja Vertikaalne Pod Autoscaler.

VPA vĂ”imaldab automaatselt tĂ”sta oma konteinerite requests/limits podis, sĂ”ltuvalt tegelikust kasutusest. Kuidas see kasulik on? Kui teil on podid, mida mingil pĂ”hjusel ei saa horisontaalselt skaleerida (mis pole tavaliselt usaldusvÀÀrne), siis vĂ”ite proovida usaldada VPA, et muuta selle ressursse. Selle funktsioon seisneb soovituste sĂŒsteemis, mis pĂ”hineb ajaloolistel ja praegustel andmetel metric-serverist, seega kui te ei soovi automaatselt muuta requests/limits, saate lihtsalt jĂ€lgida soovitatud ressursse oma konteineritele ja optimeerida seadeid, et sÀÀsta CPU-d ja mĂ€lu klastris.

Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseksPilt on vĂ”etud aadressilt https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231

Kubernetesi planeerija pĂ”hineb alati requests'idel. ÜkskĂ”ik, millise vÀÀrtuse sinna mÀÀrate, otsib planeerija sobivat sĂ”lme lĂ€htuvalt sellest. Limits vÀÀrtused on kubeletile vajalikud, et mĂ”ista, millal pod'i piirata vĂ”i lĂ”petada. Ja kuna ainus oluline parameeter on requests vÀÀrtus, töötab VPA selle alusel. Iga kord, kui mÀÀrate rakenduse vertikaalses skaleerimises, mÀÀrate, millised peaksid olema requests. Aga mis juhtub siis limits'itega? See parameeter skaleeritakse ka proportsionaalselt.

NĂ€iteks siin on tavalised pod'i seadistused:

resources:
   requests:
     memory: 250Mi
     cpu: 200m
   limits:
     memory: 500Mi
     cpu: 350m

Soovituste mehhanism mÀÀrab, et teie rakendusele on normatiivseks töötamiseks vajalik 300m CPU ja 500Mi. Saate sellised seadistused:

resources:
   requests:
     memory: 500Mi
     cpu: 300m
   limits:
     memory: 1000Mi
     cpu: 525m

Nagu eelnevalt mainitud, toimub see proportsionaalne skaleerimine requests/limits suhetes manifestis:

  • CPU: 200m → 300m: suhe 1:1.75;

  • MĂ€lu: 250Mi → 500Mi: suhe 1:2.

As for HPA, siis on siin töömehhanism selgem. KĂŒnnise vÀÀrtused seadistatakse nĂ€iteks protsessori ja mĂ€lu kohta, ja kui kĂ”igi replikate keskmine vÀÀrtus ĂŒletab kĂŒnnise, siis rakendus skaleeritakse +1 pod vĂ€hemalt seni, kuni vÀÀrtus langeb alla kĂŒnnise vĂ”i kuni maksimaalne replikate arv on saavutatud.

Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseksPilt on vĂ”etud aadressilt https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231

Lisaks tavapĂ€rastele mÔÔdikutel, nagu protsessor ja mĂ€lu, saate seadistada kĂŒnnised oma kohandatud mÔÔdikutel Prometheuses ja töötada nendega, kui peate neid kĂ”ige tĂ€psemaks mÀÀratluseks, millal rakendust skaleerida. Kui rakendus stabiliseerub allpool mÀÀratud mÔÔtmispiiri, alustab HPA podide skaleerimist allapoole kuni minimaalsete replikate arvuni vĂ”i kuni koormus vastab mÀÀratud kĂŒnnisele.

6. Ärge unustage Node Affinity ja Pod Affinity

Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseks

KÔik sÔlmed ei tööta sama riistvara peal, kÔigile podidele ei pea olema vajalikud intensiivsete arvutusvajadusega rakenduste tÀitmine. Kubernetes vÔimaldab mÀÀrata sÔlmede ja podide spetsialiseerumist kasutades Node Affinity ja Pod Affinity.

Kui teil on noodid, mis sobivad intensiivseteks arvutusteks, on parima efektiivsuse saavutamiseks parem rakendused vastavatele nootidele siduda. Selleks kasutage nodeSelector sÔlmeliimiga.

Oletame, et teil on kaks nooti: ĂŒks on varustatud CPUType=HIGHFREQ ja suure hulga kiirete tuumadega, teine aga on MemoryType=HIGHMEMORY suure hulga mĂ€lu ja paremaga tĂ€itmisvĂ”imega. KĂ”ige lihtsam on mÀÀrata podi juurutamine noodele HIGHFREQ, lisades sektsioonis spec sellise valiku:



nodeSelector:
	CPUType: HIGHFREQ

Rohkem kulukas ja spetsiifiline meetod selle tegemiseks on kasutada nodeAffinity vÀljal affinity sektsioonis spec. On kaks varianti:

  • requiredDuringSchedulingIgnoredDuringExecution: rangeerimine (planeerija juurutab podid ainult konkreetsetele nodidele (ja mitte kuhugi mujale));

  • preferredDuringSchedulingIgnoredDuringExecution: pehme seadistus (planeerija pĂŒĂŒab juurutada konkreetsetele nodidele ning kui see ei Ă”nnestu, proovib juurutada jĂ€rgmisele kĂ€ttesaadavale noodi).

Saate mÀÀrata kindla sildistamisjuhtimise sĂŒntaksi, nĂ€iteks In, NotIn, Exists, DoesNotExist, Gt vĂ”i Lt. Kuid pidage meeles, et keerulised meetodid pikkade mĂ€rgisĂŒsteemide puhul aeglustavad otsuste tegemist kriitilistes olukordades. TeisisĂ”nu, Ă€rge keerutage asju liialt komplikeerituks.

Nagu eelnevalt mainitud, vÔimaldab Kubernetes seadistada praeguste podide sidumise. See tÀhendab, et saate teha nii, et teatud podid töötaksid koos teiste podidega samas saadavuspiirkonnas (mis on oluline pilveteenuste puhul) vÔi noodides.

V podAffinity vĂ€ljad affinity sektsioonis spec saadaval on samad vĂ€ljad nagu ka nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution ja preferredDuringSchedulingIgnoredDuringExecution. Ainuke erinevus on see, et matchExpressions sidumine paneb podid nodi kĂŒlge, kus juba töötab pod, millel on selline mĂ€rk.

Lisaks pakub Kubernetes vÀlja podAntiAffinity, mis seevastu ei seosta podi nodiga, kus on teatud podid.

VĂ€ljendite osas nodeAffinity vĂ”ib anda sama nĂ”u: pĂŒĂŒdke hoida reeglid lihtsad ja loogilised, vĂ€ltige podide spetsifikatsiooni liialt keeruliseks muutmist. On vĂ€ga lihtne luua reegel, mis ei vasta klastritingimustele, luues lisakoormuse planeerijale ja vĂ€hendades ĂŒldist jĂ”udlust.

7. Taints & Tolerations

On olemas veel ĂŒks vĂ”imalus planeerija haldamiseks. Kui teil on suur klaster, kus on sadu sĂ”lmi ja tuhandeid mikroteenuseid, on vĂ€ga keeruline mitte lubada teatud podide paigutamist teatud sĂ”lmedesse.

Sellele aitab kaasa taint-mehhanism — keelavaid reegleid. NĂ€iteks on teatud stsenaariumides vĂ”imalik keelata teatud sĂ”lmedel podide kĂ€ivitamine. Taint'i rakendamiseks konkreetsele sĂ”lmele tuleb kasutada valikut taint kubectl. NĂ€idake vĂ”tme ja vÀÀrtuse ning seejĂ€rel taint nagu NoSchedule vĂ”i NoExecute:

$ kubectl taint nodes node10 node-role.kubernetes.io/ingress=true:NoSchedule

Samuti vÀÀrib mÀrkimist, et taint-mehhanism toetab kolme peamist efekti: NoSchedule, NoExecute ja PreferNoSchedule.

  • NoSchedule tĂ€hendab, et seni kuni podi spetsifikatsioonis ei ole vastavat kirjet tolerations, ei saa see olla sĂ”lmes juurutatud (antud nĂ€ites node10).

  • PreferNoSchedule — lihtsustatud versioon NoSchedule. Sel juhul pĂŒĂŒab planeerija mitte jaotada podisid, millel ei ole vastavat kirjet tolerations sĂ”lmele, kuid see ei ole range piirang. Kui klastris ei ole ressursse, hakkavad podid selle sĂ”lme juurutama.

  • NoExecute — see efekt kĂ€ivitab kohe podide evakueerimise, millel ei ole vastavat kirjet. tolerations.

Huvitav, et sellist kĂ€itumist saab tĂŒhistada toleratsioonimehhanismi abil. See on mugav, kui on olemas "keelatud" sĂ”lm ja soovite sellele paigutada ainult infrastruktuuri teenuseid. Kuidas seda teha? Luba ainult need podid, millel on sobiv toleratsioon.

Nii nÀeb vÀlja podi spetsifikatsioon:

spec:
   tolerations:
     - key: "node-role.kubernetes.io/ingress"
        operator: "Equal"
        value: "true"
        effect: "NoSchedule"

See ei tÀhenda, et jÀrgmisel redploy-l satub pod kindlasti sellele sÔlmele, see ei ole Node Affinity mehhanism ja nodeSelector. Kuid kombineerides mitmeid funktsioone, saate saavutada vÀga paindlikud plaanijate seadistused.

8. Konfigureerige podide juurutamise prioriteet

See, et olete seadistatud podide seondumise sÔlmedega, ei tÀhenda, et kÔik podid peaksid olema töödeldud sama prioriteediga. NÀiteks vÔite soovida juurutada teatud podid varem kui teised.

Kubernetes pakub erinevaid viise podide prioriteedi seadistamiseks (Pod Priority and Preemption). Seadistamine koosneb mitmest osast: objektist PriorityClass ja kirjelduse vÀljast priorityClassName podi spetsifikatsioonis. Vaadakem nÀiteks:

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority
value: 99999
globalDefault: false
description: "Seda prioriteed tuleb kasutada ainult vÀga tÀhtsate pod'ide jaoks"

Me loome PriorityClass, anname sellele nime, kirjelduse ja vÀÀrtuse. Mida kĂ”rgem value, seda kĂ”rgem on prioriteet. VÀÀrtus vĂ”ib olla mis tahes 32-bitine tĂ€isarv, mis on vĂ€iksem vĂ”i vĂ”rdne 1 000 000 000. KĂ”rgemad vÀÀrtused on reserveeritud kriitilistele sĂŒsteemipod'idele, mida ĂŒldiselt ei saa sunniviisil vĂ€lja lĂŒlitada. VĂ€ljalĂŒlitamine toimub ainult siis, kui kĂ”rge prioriteediga pod'il pole kuhugi paigutuda, siis teatud sĂ”lmedelt osad pod'id evakueeritakse. Kui see mehhanism tundub teile liiga jĂ€ik, siis vĂ”ite lisada valiku preemptionPolicy: Never, ja siis ei ole vĂ€ljalĂŒlitamist, pod jÀÀb jĂ€rjekorras esimeseks ja ootab, kuni planeerija leiab sellele vabade ressurside.

SeejÀrel loome pod'i, kus mÀÀrame nime priorityClassName:

apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
 spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP
  priorityClassName: high-priority
          

VÔib luua piiramatult prioriteediklasside arvu, kuigi soovitatakse sellega mitte liialdada (nÀiteks piirduda madala, keskmise ja kÔrge prioriteediga).

Seega, vajadusel saate tÔsta kriitiliste teenuste, nagu nginx-ingress-controller, coredns jne, tÔhusust.

9. Optimeerige ETCD-klaster

Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseks

ETCD vÔib olla kogu klastrite teaduse keskpunkt. On ÀÀrmiselt oluline hoida selle andmebaasi töö kvaliteet kÔrgel, kuna just sellest sÔltub operatsioonide kiirus "Klastes". Tavaline ja suhteliselt hea lahendus on hoida ETCD klaster peatöötajatel, et tagada minimaalne viivitus kube-apiserverini. Kui see pole vÔimalik, proovige paigutada ETCD nii lÀhedale kui vÔimalik, tagades osalejate vahel hea ribalaiuse. Samuti pidage meeles, kui palju ETCD sÔlmi saab vÀlja langeda ilma klastrile kahjustamata.

Üheksa nĂ€punĂ€idet Kubernetes'i tĂ”hususe parandamiseks

Pidage meeles, et liiga paljude osalejate lisamine klastrisse vĂ”ib suurendada rikke taluvust, kuid see vĂ”ib pĂ€rssida jĂ”udlust — kĂ”ik peaks olema mÔÔdukalt.

Kui rÀÀkida teenuse seadistamisest, siis soovitusi on vÀhe:

  1. Omada head riistvara, sÔltuvalt klastrite suurusest (vÔite lugeda) siin).

  2. Reguleerige mÔned seaded, kui olete klastrit levitanud paari andmeruumi vahel vÔi kui teie vÔrk ja kettad jÀtavad soovida (saate lugeda siin).

KokkuvÔte

Selles artiklis kirjeldatakse punkte, mida meie meeskond pĂŒĂŒab jĂ€rgida. See ei ole samm-sammult juhend, vaid variandid, mis vĂ”ivad aidata klastrikulu optimeerida. On selge, et iga klaster on omamoodi ainulaadne ja seadistamise lahendused vĂ”ivad oluliselt erineda, seetĂ”ttu oleks huvitav saada teilt tagasisidet: kuidas te jĂ€lgite oma Kubernetes klastrit, millega te parandate selle tööd. Jagage oma kogemusi kommentaarides, oleks huvitav neid teada.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster