Problemau gyda DNS yn Kubernetes. Post mortem cyhoeddus

Nodyn cyfieithiad: Dyma gyfieithiad o bost mortem cyhoeddus o flog peirianneg y cwmni Yn barod. Mae'n disgrifio problem gyda conntrack mewn clwstwr Kubernetes, a arweiniodd at amser segur rhannol rhai gwasanaethau cynhyrchu.

Efallai y bydd yr erthygl hon yn ddefnyddiol i'r rhai sydd am ddysgu ychydig mwy am post mortems neu atal rhai problemau DNS posibl yn y dyfodol.

Problemau gyda DNS yn Kubernetes. Post mortem cyhoeddus
Nid DNS yw hwn
Ni all fod yn DNS
Roedd yn DNS

Ychydig am post mortem a phrosesau yn Preply

Mae post mortem yn disgrifio camweithio neu ryw ddigwyddiad yn y cynhyrchiad. Mae’r post mortem yn cynnwys llinell amser o ddigwyddiadau, effaith defnyddwyr, yr achos sylfaenol, y camau a gymerwyd, a’r gwersi a ddysgwyd.

Ceisio ARhPh

Mewn cyfarfodydd wythnosol gyda pizza, ymhlith y tîm technegol, rydym yn rhannu gwybodaeth amrywiol. Un o rannau pwysicaf cyfarfodydd o'r fath yw post-mortem, sy'n cael ei gyd-fynd amlaf gan gyflwyniad gyda sleidiau a dadansoddiad mwy manwl o'r digwyddiad. Er nad ydyn ni'n clapio ar ôl post-mortem, rydyn ni'n ceisio datblygu diwylliant o "ddim bai" (diwylliant di-fai). Credwn y gall ysgrifennu a chyflwyno post mortem ein helpu ni (ac eraill) i atal digwyddiadau tebyg yn y dyfodol, a dyna pam yr ydym yn eu rhannu.

Dylai unigolion sy'n gysylltiedig â digwyddiad deimlo eu bod yn gallu siarad yn fanwl heb ofni cosb na dial. Dim bai! Nid cosb yw ysgrifennu post mortem, ond cyfle dysgu i'r cwmni cyfan.

Cadwch CALMS & DevOps: Mae S ar gyfer Rhannu

Problemau gyda DNS yn Kubernetes. Post mortem

Dyddiad: 28.02.2020

Awduron: Amet U., Andrey S., Igor K., Alexey P.

Statws: Wedi gorffen

Yn fyr: Nid yw DNS rhannol ar gael (26 mun) ar gyfer rhai gwasanaethau yng nghlwstwr Kubernetes

Effaith: Collwyd 15000 o ddigwyddiadau ar gyfer gwasanaethau A, B ac C

Achos gwraidd: Nid oedd Kube-proxy yn gallu tynnu hen gofnod yn gywir o'r tabl conntrack, felly roedd rhai gwasanaethau'n dal i geisio cysylltu â phodiau nad oeddent yn bodoli

E0228 20:13:53.795782       1 proxier.go:610] Failed to delete kube-system/kube-dns:dns endpoint connections, error: error deleting conntrack entries for UDP peer {100.64.0.10, 100.110.33.231}, error: conntrack command returned: ...

Sbardun: Oherwydd y llwyth isel y tu mewn i glwstwr Kubernetes, gostyngodd CoreDNS-autoscaler nifer y codennau yn y lleoliad o dri i ddau

ateb: Arweiniodd defnydd nesaf y cymhwysiad at greu nodau newydd, ychwanegodd CoreDNS-autoscaler fwy o godau i wasanaethu'r clwstwr, a ysgogodd ailysgrifennu'r tabl conntrack

Canfod: Canfu monitro Prometheus nifer fawr o wallau 5xx ar gyfer gwasanaethau A, B ac C a chychwyn galwad i'r peirianwyr ar ddyletswydd.

Problemau gyda DNS yn Kubernetes. Post mortem cyhoeddus
Gwallau 5xx yn Kibana

Gweithgarwch

effaith
Math
Cyfrifol
Gorchwyl

Analluogi autoscaler ar gyfer CoreDNS
ataliedig
Amet U.
DEVOPS-695

Sefydlu gweinydd DNS caching
gostyngiad
V mwyaf.
DEVOPS-665

Sefydlu monitro conntrack
ataliedig
Amet U.
DEVOPS-674

Gwersi a Ddysgwyd

Beth aeth yn dda:

  • Gweithiodd y monitro yn dda. Roedd yr ymateb yn gyflym ac yn drefnus
  • Ni wnaethom gyrraedd unrhyw derfynau ar y nodau

Beth oedd yn bod:

  • Achos gwraidd go iawn anhysbys o hyd, yn debyg i byg penodol mewn contrack
  • Mae pob gweithred yn cywiro'r canlyniadau yn unig, nid y gwraidd achos (bug)
  • Roeddem yn gwybod y gallem gael problemau gyda DNS yn hwyr neu'n hwyrach, ond ni wnaethom flaenoriaethu'r tasgau

Lle cawsom lwcus:

  • Sbardunwyd y defnydd nesaf gan CoreDNS-autoscaler, a ysgrifennodd dros y tabl conntrack
  • Effeithiodd y byg hwn ar rai gwasanaethau yn unig

Llinell Amser (EET)

Amser
effaith

22:13
Gostyngodd CoreDNS-autoscaler nifer y codennau o dri i ddau

22:18
Dechreuodd peirianwyr oedd ar ddyletswydd dderbyn galwadau o'r system fonitro

22:21
Dechreuodd y peirianwyr oedd ar ddyletswydd ddarganfod achos y gwallau.

22:39
Dechreuodd peirianwyr ar ddyletswydd gyflwyno un o'r gwasanaethau diweddaraf i'r fersiwn flaenorol

22:40
Mae gwallau 5xx wedi stopio ymddangos, mae'r sefyllfa wedi sefydlogi

  • Amser i ganfod: cofnodion 4
  • Amser cyn gweithredu: cofnodion 21
  • Amser i drwsio: cofnodion 1

gwybodaeth ychwanegol

Er mwyn lleihau'r defnydd o CPU, mae'r cnewyllyn Linux yn defnyddio rhywbeth o'r enw conntrack. Yn fyr, mae hwn yn gyfleustodau sy'n cynnwys rhestr o gofnodion NAT sy'n cael eu storio mewn tabl arbennig. Pan fydd y pecyn nesaf yn cyrraedd o'r un pod i'r un pod ag o'r blaen, ni fydd y cyfeiriad IP terfynol yn cael ei ailgyfrifo, ond bydd yn cael ei gymryd o'r tabl conntrack.
Problemau gyda DNS yn Kubernetes. Post mortem cyhoeddus
Sut mae contrack yn gweithio

Canlyniadau

Roedd hwn yn enghraifft o un o'n post mortem gyda rhai dolenni defnyddiol. Yn benodol yn yr erthygl hon, rydym yn rhannu gwybodaeth a allai fod yn ddefnyddiol i gwmnïau eraill. Dyna pam nad ydym yn ofni gwneud camgymeriadau a dyna pam yr ydym yn gwneud un o'n post mortem yn gyhoeddus. Dyma rai post mortem cyhoeddus mwy diddorol:

Ffynhonnell: hab.com

Ychwanegu sylw