Kubernetes์˜ DNS ๋ฌธ์ œ. ๊ณต๊ฐœ ์‚ฌํ›„ ์กฐ์‚ฌ

๋ฉ”๋ชจ ๋ฒˆ์—ญ: ์ด๊ฒƒ์€ ํšŒ์‚ฌ ์—”์ง€๋‹ˆ์–ด๋ง ๋ธ”๋กœ๊ทธ์˜ ๊ณต๊ฐœ ์‚ฌํ›„ ๋ถ„์„์„ ๋ฒˆ์—ญํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ค€๋น„. Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ conntrack ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ผ๋ถ€ ํ”„๋กœ๋•์…˜ ์„œ๋น„์Šค๊ฐ€ ๋ถ€๋ถ„์ ์œผ๋กœ ๊ฐ€๋™ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š” ์‚ฌํ›„ ๋ถ„์„์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ  ์‹ถ๊ฑฐ๋‚˜ ํ–ฅํ›„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ถ€ DNS ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes์˜ DNS ๋ฌธ์ œ. ๊ณต๊ฐœ ์‚ฌํ›„ ์กฐ์‚ฌ
์ด๊ฒƒ์€ DNS๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค
DNS๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
DNS์˜€๊ตฐ์š”

Preply์˜ ์‚ฌํ›„ ๋ถ„์„ ๋ฐ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…

์‚ฌํ›„ ์กฐ์‚ฌ๋Š” ์˜ค์ž‘๋™์ด๋‚˜ ์ƒ์‚ฐ ๊ณผ์ •์˜ ์ผ๋ถ€ ์ด๋ฒคํŠธ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌํ›„ ๋ถ„์„์—๋Š” ์ด๋ฒคํŠธ ํƒ€์ž„๋ผ์ธ, ์‚ฌ์šฉ์ž ์˜ํ–ฅ, ๊ทผ๋ณธ ์›์ธ, ์ทจํ•œ ์กฐ์น˜ ๋ฐ ํ•™์Šตํ•œ ๊ตํ›ˆ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

SRE ๊ตฌํ•จ

๋งค์ฃผ ํ”ผ์ž์™€์˜ ๋ฏธํŒ…์—์„œ๋Š” ๊ธฐ์ˆ ํŒ€ ๊ฐ„ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํšŒ์˜์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋Š” ์‚ฌํ›„ ๋ถ„์„์œผ๋กœ, ์Šฌ๋ผ์ด๋“œ๊ฐ€ ํฌํ•จ๋œ ํ”„๋ ˆ์  ํ…Œ์ด์…˜๊ณผ ์‚ฌ๊ฑด์— ๋Œ€ํ•œ ๋ณด๋‹ค ์‹ฌ์ธต์ ์ธ ๋ถ„์„์ด ๋™๋ฐ˜๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์Šต๋‹ˆ๋‹ค. ์‚ฌํ›„์— ๋ฐ•์ˆ˜๋ฅผ ์น˜์ง€๋Š” ์•Š๋”๋ผ๋„ "๋ฌด์ฃ„" ๋ฌธํ™”๋ฅผ ๋ฐœ์ „์‹œํ‚ค๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค(ํ  ์—†๋Š” ๋ฌธํ™”). ์šฐ๋ฆฌ๋Š” ์‚ฌํ›„ ๋ถ„์„์„ ์ž‘์„ฑํ•˜๊ณ  ๋ฐœํ‘œํ•˜๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ(๋ฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค)๊ฐ€ ํ–ฅํ›„ ์œ ์‚ฌํ•œ ์‚ฌ๊ฑด์„ ์˜ˆ๋ฐฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฏฟ์œผ๋ฉฐ, ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ด๋ฅผ ๊ณต์œ ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

์‚ฌ๊ฑด์— ์—ฐ๋ฃจ๋œ ๊ฐœ์ธ์€ ์ฒ˜๋ฒŒ์ด๋‚˜ ๋ณด๋ณต์„ ๋‘๋ ค์›Œํ•˜์ง€ ์•Š๊ณ  ์ž์„ธํžˆ ๋งํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋Š๊ปด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋น„๋‚œํ•˜์ง€ ๋งˆ์„ธ์š”! ์‚ฌํ›„ ๋ถ„์„์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ฒ˜๋ฒŒ์ด ์•„๋‹ˆ๋ผ ํšŒ์‚ฌ ์ „์ฒด๋ฅผ ์œ„ํ•œ ํ•™์Šต ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค.

CALMS ๋ฐ DevOps ์œ ์ง€: S๋Š” ๊ณต์œ ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Kubernetes์˜ DNS ๋ฌธ์ œ. ๊ฒ€์‹œ

ะ”ะฐั‚ะฐ : 28.02.2020

์ €์ž : Amet U., ์•ˆ๋“œ๋ ˆ์ด S., ์ด๊ณ ๋ฅด K., ์•Œ๋ ‰์„ธ์ด P.

์ œ๋ชฉ : ์™„์„ฑ๋œ

๊ฐ„๋‹จํžˆ : Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ผ๋ถ€ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ถ€๋ถ„์  DNS ์‚ฌ์šฉ ๋ถˆ๊ฐ€(26๋ถ„)

์˜ํ–ฅ: ์„œ๋น„์Šค A, B, C์— ๋Œ€ํ•ด 15000๊ฐœ์˜ ์ด๋ฒคํŠธ ์†์‹ค

๊ทผ๋ณธ ์›์ธ: Kube-proxy๊ฐ€ conntrack ํ…Œ์ด๋ธ”์—์„œ ์ด์ „ ํ•ญ๋ชฉ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ œ๊ฑฐํ•˜์ง€ ๋ชปํ•˜์—ฌ ์ผ๋ถ€ ์„œ๋น„์Šค๊ฐ€ ์—ฌ์ „ํžˆ ์กด์žฌํ•˜์ง€ ์•Š๋Š” Pod์— ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

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: ...

๋ฐฉ์•„์‡ : Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์˜ ๋‚ฎ์€ ๋กœ๋“œ๋กœ ์ธํ•ด CoreDNS-autoscaler๋Š” ๋ฐฐํฌ์˜ Pod ์ˆ˜๋ฅผ XNUMX๊ฐœ์—์„œ XNUMX๊ฐœ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜ : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค์Œ ๋ฐฐํฌ์—์„œ๋Š” ์ƒˆ ๋…ธ๋“œ ์ƒ์„ฑ์ด ์‹œ์ž‘๋˜์—ˆ๊ณ , CoreDNS-autoscaler๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ํฌ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ์ด๋กœ ์ธํ•ด conntrack ํ…Œ์ด๋ธ”์ด ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐœ๊ฐ: Prometheus ๋ชจ๋‹ˆํ„ฐ๋ง์€ ์„œ๋น„์Šค A, B, C์— ๋Œ€ํ•ด ๋‹ค์ˆ˜์˜ 5xx ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋‹ด๋‹น ์—”์ง€๋‹ˆ์–ด์—๊ฒŒ ์ „ํ™”๋ฅผ ๊ฑธ์—ˆ์Šต๋‹ˆ๋‹ค.

Kubernetes์˜ DNS ๋ฌธ์ œ. ๊ณต๊ฐœ ์‚ฌํ›„ ์กฐ์‚ฌ
Kibana์˜ 5xx ์˜ค๋ฅ˜

ํ™œ๋™

ะ”ะตะนัั‚ะฒะธะต
์œ ํ˜•
์ฑ…์ž„๊ฐ์žˆ๋Š”
ํƒœ์Šคํฌ

CoreDNS์— ๋Œ€ํ•œ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋น„ํ™œ์„ฑํ™”
์˜ˆ๋ฐฉํ•˜๋‹ค
์•„๋ฉ”ํŠธ U.
DEVOPS-695

์บ์‹ฑ DNS ์„œ๋ฒ„ ์„ค์ •
๊ฐ์†Œํ•˜๋‹ค
๋งฅ์Šค V.
DEVOPS-665

conntrack ๋ชจ๋‹ˆํ„ฐ๋ง ์„ค์ •
์˜ˆ๋ฐฉํ•˜๋‹ค
์•„๋ฉ”ํŠธ U.
DEVOPS-674

๊ตํ›ˆ

์ž˜ ๋œ ์ :

  • ๋ชจ๋‹ˆํ„ฐ๋ง์ด ์ž˜ ๋˜๋”๊ตฐ์š”. ์‘๋‹ต์ด ๋น ๋ฅด๊ณ  ์ฒด๊ณ„์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋…ธ๋“œ ์ œํ•œ์— ๋„๋‹ฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋‚˜์š”?

  • ์‹ค์ œ ๊ทผ๋ณธ ์›์ธ์€ ์•„์ง ์•Œ๋ ค์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํŠน์ • ๋ฒ„๊ทธ ์ฝ˜ํŠธ๋ž™์—์„œ
  • ๋ชจ๋“  ์กฐ์น˜๋Š” ๊ทผ๋ณธ ์›์ธ(๋ฒ„๊ทธ)์ด ์•„๋‹Œ ๊ฒฐ๊ณผ๋งŒ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์กฐ๋งŒ๊ฐ„ DNS์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์ž‘์—…์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์šด์ด ์ข‹์•˜๋˜ ๊ณณ:

  • ๋‹ค์Œ ๋ฐฐํฌ๋Š” conntrack ํ…Œ์ด๋ธ”์„ ๋ฎ์–ด์“ด CoreDNS-autoscaler์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๋ฒ„๊ทธ๋Š” ์ผ๋ถ€ ์„œ๋น„์Šค์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค.

ํƒ€์ž„๋ผ์ธ(EET)

์‹œ๊ฐ„
ะ”ะตะนัั‚ะฒะธะต

22:13
CoreDNS-autoscaler๋Š” ํฌ๋“œ ์ˆ˜๋ฅผ XNUMX๊ฐœ์—์„œ XNUMX๊ฐœ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค.

22:18
๊ทผ๋ฌด ์ค‘์ธ ์—”์ง€๋‹ˆ์–ด๋“ค์ด ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ์ „ํ™”๋ฅผ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

22:21
๊ทผ๋ฌด์ค‘์ธ ์—”์ง€๋‹ˆ์–ด๋“ค์€ ์˜ค๋ฅ˜์˜ ์›์ธ์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

22:39
๋‹ด๋‹น ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์ตœ์‹  ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

22:40
5xx ์˜ค๋ฅ˜๊ฐ€ ๋” ์ด์ƒ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ณ  ์ƒํ™ฉ์ด ์•ˆ์ •ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํƒ์ง€ ์‹œ๊ฐ„: 4 ๋ถ„
  • ํ–‰๋™ ์ „ ์‹œ๊ฐ„: 21 ๋ถ„
  • ์ˆ˜์ • ์‹œ๊ฐ„: 1 ๋ถ„

์ถ”๊ฐ€ ์ •๋ณด

CPU ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด Linux ์ปค๋„์€ conntrack์ด๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์ด๊ฒƒ์€ ํŠน์ˆ˜ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ NAT ๋ ˆ์ฝ”๋“œ ๋ชฉ๋ก์„ ํฌํ•จํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ํŒจํ‚ท์ด ์ด์ „๊ณผ ๋™์ผํ•œ Pod์—์„œ ๋™์ผํ•œ Pod๋กœ ๋„์ฐฉํ•˜๋ฉด ์ตœ์ข… IP ์ฃผ์†Œ๋Š” ๋‹ค์‹œ ๊ณ„์‚ฐ๋˜์ง€ ์•Š๊ณ  conntrack ํ…Œ์ด๋ธ”์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
Kubernetes์˜ DNS ๋ฌธ์ œ. ๊ณต๊ฐœ ์‚ฌํ›„ ์กฐ์‚ฌ
conntrack ์ž‘๋™ ๋ฐฉ์‹

๊ฒฐ๊ณผ

์ด๊ฒƒ์€ ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ๋งํฌ๊ฐ€ ํฌํ•จ๋œ ์‚ฌํ›„ ๋ถ„์„ ์ค‘ ํ•˜๋‚˜์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ๋‹ค๋ฅธ ํšŒ์‚ฌ์— ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์‹ค์ˆ˜ํ•˜๋Š” ๊ฒƒ์„ ๋‘๋ ค์›Œํ•˜์ง€ ์•Š์œผ๋ฉฐ ์‚ฌํ›„ ๋ถ„์„ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ข€ ๋” ํฅ๋ฏธ๋กœ์šด ๊ณต๊ฐœ ์‚ฌํ›„ ๋ถ„์„์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€