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.
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.
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.
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
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.
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
Logiau CoreDNS:
I0228 20:13:53.507780 1 event.go:221] Event(v1.ObjectReference{Kind:"Deployment", Namespace:"kube-system", Name:"coredns", UID:"2493eb55-3dc0-11ea-b3a2-02bb48f8c230", APIVersion:"apps/v1", ResourceVersion:"132690686", FieldPath:""}): type: 'Normal' reason: 'ScalingReplicaSet' Scaled down replica set coredns-6cbb6646c9 to 2
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.
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: