Flannel: Flannel ๋„คํŠธ์›Œํฌ ๋ฐ NAT ์™ธ๋ถ€ ๊ฒฝ๋กœ

์— ๋งŒ๋“  2014๋…„ 11์›” 02์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: coreos/flannel

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๊ฒƒ์€ ๊ธฐ๋Šฅ ์š”์ฒญ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

vxLAN ์ง€์› ์˜ค๋ฒ„๋ ˆ์ด๊ฐ€ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ค๋ฒ„๋ ˆ์ด ์™ธ๋ถ€์˜ ๋Œ€์ƒ์— ๋Œ€ํ•ด์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ NAT(์˜ˆ: ๊ณต์šฉ ์ธํ„ฐ๋„ท)๋กœ ๋‚ด๋ณด๋‚ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

  • ๋‘ ๋ฒˆ์งธ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค : ์˜ค๋ฒ„๋ ˆ์ด์— Flannel์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ธฐ๋ณธ Docker NAT์™€ ๋” ์œ ์‚ฌํ•œ ๋‘ ๋ฒˆ์งธ netdev๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์˜ค๋ฒ„๋ ˆ์ด์— ๋Œ€ํ•œ ํŠธ๋ž˜ํ”ฝ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ”Œ๋ž€๋„ฌ์„ ํ†ตํ•ด ์ด๋™ํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ netdev์˜ ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋Š” ์ธํ„ฐ๋„ท ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Flannel ์„ค์ • NAT : Flannel์— ๋Œ€ํ•œ ์ผ์ข…์˜ ๊ตฌ์„ฑ ์˜ต์…˜์œผ๋กœ ์˜ค๋ฒ„๋ ˆ์ด ์™ธ๋ถ€์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์˜ค๋ฒ„๋ ˆ์ด๋ฅผ ์ข…๋ฃŒํ•  ๋•Œ Flannel์ด NAT๋ฅผ ๊ตฌ์„ฑํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • vxLAN ๊ฒŒ์ดํŠธ์›จ์ด ๋งŒ๋“ค๊ธฐ : ํ”Œ๋ž€๋„ฌ ์ธํ„ฐํŽ˜์ด์Šค์™€ NAT(๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ)์— ๋Œ€ํ•œ ๋‹ค๋ฅธ netdev๊ฐ€ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋˜๋Š” ์‹œ์Šคํ…œ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด NAT ์ธ์Šคํ„ด์Šค๋ฅผ ํ†ต๊ณผํ•˜๋„๋ก ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ƒ๊ฐ? ์ด๊ฒƒ์€ ํ”Œ๋ž€๋„ฌ์˜ ๋ฒ”์œ„ ๋‚ด์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ๋ฒ”์œ„ ๋ฐ–์ž…๋‹ˆ๊นŒ?

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

2์™€ ๋งค์šฐ ์œ ์‚ฌํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ต์…˜์ด ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. --ip-masq ์™€ ํ•จ๊ป˜ flannld๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋‚˜์™€ ์ธํ„ฐ๋„ท์œผ๋กœ ํ–ฅํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ IP ๋งˆ์Šค์ปค๋ ˆ์ด๋“œ ๊ทœ์น™์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ •ํ™•ํ•˜๊ฒŒ๋Š” ์˜ค๋ฒ„๋ ˆ์ด ์ฃผ์†Œ ๊ณต๊ฐ„ ๋‚ด๋ถ€์—์„œ ์‹œ์ž‘๋˜์—ˆ์ง€๋งŒ ์™ธ๋ถ€๋กœ ํ–ฅํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์ž…๋‹ˆ๋‹ค.

Docker๊ฐ€ ์ถ”๊ฐ€ํ•œ --ip-masq ๋ฅผ Docker ๋ฐ๋ชฌ์— ๋ณ‘ํ•ฉํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์˜ต์…˜์€ ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(์ˆ˜์ •ํ•ด์•ผ ํ•จ). ์ด๋ฅผ ํ†ตํ•ด --ip-masq=false ๋กœ Docker ๋ฐ๋ชฌ์„ ์‹คํ–‰ํ•˜๊ณ  --ip-masq ๋กœ ํ”Œ๋ž€๋„ฌ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Docker๋Š” docker0์—์„œ ๋‚˜์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ IP ๋งˆ์Šค์ปค๋ ˆ์ด๋”ฉ ๊ทœ์น™๋„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ตœ๊ทผ์— ์ถœ์‹œ๋œ Docker 1.3์—๋Š” --ip-masq ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‘ ๋ฒˆ์งธ ์˜ต์…˜์ด ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ํ”Œ๋ž€๋„ฌ ๋ธŒ๋ฆฌ์ง€๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„ ์ด ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด systemd-networkd์— ์˜์กดํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@eyakubovich ๋Š” ์•„๋งˆ๋„ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

2์™€ ๋งค์šฐ ์œ ์‚ฌํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ต์…˜์ด ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. --ip-masq ์™€ ํ•จ๊ป˜ flannld๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋‚˜์™€ ์ธํ„ฐ๋„ท์œผ๋กœ ํ–ฅํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ IP ๋งˆ์Šค์ปค๋ ˆ์ด๋“œ ๊ทœ์น™์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ •ํ™•ํ•˜๊ฒŒ๋Š” ์˜ค๋ฒ„๋ ˆ์ด ์ฃผ์†Œ ๊ณต๊ฐ„ ๋‚ด๋ถ€์—์„œ ์‹œ์ž‘๋˜์—ˆ์ง€๋งŒ ์™ธ๋ถ€๋กœ ํ–ฅํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์ž…๋‹ˆ๋‹ค.

Docker๊ฐ€ ์ถ”๊ฐ€ํ•œ --ip-masq ๋ฅผ Docker ๋ฐ๋ชฌ์— ๋ณ‘ํ•ฉํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์˜ต์…˜์€ ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(์ˆ˜์ •ํ•ด์•ผ ํ•จ). ์ด๋ฅผ ํ†ตํ•ด --ip-masq=false ๋กœ Docker ๋ฐ๋ชฌ์„ ์‹คํ–‰ํ•˜๊ณ  --ip-masq ๋กœ ํ”Œ๋ž€๋„ฌ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Docker๋Š” docker0์—์„œ ๋‚˜์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ IP ๋งˆ์Šค์ปค๋ ˆ์ด๋”ฉ ๊ทœ์น™๋„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ตœ๊ทผ์— ์ถœ์‹œ๋œ Docker 1.3์—๋Š” --ip-masq ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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