![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](/wp-content/uploads/2019/03/bed059552ed86580939aa18fbdf1553e.jpg)
GjatĂ« viteve tĂ« pĂ«rdorimit tĂ« Kubernetes nĂ« produkcion, ne kemi mbledhur shumĂ« histori interesante se si defektet nĂ« komponentĂ«t e ndryshĂ«m sistemor çonin nĂ« pasoja tĂ« pakĂ«ndshme dhe/ose tĂ« paqarta qĂ« ndikonin nĂ« funksionimin e kontejnerĂ«ve dhe pod-eve. NĂ« kĂ«tĂ« artikull kemi pĂ«rgatitur njĂ« pĂ«rzgjedhje tĂ« disa prej mangĂ«sive mĂ« tĂ« shpeshta ose mĂ« interesante nga ato. Edhe nĂ«se ju nuk do keni fatin tĂ« pĂ«rballeni ndonjĂ«herĂ« me situata tĂ« tilla, leximi rreth kĂ«tyre detektivĂ«ve tĂ« shkurtĂ«r â sidomos, "nga burime tĂ« para" â Ă«shtĂ« gjithmonĂ« argĂ«tues, apo jo?..
Historia 1. Supercronic dhe Docker-i i ngecur
Në një nga klasterët tanë, përherë e më shumë merrnim një Docker të "ngecur", që e pengonte funksionimin normal të klasterit. Në të njëjtën kohë, në logjet e Docker-it vërehej kjo
level=error msg="containerd: start init process" error="exit status 2: "runtime/cgo: pthread_create failed: No space left on device
SIGABRT: abort
PC=0x7f31b811a428 m=0
goroutine 0 [idle]:
goroutine 1 [running]:
runtime.systemstack_switch() \/usr\/local\/go\/src\/runtime\/asm_amd64.s:252 fp=0xc420026768 sp=0xc420026760
runtime.main() \/usr\/local\/go\/src\/runtime\/proc.go:127 +0x6c fp=0xc4200267c0 sp=0xc420026768
runtime.goexit() \/usr\/local\/go\/src\/runtime\/asm_amd64.s:2086 +0x1 fp=0xc4200267c8 sp=0xc4200267c0
goroutine 17 [syscall, locked to thread]:
runtime.goexit() \/usr\/local\/go\/src\/runtime\/asm_amd64.s:2086 +0x1
⊠Në këtë gabim, ajo që na intereson më shumë është mesazhi: pthread_create failed: No space left on device. Një studim i shpejtë tregoi se Docker nuk mund të fillonte një proces, për shkak të së cilës përherë e më shumë "ngecte".
NĂ« monitorim, ky ishte pamja:
![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](/wp-content/uploads/2019/03/bd778052c87b338493bae54b26830ef3.jpg)
Një situatë e ngjashme vërehet edhe në nyja të tjera:
![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](/wp-content/uploads/2019/03/ef512532a95ca982e4342071115dbe9f.jpg)
![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](/wp-content/uploads/2019/03/43c32ebca78755dde348ed5e7ac75c79.jpg)
Në këto nyja po ashtu shohim:
root@kube-node-1 ~ # ps auxfww | grep curl -c
19782
root@kube-node-1 ~ # ps auxfww | grep curl | head
root 16688 0.0 0.0 0 0 ? Z Feb06 0:00 | _ [curl]
root 17398 0.0 0.0 0 0 ? Z Feb06 0:00 | _ [curl]
root 16852 0.0 0.0 0 0 ? Z Feb06 0:00 | _ [curl]
root 9473 0.0 0.0 0 0 ? Z Feb06 0:00 | _ [curl]
root 4664 0.0 0.0 0 0 ? Z Feb06 0:00 | _ [curl]
root 30571 0.0 0.0 0 0 ? Z Feb06 0:00 | _ [curl]
root 24113 0.0 0.0 0 0 ? Z Feb06 0:00 | _ [curl]
root 16475 0.0 0.0 0 0 ? Z Feb06 0:00 | _ [curl]
root 7176 0.0 0.0 0 0 ? Z Feb06 0:00 | _ [curl]
root 1090 0.0 0.0 0 0 ? Z Feb06 0:00 | _ [curl]Doli se, ky sjellje është pasojë e aktivitetit të pod-it me (një utilitar në Go, që ne e përdorim për të ekzekutuar detyra cron në pod-e):
_ docker-containerd-shim 833b60bb9ff4c669bb413b898a5fd142a57a21695e5dc42684235df907825567 /var/run/docker/libcontainerd/833b60bb9ff4c669bb413b898a5fd142a57a21695e5dc42684235df907825567 docker-runc
| _ /usr/local/bin/supercronic -json /crontabs/cron
| _ /usr/bin/newrelic-daemon --agent --pidfile /var/run/newrelic-daemon.pid --logfile /dev/stderr --port /run/newrelic.sock --tls --define utilization.detect_aws=true --define utilization.detect_azure=true --define utilization.detect_gcp=true --define utilization.detect_pcf=true --define utilization.detect_docker=true
| | _ /usr/bin/newrelic-daemon --agent --pidfile /var/run/newrelic-daemon.pid --logfile /dev/stderr --port /run/newrelic.sock --tls --define utilization.detect_aws=true --define utilization.detect_azure=true --define utilization.detect_gcp=true --define utilization.detect_pcf=true --define utilization.detect_docker=true -no-pidfile
| _ [newrelic-daemon]
| _ [curl]
| _ [curl]
| _ [curl]
âŠProblemi Ă«shtĂ« si vijon: kur njĂ« detyrĂ« aktivizohet nĂ« supercronic, procesi i krijuar prej tij, nuk mund tĂ« pĂ«rfundojĂ« siç duhet, duke u shndĂ«rruar nĂ« .
Shënim: Nëse flasim më saktë, proceset krijohen nga detyrat cron, megjithatë supercronic nuk është një sistem init dhe nuk ka mundësi "të adoptojë" proceset që krijojnë fëmijët e tij. Kur ndodhin sinjalet SIGHUP ose SIGTERM, ato nuk kalojnë te proceset e krijuara, duke sjellë kështu që proceset fëmijë nuk përfundojnë dhe mbeten në statusin zombi. Më shumë rreth kësaj mund të lexoni, për shembull, në .
Ka disa mënyra për të zgjidhur problemet:
- Si njĂ« zgjidhje pĂ«rkohĂ«sore â rritni numrin e PID-ve nĂ« sistem nĂ« njĂ« moment tĂ« vetĂ«m:
/proc/sys/kernel/pid_max (since Linux 2.5.34) This file specifies the value at which PIDs wrap around (i.e., the value in this file is one greater than the maximum PID). PIDs greater than this value are not alloâ cated; thus, the value in this file also acts as a system-wide limit on the total number of processes and threads. The default value for this file, 32768, results in the same range of PIDs as on earlier kernels - Ose, mund tĂ« aktivizoni detyrat nĂ« supercronic jo direkt, por me ndihmĂ«n e tĂ« njĂ«jtit , i cili ka aftĂ«si pĂ«r tĂ« pĂ«rfunduar proceset siç duhet dhe nuk prodhon zombi.
Historia 2. "Zombit" gjatë fshirjes së cgroup
Kubelet filloi të konsumonte shumë CPU:
![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](/wp-content/uploads/2019/03/6140058330faaa3785b089dcba857056.jpg)
Kjo nuk do t'i pëlqejë askujt, prandaj armatohemi dhe filluam të hetojmë problemin. Rezultatet e hetimit rezultuan si vijon:
- Kubelet po shpenzon më shumë se një të tretën e kohës së procesorit për të nxjerrë të dhëna në lidhje me memorinë nga të gjitha cgroup:
![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20241%22%3E%3C%2Fsvg%3E)
- NĂ« listĂ«n e zhvilluesve tĂ« bĂ«rthamĂ«s mund tĂ« gjeni . NĂ«se pĂ«rshkruhet shkurt, thelbi Ă«shtĂ« se skedarĂ«t e ndryshĂ«m tmpfs dhe gjĂ«rat e ngjashme nuk fshihen plotĂ«sisht nga sistemi kur fshihet cgroup â mbeten tĂ« ashtuquajturat zombi. PavarĂ«sisht se do tĂ« fshihen nga cache e faqes, memorie nĂ« server ka shumĂ« dhe bĂ«rthama nuk sheh ndonjĂ« kuptim pĂ«r tĂ« kaluar kohĂ« nĂ« fshirjen e tyre. Prandaj, ata vazhdojnĂ« tĂ« grumbullohen. Pse ndodh kjo? Ky Ă«shtĂ« njĂ« server me detyra cron, i cili vazhdimisht krijon punĂ« tĂ« reja, dhe me to â pod tĂ« rinj. KĂ«shtu, krijohen cgroup tĂ« reja pĂ«r konteinerĂ«t, tĂ« cilat shumĂ« shpejt fshihen.
- Pse cAdvisor nĂ« kubelet shpenzon kaq shumĂ« kohĂ«? ĂshtĂ« e lehtĂ« ta shikosh me njĂ« ekzekutim tĂ« thjeshtĂ«
time cat /sys/fs/cgroup/memory/memory.stat. Nëse në një makinë të shëndetshme operacioni zë 0.01 sekonda, në makinë problematike cron02 zë 1.2 sekonda. Të gjitha janë për shkak se cAdvisor lexon të dhëna nga sysfs tepër ngadalë dhe përpiqet të marrë parasysh memorjen e përdorur dhe në cgroups zombi. - Për të fshirë me forcë zombi, provuam të pastroni cache-in, siç rekomandohej në LKML:
sync; echo 3 > /proc/sys/vm/drop_caches,â por bĂ«rthama u duk mĂ« komplekse dhe e mbylli makinĂ«n.
ĂfarĂ« duhet tĂ« bĂ«jmĂ«? Problemi rregullohet (, pĂ«rshkrimin e shihni nĂ« ) duke pĂ«rditĂ«suar bĂ«rthamĂ«n Linux nĂ« versionin 4.16.
Historia 3. Systemd dhe montimi i tij
SĂ«rish kubelet konsumon shumĂ« burime nĂ« disa nyje, por kĂ«tĂ« herĂ« â pĂ«rveç inteligjencĂ«s â tashmĂ« Ă«shtĂ« memorie:
![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](/wp-content/uploads/2019/03/044c4e23a772c61a6206b9b20aa67c1d.jpg)
Doli që kishte një problem me systemd, i përdorur në Ubuntu 16.04, dhe ndodhi gjatë menaxhimit të mount-ave që krijoheshin për lidhjen subPath nga ConfigMap ose sekret. Pas përfundimit të punës së pod-it shërbimi systemd dhe montimi i tij mbeten në sistem. Me kalimin e kohës, grumbullohen një numër i madh. Në këtë temë ka madje çështje:
- ;
- .
⊠nĂ« tĂ« fundit pĂ«rmenden PR nĂ« systemd: (çështja nĂ« systemd â ).
Problemi nuk ekziston më në Ubuntu 18.04, por nëse dëshironi të vazhdoni të përdorni Ubuntu 16.04, mund t'ju duhen zgjidhjet tona për këtë temë.
Pra, ne bëmë DaemonSet-in e mëposhtëm:
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
labels:
app: systemd-slices-cleaner
name: systemd-slices-cleaner
namespace: kube-system
spec:
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
app: systemd-slices-cleaner
template:
metadata:
labels:
app: systemd-slices-cleaner
spec:
containers:
- command:
- /usr/local/bin/supercronic
- -json
- /app/crontab
Image: private-registry.org/systemd-slices-cleaner/systemd-slices-cleaner:v0.1.0
imagePullPolicy: Always
name: systemd-slices-cleaner
resources: {}
securityContext:
privileged: true
volumeMounts:
- name: systemd
mountPath: /run/systemd/private
- name: docker
mountPath: /run/docker.sock
- name: systemd-etc
mountPath: /etc/systemd
- name: systemd-run
mountPath: /run/systemd/system/
- name: lsb-release
mountPath: /etc/lsb-release-host
imagePullSecrets:
- name: antiopa-registry
priorityClassName: cluster-low
tolerations:
- operator: Exists
volumes:
- name: systemd
hostPath:
path: /run/systemd/private
- name: docker
hostPath:
path: /run/docker.sock
- name: systemd-etc
hostPath:
path: /etc/systemd
- name: systemd-run
hostPath:
path: /run/systemd/system/
- name: lsb-release
hostPath:
path: /etc/lsb-release⊠dhe përdoret një skenar i tillë:
#!/bin/bash
# we will work only on xenial
hostrelease="/etc/lsb-release-host"
test -f ${hostrelease} && grep xenial ${hostrelease} > /dev/null || exit 0
# sleeping max 30 minutes to dispense load on kube-nodes
sleep $((RANDOM % 1800))
stoppedCount=0
# counting actual subpath units in systemd
countBefore=$(systemctl list-units | grep subpath | grep "run-" | wc -l)
# let's go check each unit
for unit in $(systemctl list-units | grep subpath | grep "run-" | awk '{print $1}'); do
# finding description file for unit (to find out docker container, who born this unit)
DropFile=$(systemctl status ${unit} | grep Drop | awk -F': ' '{print $2}')
# reading uuid for docker container from description file
DockerContainerId=$(cat ${DropFile}/50-Description.conf | awk '{print $5}' | cut -d/ -f6)
# checking container status (running or not)
checkFlag=$(docker ps | grep -c ${DockerContainerId})
# if container not running, we will stop unit
if [[ ${checkFlag} -eq 0 ]]; then
echo "Stopping unit ${unit}"
# stoping unit in action
systemctl stop $unit
# just counter for logs
((stoppedCount++))
# logging current progress
echo "Stopped ${stoppedCount} systemd units out of ${countBefore}"
fi
done⊠dhe ai niset çdo 5 minuta me ndihmën e supercronic që përmendet më parë. Dockerfile i tij dukej kështu:
FROM ubuntu:16.04
COPY rootfs /
WORKDIR /app
RUN apt-get update &&
apt-get upgrade -y &&
apt-get install -y gnupg curl apt-transport-https software-properties-common wget
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" &&
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - &&
apt-get update &&
apt-get install -y docker-ce=17.03.0*
RUN wget https://github.com/aptible/supercronic/releases/download/v0.1.6/supercronic-linux-amd64 -O
/usr/local/bin/supercronic && chmod +x /usr/local/bin/supercronic
ENTRYPOINT ["/bin/bash", "-c", "/usr/local/bin/supercronic -json /app/crontab"]Historia 4. Konkurrenca në planifikimin e podëve
ĂshtĂ« vĂ«rejtur se: nĂ«se kemi njĂ« pod qĂ« vendoset nĂ« njĂ« nod dhe imazhi i tij merret shumĂ« ngadalĂ«, atĂ«herĂ« njĂ« pod tjetĂ«r qĂ« "ka rĂ«nĂ«" nĂ« kĂ«tĂ« nod thjesht nuk fillon tĂ« tĂ«rheqĂ« imazhin e pod-it tĂ« ri. NĂ« vend tĂ« kĂ«saj, ai pret derisa tĂ« pĂ«rfundojĂ« tĂ«rheqja e imazhit tĂ« pod-it tĂ« mĂ«parshĂ«m. Si rezultat, pod-i qĂ« tashmĂ« ishte planifikuar dhe imazhi i tij mund tĂ« shkarkohej pĂ«r vetĂ«m njĂ« minutĂ«, mund tĂ« mbetet pĂ«r njĂ« kohĂ« tĂ« gjatĂ« nĂ« statusin containerCreating.
Në ngjarje do të jetë përafërsisht si më poshtë:
Normal Pulling 8m kubelet, ip-10-241-44-128.ap-northeast-1.compute.internal pulling image "registry.example.com/infra/openvpn/openvpn:master"Kështu që një imazh i vetëm nga një regjistër i ngadaltë mund të bllokojë vendosjen në nod.
Fatkeqësisht, nuk ka shumë zgjidhje për këtë:
- Përpiquni të përdorni regjistrin tuaj Docker direkt në klasër ose direkt me klasrën (për shembull, GitLab Registry, Nexus, etj.);
- Shfrytëzoni mjete të tilla si .
Historia 5. Ndalimi i nyjeve për shkak të mungesës së memories
Gjatë përdorimit të aplikacioneve të ndryshme, kemi hasur situata ku një nyje plotësisht pushon së qeni e aksesueshme: nuk përgjigjet SSH, të gjitha demonët e monitorimit ndalen, dhe në log nuk ka (ose pothuajse asgjë) anomali.
Do të tregoj me figura për një nyje ku funksiononte MongoDB.
Kështu duket atop në dëmtimi:
![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](/wp-content/uploads/2019/03/5de916d270a862cbcbb5ed23c31f698e.jpg)
Dhe kĂ«shtu â pas dĂ«mtimi:
![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](/wp-content/uploads/2019/03/0f32bf1113204cf19f4639a297e40348.jpg)
Në monitorim gjithashtu vërehet një ngritje e menjëhershme, ku nyja pushon së qeni e aksesueshme:
![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](/wp-content/uploads/2019/03/31e770cac5be32bb7f95cfbbc6b9f1ae.jpg)
Prandaj, nga screenshotet duket se:
- Memoria operativë në makinë është afër fundit;
- Vërehet një ngritje e menjëhershme të konsumit të memories operativë, pas së cilës ndalon rëndë aksesin në të gjithë makinën;
- Në Mongo bie një detyrë e madhe, e cila e detyron procesin e DBMS të përdorë më shumë memory dhe të lexojë aktivisht nga disku.
ĂshtĂ« fakt se nĂ«se nĂ« Linux pĂ«rfundon memoria e lirĂ« (ndodh presioni i memories) dhe swap nuk ka, atĂ«herĂ« nĂ« ardhja e OOM killer mund tĂ« ndodhi ekuilibrimi midis hedhjes sĂ« faqeve nĂ« cache dhe tĂ« shkruarit e tyre pĂ«rsĂ«ri nĂ« disk. KĂ«saj i merr pĂ«rsipĂ«r kswapd, i cili guximshĂ«m çliron sa mĂ« shumĂ« faqe tĂ« memories pĂ«r shpĂ«rndarje tĂ« mĂ«tejshme.
Fatkeqësisht, me ngarkesë të madhe I/O së bashku me një sasi të vogël të memories së lirë, kswapd bëhet shishja e shishkave të sistemit, sepse mbi të lidhen të gjithë ndarjet (page faults) e faqeve të memories në sistem. Kjo mund të vazhdojë shumë gjatë, nëse proceset nuk duan të përdorin më shumë memorie, por ngjiten në skaj të humbjes OOM-killer.
Kjo ngjall pyetje: pse OOM killer vjen aq vonë? Në iteracionin e tij aktual OOM killer është jashtëzakonisht i përtacë: ai do të eliminojë procesin vetëm kur dështojë përpjekja për të alokuar një faqe memories, dmth. nëse page fault kalon me gabim. Kjo nuk ndodh për një kohë të gjatë, sepse kswapd guximshëm çliron faqe memories, duke hedhur cache-in e faqeve (të gjithë I/O të diskut në sistem, në thelb) përsëri në disk. Më shumë detaje, me përshkrimin e hapave të nevojshëm për të zgjidhur probleme të tilla në bërthamë, mund të lexoni .
Kjo sjellje me bërthamën Linux 4.6+.
Historia 6. PodâĂ«tĂ« ngecin nĂ« gjendje Pending
NĂ« disa klasterĂ«, ku ekzekutohen me tĂ« vĂ«rtetĂ« shumĂ« podâĂ«, filluam tĂ« vĂ«rejmĂ« se njĂ« pjesĂ« e madhe e tyre ngec nĂ« gjendje Ja disa mundĂ«si (po supozoj se planifikuesi po funksionon normalisht):, megjithĂ«se vetĂ« kontejnerĂ«t Docker janĂ« tashmĂ« tĂ« lançuar nĂ« nyje dhe mund tĂ« punojmĂ« me ta manualisht.
Megjithatë, në përshkruaj nuk ka asgjë të keqe:
Lloji Arsyja Mosha Nga Mesazhi
---- ------ ---- ---- -------
Normal Programuar 1m programuesi-default Shpërndarja e suksesshme e sphinx-0 në ss-dev-kub07
Normal Ngjitur me Sukses 1m kontroluesi i ngjitur dhe të shkëputur Suksesi i ngjitjes për volumin "pvc-6aaad34f-ad10-11e8-a44c-52540035a73b"
Normal Vendosur me Sukses 1m kubelet, ss-dev-kub07 Vendosur me Sukses për volumin "sphinx-config"
Normal Vendosur me Sukses 1m kubelet, ss-dev-kub07 Vendosur me Sukses për volumin "default-token-fzcsf"
Normal Vendosur me Sukses 49s (x2 për 51s) kubelet, ss-dev-kub07 Vendosur me Sukses për volumin "pvc-6aaad34f-ad10-11e8-a44c-52540035a73b"
Normal Tërhequr 43s kubelet, ss-dev-kub07 Imazhi i kontejnerit "registry.example.com/infra/sphinx-exporter/sphinx-indexer:v1" tashmë është i pranishëm në makinë
Normal Krijuar 43s kubelet, ss-dev-kub07 Krijuar kontejner
Normal Nisin 43s kubelet, ss-dev-kub07 Nisin kontejner
Normal Tërhequr 43s kubelet, ss-dev-kub07 Imazhi i kontejnerit "registry.example.com/infra/sphinx/sphinx:v1" tashmë është i pranishëm në makinë
Normal Krijuar 42s kubelet, ss-dev-kub07 Krijuar kontejner
Normal Nisin 42s kubelet, ss-dev-kub07 Nisin kontejnerDuke gĂ«rmuar, ne bĂ«mĂ« supozimin se kubelet-i thjesht nuk arrin tĂ« dĂ«rgojĂ« API-serverit tĂ« gjitha informacionet nĂ« lidhje me gjendjen e podâĂ«ve, proave tĂ« liveness/readiness.
Dhe pasi studiuam ndihmën, gjetëm parametrat e mëposhtëm:
--kube-api-qps - QPS të përdoret gjatë bisedës me API-serverin e kubernetes (default 5)
--kube-api-burst - Burst të përdoret gjatë bisedës me API-serverin e kubernetes (default 10)
--event-qps - Nëse > 0, kufizo krijimet e ngjarjeve për sekondë në këtë vlerë. Nëse 0, pa kufizim. (default 5)
--event-burst - Madhësia maksimale e rekordit të ngjarjeve të përkohshme, lejon përkohësisht rekordet e ngjarjeve të arrijnë në këtë numër, duke mos e kaluar ende event-qps. Përdoret vetëm nëse --event-qps > 0 (default 10)
--registry-qps - Nëse > 0, kufizo tërheqjet e regjistrit QPS në këtë vlerë.
--registry-burst - MadhĂ«sia maksimale e tĂ«rheqjeve tĂ« pĂ«rkohshme, lejon pĂ«rkohĂ«sisht tĂ«rheqjet tĂ« arrijnĂ« nĂ« kĂ«tĂ« numĂ«r, duke mos e kaluar ende registry-qps. PĂ«rdoret vetĂ«m nĂ«se --registry-qps > 0 (default 10)As you can see, vlerat e paracaktuara â janĂ« mjaft tĂ« vogla, dhe nĂ« 90 % ato mbulojnĂ« tĂ« gjitha nevojat⊠MegjithatĂ«, nĂ« rastin tonĂ« kjo ishte e pamjaftueshme. Prandaj ne vendosĂ«m kĂ«to vlera:
--event-qps=30 --event-burst=40 --kube-api-burst=40 --kube-api-qps=30 --registry-qps=30 --registry-burst=40⊠dhe rinuam kubeletâĂ«t, pas tĂ« cilave nĂ« grafiket e qasjes nĂ« API-server ne pamĂ« kĂ«tĂ« pamje:
![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](/wp-content/uploads/2019/03/b2ae099729e55a686f6bec3012b96195.jpg)
⊠dhe po, gjithçka filloi të fluturojë!
P.S.
Për ndihmën në grumbullimin e bug-eve dhe përgatitjen e artikullit, falënderoj me shumë mirënjohje inxhinierët tanë, dhe veçanërisht kolegun nga ekipi ynë R&D, Andrey Klimentiev.).
P.P.S.
Lexoni gjithashtu në blogun tonë:
- «».
- Cikli i Këshillave dhe Trukëve për Kubernetes:
- «»;
- «»;
- «»;
- «».
Burimi: habr.com

![6 defekte tërheqëse sistemike gjatë operimit të Kubernetes [dhe zgjidhjet e tyre]](/wp-content/uploads/2019/03/0d15d1de17cd6838fc1cad19615af218.jpg)