Kubernetes: IPVS ํ”„๋ก์‹œ๋Š” ์„œ๋น„์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„๋„ ๊ฐ€์ƒ ์„œ๋ฒ„๋ฅผ ๊ณ„์† ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 09์›” 13์ผ  ยท  1๋…ผํ‰  ยท  ์ถœ์ฒ˜: kubernetes/kubernetes

์ด ์–‘์‹์€ ๋ฒ„๊ทธ ์‹ ๊ณ  ๋ฐ ๊ธฐ๋Šฅ ์š”์ฒญ ์ „์šฉ์ž…๋‹ˆ๋‹ค! ๋„์›€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ [Stack Overflow] (https://stackoverflow.com/questions/tagged/kubernetes) ๋ฐ [๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ] (https://kubernetes.io/docs/tasks/debug-application- ํด๋Ÿฌ์Šคํ„ฐ / ๋ฌธ์ œ ํ•ด๊ฒฐ /).

๋ฒ„๊ทธ ๋ณด๊ณ ์„œ ๋˜๋Š” ๊ธฐ๋Šฅ ์š”์ฒญ์ž…๋‹ˆ๊นŒ? :

/ ์ข…๋ฅ˜์˜ ๋ฒ„๊ทธ

๋ฌด์Šจ ์ผ์ด ์ผ์–ด ๋‚ฌ์Šต๋‹ˆ๊นŒ?

IPVS ํ”„๋ก์‹œ๋Š” ๋‹ค์Œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ณ„์† ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, IPVS ํ”„๋ก์‹œ๋Š” ์„œ๋น„์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋”๋ผ๋„ ๊ฐ€์ƒ ์„œ๋ฒ„๋ฅผ ๊ณ„์† ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

I0912 17:08:13.555614   18274 proxier.go:1279] vs is: &ipvs.VirtualServer{Address:net.IP{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xa, 0x0, 0x0, 0x1}, Protocol:"TCP", Port:0x1bb, Scheduler:"rr", Flags:0x1, Timeout:0x2a30}, applied vs is : &ipvs.VirtualServer{Address:net.IP{0xa, 0x0, 0x0, 0x1}, Protocol:"TCP", Port:0x1bb, Scheduler:"rr", Flags:0x3, Timeout:0x2a30}
I0912 17:08:13.555659   18274 proxier.go:1291] IPVS service default/kubernetes:https was changed
I0912 17:08:13.556787   18274 proxier.go:1279] vs is: &ipvs.VirtualServer{Address:net.IP{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xa, 0x0, 0x0, 0xa}, Protocol:"UDP", Port:0x35, Scheduler:"rr", Flags:0x0, Timeout:0x0}, applied vs is : &ipvs.VirtualServer{Address:net.IP{0xa, 0x0, 0x0, 0xa}, Protocol:"UDP", Port:0x35, Scheduler:"rr", Flags:0x2, Timeout:0x0}
I0912 17:08:13.556818   18274 proxier.go:1291] IPVS service kube-system/kube-dns:dns was changed
I0912 17:08:13.557872   18274 proxier.go:1279] vs is: &ipvs.VirtualServer{Address:net.IP{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xa, 0x0, 0x0, 0xa}, Protocol:"TCP", Port:0x35, Scheduler:"rr", Flags:0x0, Timeout:0x0}, applied vs is : &ipvs.VirtualServer{Address:net.IP{0xa, 0x0, 0x0, 0xa}, Protocol:"TCP", Port:0x35, Scheduler:"rr", Flags:0x2, Timeout:0x0}
I0912 17:08:13.557902   18274 proxier.go:1291] IPVS service kube-system/kube-dns:dns-tcp was changed
I0912 17:08:13.558940   18274 proxier.go:1279] vs is: &ipvs.VirtualServer{Address:net.IP{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xa, 0x0, 0x0, 0xb6}, Protocol:"TCP", Port:0xbda, Scheduler:"rr", Flags:0x1, Timeout:0x2a30}, applied vs is : &ipvs.VirtualServer{Address:net.IP{0xa, 0x0, 0x0, 0xb6}, Protocol:"TCP", Port:0xbda, Scheduler:"rr", Flags:0x3, Timeout:0x2a30}
....
I0912 17:09:13.455862   18274 proxier.go:1279] vs is: &ipvs.VirtualServer{Address:net.IP{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xa, 0x0, 0x0, 0x1}, Protocol:"TCP", Port:0x1bb, Scheduler:"rr", Flags:0x1, Timeout:0x2a30}, applied vs is : &ipvs.VirtualServer{Address:net.IP{0xa, 0x0, 0x0, 0x1}, Protocol:"TCP", Port:0x1bb, Scheduler:"rr", Flags:0x3, Timeout:0x2a30}
I0912 17:09:13.455894   18274 proxier.go:1291] IPVS service default/kubernetes:https was changed
I0912 17:09:13.457139   18274 proxier.go:1279] vs is: &ipvs.VirtualServer{Address:net.IP{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xa, 0x0, 0x0, 0xa}, Protocol:"UDP", Port:0x35, Scheduler:"rr", Flags:0x0, Timeout:0x0}, applied vs is : &ipvs.VirtualServer{Address:net.IP{0xa, 0x0, 0x0, 0xa}, Protocol:"UDP", Port:0x35, Scheduler:"rr", Flags:0x2, Timeout:0x0}
I0912 17:09:13.457169   18274 proxier.go:1291] IPVS service kube-system/kube-dns:dns was changed
I0912 17:09:13.458292   18274 proxier.go:1279] vs is: &ipvs.VirtualServer{Address:net.IP{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xa, 0x0, 0x0, 0xa}, Protocol:"TCP", Port:0x35, Scheduler:"rr", Flags:0x0, Timeout:0x0}, applied vs is : &ipvs.VirtualServer{Address:net.IP{0xa, 0x0, 0x0, 0xa}, Protocol:"TCP", Port:0x35, Scheduler:"rr", Flags:0x2, Timeout:0x0}
I0912 17:09:13.458322   18274 proxier.go:1291] IPVS service kube-system/kube-dns:dns-tcp was changed
I0912 17:09:13.459468   18274 proxier.go:1279] vs is: &ipvs.VirtualServer{Address:net.IP{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xa, 0x0, 0x0, 0xb6}, Protocol:"TCP", Port:0xbda, Scheduler:"rr", Flags:0x1, Timeout:0x2a30}, applied vs is : &ipvs.VirtualServer{Address:net.IP{0xa, 0x0, 0x0, 0xb6}, Protocol:"TCP", Port:0xbda, Scheduler:"rr", Flags:0x3, Timeout:0x2a30}
...

์ถ”์‹ . IPVS ๊ฐ€์ƒ ์„œ๋ฒ„ ์ •๋ณด๋ฅผ ์ธ์‡„ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ๋กœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ƒ ํ•œ ์ผ :

IPVS ํ”„๋ก์‹œ๋Š” ์„œ๋น„์Šค ๋ณ€๊ฒฝ์ด ์—†์„ ๋•Œ ๊ฐ€์ƒ ์„œ๋ฒ„๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ ๋ฐฉ๋ฒ• (๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์†Œํ•œ์œผ๋กœ ์ •ํ™•ํ•˜๊ฒŒ) :

๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•˜๋ฉด ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„์•ผ ํ•  ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? :

IPVS ์„œ๋น„์Šค ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Flags = 0์œผ๋กœ IPVS ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒ์„ฑ ๋œ ์„œ๋น„์Šค์˜ ํ”Œ๋ž˜๊ทธ๊ฐ€ (0 + 2 = 2)๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Flags = 1๋กœ IPVS ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒ์„ฑ ๋œ ์„œ๋น„์Šค์˜ Flags๊ฐ€ (1 + 2 = 3)์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ๋ฌธ์ œ ์ฐธ์กฐ : https://github.com/docker/libnetwork/issues/1921

ํ™˜๊ฒฝ :

  • Kubernetes ๋ฒ„์ „ ( kubectl version ) :
  • ํด๋ผ์šฐ๋“œ ์ œ๊ณต ์—…์ฒด ๋˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ ** :
  • OS (์˜ˆ : / etc / os-release) :
  • ์ปค๋„ (์˜ˆ : uname -a ) :
  • ๋„๊ตฌ ์„ค์น˜ :
  • ๊ธฐํƒ€ :

/ sig ๋„คํŠธ์›Œํฌ
/ ํ• ๋‹น @ m1093782566

kinbug sinetwork

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

/ cc @choury @ Lion-Wei

>๋ชจ๋“  ๋Œ“๊ธ€

/ cc @choury @ Lion-Wei

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰