๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Container/Kubernetes

[Kubernetes] ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐœ๋…๊ณผ ์„ค์น˜ ๋ฐฉ๋ฒ•

๋ฐ˜์‘ํ˜•

๐Ÿ”Š ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ์‹œ์ž‘ํ•˜์„ธ์š”! ๋„์ปค/์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„œ์ ์„ ์ฝ๊ณ  ๊ฐœ์ธ์ ์ธ ๋ชฉ์  ํ•˜์— ์ž‘์„ฑ๋˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŒ…์— ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์ž๋ฃŒ๋Š” ์ œ๊ฐ€ ์ง์ ‘ ์žฌ๊ตฌ์„ฑํ•˜์˜€์Œ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

 

Kubernetes


์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ๋ถ€ํ„ฐ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹œ๋ฆฌ์ฆˆ ํฌ์ŠคํŒ…์„ ๊ฒŒ์‹œํ•œ๋‹ค. ๊ทธ ์ฒซ ์ฑ•ํ„ฐ๋กœ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— ๋Œ€ํ•œ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. 

1. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋ญ˜๊นŒ?

์ง€๋‚œ ์‹œ๊ฐ„๊นŒ์ง€ ๋„์ปค ์‹œ๋ฆฌ์ฆˆ ํฌ์ŠคํŒ…์œผ๋กœ ๋„์ปค์—”์ง„์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ํ•ด์„œ ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์˜ ๋„์ปค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋„์ปค ์Šค์›œ, ์—ฌ์ฒ˜ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•œ ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๋Š” ๋„์ปค ์ปดํฌ์ฆˆ ๋“ฑ์— ๋Œ€ํ•ด ๋ฐฐ์›Œ์™”๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฌํ•œ ๊ฐœ๋…๋“ค์„ ํ•œ ๊ตฐ๋ฐ๋กœ ๋ชจ์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์ด๋‹ค. 

 

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

 

๊ทธ๋Ÿฌ๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋‹จ์ˆœํžˆ ๋„์ปค ์Šค์›œ๊ณผ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๋„๊ตฌ์˜ ๋˜ ๋‹ค๋ฅธ ์ข…๋ฅ˜์ธ ๊ฑธ๊นŒ? ์•„์ง ์Šค์Šค๋กœ์—๊ฒŒ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๋ผ๊ณ  ํ•˜๋ฉด ๋ช…ํ™•ํžˆ ์ •์˜ ๋‚ด๋ฆฌ๊ธฐ๊ฐ€ ๋ชจํ˜ธํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์ข€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์–ด๋–ค ๊ฐœ๋…์ธ์ง€ ์•Œ์•„๋ณผ ํ•„์š”๊ฐ€ ์žˆ์„ ๋“ฏ ํ•˜๋‹ค. ๊ทธ ์ „์— ์•ž์„œ ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์› ๋˜ ๋„์ปค์—”์ง„์˜ ์‹ค์ฒด(?)์— ๋Œ€ํ•ด์„œ ์งš์–ด๋ณด์•„์•ผ ํ•  ๊ฒƒ์ด ์žˆ๋‹ค.

1-1. ๋„์ปค๋Š” ์‚ฌ์‹ค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹ˆ๋‹ค?

๋„์ปค ์‹œ๋ฆฌ์ฆˆ์˜ ์ฒซ ํฌ์ŠคํŒ…์—์„œ ์šฐ๋ฆฌ๋Š” ๋„์ปค๋ผ๋Š” ๊ฒƒ์ด ์ปจํ…Œ์ด๋„ˆ์˜ ํ•œ ์ข…๋ฅ˜๋ผ๊ณ  ๋ฐฐ์› ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค. ๊ทธ ๋•Œ ๋‹น์‹œ์—๋Š” ์ฑ…์—์„œ๋„ ๊ทธ๋žฌ์ง€๋งŒ ๋„์ปค๋ผ๋Š” ๊ฐœ๋…์„ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ด์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ ์ฑ…์˜ ์ดˆ๋ฐ˜๋ถ€ ์„ค๋ช…์—์„œ๋Š” ๋„์ปค๋ฅผ OpenVZ, cri-o์™€ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ–ˆ์—ˆ๋‹ค. ์‚ฌ์‹ค ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ๋„์ปค์™€ cri-o, OpenVZ์™€ ๋™์ผํ•œ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ฐœ๋…์€ ์•„๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด cri-o, OpenVZ๋„ ์‚ฌ์‹ค์€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ข…๋ฅ˜๊ฐ€ ์•„๋‹Œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ฐ‘์ž๊ธฐ ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค..๋„์ปค๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹ˆ๋ผ๋‹ˆ? ์ด์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฒœ์ฒœํžˆ ์•„๋ž˜ ๋‚ด์šฉ์„ ํ•˜๋‚˜์”ฉ ์งš์–ด๋ณด์ž.

 

์šฐ์„  ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์ด๋ผ๋Š” ๊ฒƒ์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๋“ฑ๊ณผ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ฆ‰, ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์„ ์›น ํ†ต์‹ ์˜ ๊ทœ์น™์ธ HTTP์ฒ˜๋Ÿผ ์ผ์ข…์˜ ํ”„๋กœํ† ์ฝœ์ด์ž ๊ทœ์น™์œผ๋กœ ๋งŒ๋“  ๊ฒƒ์ด ๋ฐ”๋กœ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์ธํ„ฐํŽ˜์ด์Šค(CRI, Container Runtime Interface)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

๋„์ปค, ๊ทธ ์ค‘์—์„œ๋„ ๋„์ปค ์„œ๋ฒ„์˜ ์—ญํ• ์ด์ž ๋„์ปค์˜ ํ•ต์‹ฌ ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํ•˜๋Š” ๋„์ปค ๋ฐ๋ชฌ(dockerd)์ด ์šฐ๋ฆฌ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ œ์–ดํ•˜๋Š” ์ฆ‰, ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์˜ ํ•œ ์ข…๋ฅ˜๋ผ๊ณ  ๊ทธ๋™์•ˆ ์ธ์‹ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ์ ์œผ๋กœ ๋„์ปค ์—”์ง„์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์˜ ์—ญํ• ์„ ํ•˜๋Š” ์ผ๋ช… '์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค'๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ์€ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ธ runC๊ฐ€ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด runC ๋ผ๋Š” ๊ฒƒ์€ ์ปจํ…Œ์ด๋„ˆ์™€ 1:1์œผ๋กœ ๋งค์นญ๋˜๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค. ์ฆ‰, ์ปจํ…Œ์ด๋„ˆ๊ฐ€ 2๊ฐœ์ด๋ฉด runC๊ฐ€ 2๊ฐœ์ด๊ณ , ์ปจํ…Œ์ด๋„ˆ๊ฐ€ 10๊ฐœ๋ฉด runC๊ฐ€ 10๊ฐœ๊ฐ€ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ runC ๋ผ๋Š” ์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ๋ฐ”๋กœ containerd ๋ผ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์ธํ„ฐํŽ˜์ด์Šค(CRI)์˜ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์งˆ์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฃผ์ฒด๋Š” CRI ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ธ containerd ์ด๋‹ค.

 

์—ฌ๊ธฐ์„œ ๊ทธ๋Ÿฌ๋ฉด runC์™€ containerd ์™€์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•  ์ˆ˜ ์žˆ๋‹ค. runC๋Š” ์•ž์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ปจํ…Œ์ด๋„ˆ์™€ 1:1์œผ๋กœ ๋งค์นญ๋˜๋Š” ๊ฒƒ์œผ๋กœ, ๋‹จ์ผ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  containerd๋Š” ์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ๊ฐœ์˜ runC๋“ค์„ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ•˜๋Š” CRI ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์ข€ ๋” ๋ช…ํ™•ํ•  ๊ฒƒ์ด๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ ๋„์ปค ์—”์ง„์—์„œ containerd, runC, ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ์–ด๋–ค ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ฆผ์ด๋‹ค.

 

๋„์ปค ์—”์ง„์—์„œ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ตฌ์กฐ

 

์œ„ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค runC ๋ผ๋Š” ๋Ÿฐํƒ€์ž„์ด ๋งค์นญ๋˜์–ด ์žˆ๊ณ , ์ด runC๋ฅผ ํ™œ์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•˜๋Š”๋ฐ, ์ด runC๊ฐ€ 1๊ฐœ๊ฐ€ ์•„๋‹ˆ๊ณ  ์—ฌ๋Ÿฌ๊ฐœ์ด๋‹ค ๋ณด๋‹ˆ, ํ•˜๋‚˜์˜ ํˆด๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ runC๋ฅผ ์ œ์–ดํ•จ์œผ๋กœ์จ ๊ณง ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ด ๋•Œ 'ํ•˜๋‚˜์˜ ํˆด' ์ด๋ผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ CRI ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ธ containerd ์ด๋‹ค. ๋„์ปค ์—”์ง„์—์„œ๋Š” ๋„์ปค ๋ฐ๋ชฌ์ด ์ด containerd์™€ ํ†ต์‹ ํ•˜๋ฉด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ตฌ์กฐ์˜€๋‹ค.

1-2. ๋„์ปค ์—”์ง„์ด ์—†์–ด๋„ ๋™์ž‘ํ•˜๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค

์ด์ œ ๋„์ปค ์—”์ง„์˜ ์‹ค์ฒด(?)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. ์œ„ ๊ตฌ์กฐ์™€ ๋Œ€๋น„ํ•ด์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๊ทธ๋Ÿฌ๋ฉด ์–ด๋–ค ๊ตฌ์กฐ์ผ๊นŒ? ์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด์ž.

 

Kubernetes์—์„œ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ตฌ์กฐ

 

๋„์ปค ์—”์ง„ ๊ตฌ์กฐ์—์„œ์˜ Docker Engine์˜ ์—ญํ• ์ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” Kubernetes(kubelet)์œผ๋กœ ๋Œ€์ฒด๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” ๋„์ปค ์—”์ง„์ด ์—†์–ด๋„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ์œ„์—์„œ ๋ฐฐ์šด ๊ฒƒ์ฒ˜๋Ÿผ "์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ์ œ์–ดํ•˜๋Š” ์ฃผ์ฒด๋Š” CRI(ex. containerd, cri-o, OpenVZ, LXC, ๋“ฑ..) ์ด๊ธฐ ๋•Œ๋ฌธ"์ด๋‹ค! ๋”ฐ๋ผ์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์ผ ๋•Œ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ๋„์ปค ์—”์ง„์ด ์—†์–ด๋„ containerd ๋‚˜ cri-o์™€ ๊ฐ™์€ CRI ๊ตฌํ˜„์ฒด๋งŒ ์žˆ์–ด๋„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๋ฌผ๋ก  ์ด ๋•Œ, ๋„์ปค ์—”์ง„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๋Š” 'docker~' ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋Œ€์‹  'crictl ~' ์™€ ๊ฐ™์€ ํ‚ค์›Œ๋“œ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ช…๋ น์–ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฌผ๋ก  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” crictl ์ด๋ผ๋Š” ๋ช…๋ น์–ด๋ณด๋‹ค๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ธฐ๋Šฅ์„ ํญ๋„“๊ณ  ๋‹ค์–‘ํ•˜๊ฒŒ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด (์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•„๋Š”) kubectl ์ด๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ž, ์ด ์ •๋„๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฆฌ๋˜๋Š” ๊ฐœ๋…์ธ์ง€ ์ด์ „๋ณด๋‹ค ํ™• ์™€๋‹ฟ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ๋„์ปค ์Šค์›œ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์˜คํ”ˆ์†Œ์Šค ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํˆด๋ณด๋‹ค ์–ด๋–ค ์žฅ์ ๋“ค์ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

 

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

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

 

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ ๋ชฉ์ฐจ๋ถ€ํ„ฐ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๊ณผ ๊ฐ๊ธฐ ํŠน์ง•์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž.

2. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ทธ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋ฐฉ๋ฒ•์ด ์•ฝ๊ฐ„ ๋‹ฌ๋ผ์ง„๋‹ค. ์šฐ์„  ํฌ๊ฒŒ๋Š” ์•„๋ž˜ 2๊ฐ€์ง€ ์šฉ๋„์— ๋”ฐ๋ผ ์„ค์น˜ํ•  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ด€๋ จ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ฌ๋ผ์ง„๋‹ค.

 

์šฉ๋„ ์„ค์น˜ํ•  ํ”„๋กœ๊ทธ๋žจ๋“ค
๊ฐœ๋ฐœ ์šฉ๋„ - Minikube
- Docker for Desktop for Mac/Windows์— ๋‚ด์žฅ๋œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ๋˜๋Š” ์šด์˜ ์šฉ๋„ - kops
- kubespray
- kubeadm
- AWS์˜ EKS(Elastic Kuberenetes Service)
- GCP์˜ GKE(Google Kubernetes Engine)

 

๋ณดํ†ต์€ ๊ฐœ์ธ์ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์Šคํ„ฐ๋””ํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค๋ฉด ์œ„ ํ‘œ์—์„œ ๊ฐœ๋ฐœ ์šฉ๋„์˜ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์„ค์น˜ํ•ด์„œ ๊ณต๋ถ€๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๊ฐœ๋ฐœ ์šฉ๋„์˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ํ•˜๋‚˜์˜ ๋จธ์‹ (ex. ๊ฐœ์ธ ๋…ธํŠธ๋ถ, ํ•˜๋‚˜์˜ VM) ์ฆ‰ ํ•˜๋‚˜์˜ ๋กœ์ปฌ ๋…ธ๋“œ๋ฅผ standalone ๋ชจ๋“œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ธฐ๋Šฅ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์ง„์ •ํ•œ ํž˜์€ ์—ฌ๋Ÿฌ ๋จธ์‹  ์ฆ‰, ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์˜ ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ๊ด€๋ฆฌํ•  ๋•Œ ๋ฐœํœ˜๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•  ๋•Œ ๊ณ ๋ คํ•  ๋‹ค๋ฅธ ์ธก๋ฉด์œผ๋กœ๋Š” ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด ์žˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ์˜จํ”„๋ ˆ๋ฏธ์Šค๋กœ ๊ตฌ์„ฑํ•  ๊ฒƒ์ธ์ง€, AWS๋‚˜ GCP์™€ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋งค๋‹ˆ์ง€๋“œ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ธ์ง€, ํด๋ผ์šฐ๋“œ์˜ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•˜๋˜ ์„œ๋ฒ„ ๋‚ด์˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ•  ๊ฒƒ์ธ์ง€๊ฐ€ ์žˆ๋‹ค. ํด๋ผ์šฐ๋“œ์— ์ข…์†๋  ์ˆ˜๋ก ๊ด€๋ฆฌ์˜ ๋ณต์žก๋„๋Š” ๊ฐ์†Œํ•˜๊ธด ํ•˜์ง€๋งŒ ์ง์ ‘์ ์œผ๋กœ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์€ ์ค„์–ด๋“ค ์ˆ˜ ์žˆ๋‹ค. ๊ด€๋ฆฌ ๋ณต์žก๋„์™€ ์ž์œ ๋„์˜ trade-off ๊ด€๊ณ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๋‹ค์Œ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „์„ ์„ ํƒํ•ด๋ณด๋Š” ๊ฒƒ์ด๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ธฐ๋Šฅ์€ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธ ๋˜๊ณ  ์žˆ๋Š” ์ถ”์„ธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์†Œํ•œ ๋ฒ„์ „ ์ฐจ์ด๋กœ ์ธํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด๋‚˜ ๊ธฐ๋Šฅ์ด ๋‹ฌ๋ผ์ง€๊ฑฐ๋‚˜ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฑ… ์ €์ž๋ถ„์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•  ๋•Œ๋Š” ๋„ˆ๋ฌด ์ตœ์‹  ๋ฒ„์ „์ด๋‚˜ ๋„ˆ๋ฌด ์˜ˆ์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ๊ถŒ๊ณ ํ•œ๋‹ค. ์•ž์œผ๋กœ ์ฑ…์—์„œ ์„ค๋ช…ํ•  ๋ชจ๋“  ๋ถ€๋ถ„์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค 1.23์˜ ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค. ํ˜„์žฌ(2023.06.18) ๊ธฐ์ค€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „์€ ํ˜„์žฌ 1.27 ๋ฒ„์ „๊นŒ์ง€ ๋‚˜์˜จ ๋“ฏ ํ•˜๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‹ค์ œ ์„ค์น˜ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

2-1. Mac์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„ค์น˜ํ•˜๊ธฐ

Mac OS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ €์ด๋ฉด์„œ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•ด๋ณธ ์œ ์ €๋ผ๋ฉด Docker for Desktop for Mac ํ”„๋กœ๊ทธ๋žจ์ด ์ด๋ฏธ ๊น”๋ ค์žˆ์„ ๊ฒƒ์ด๋‹ค. ๋งฅ์—์„œ๋Š” ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ์ด์šฉํ•ด์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ ์•„์ด์ฝ˜์„ ๋ˆŒ๋Ÿฌ [Settings โž” Kubernetes] ํƒญ์œผ๋กœ ์ด๋™ํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  'Enable Kubernetes' ๋ฐ•์Šค๋ฅผ ์ฒดํฌํ•ด์ฃผ๊ณ  Apply & Restart ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์„ค์น˜๋œ๋‹ค. 

 

Docker for Desktop for Mac์—์„œ Kubernetes ์„ค์น˜ํ•˜๊ธฐ

 

๋‹ค ์„ค์น˜๋œ ํ›„, ํ„ฐ๋ฏธ๋„์—์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ๋ฒ„์ „์„ ์ถœ๋ ฅ์ด ๋˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋œ ๊ฒƒ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

$ kubectl version --short

 

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „ ํ™•์ธ

2-2. ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„ค์น˜ํ•˜๊ธฐ

๋‹ค์Œ์€ ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ, ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„์—์„œ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์„ค์น˜ํ•˜๊ณ , ์ด๋ฅผ ์ด์šฉํ•ด Minikube๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋„์ปค ์—”์ง„๋งŒ์œผ๋กœ Minikube๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์—ฌ๊ธฐ์—์„œ๋Š” ์‹ค์ œ ์„ค์น˜ ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜์ง€๋Š” ์•Š์•˜๊ณ , ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ช…๋ น์–ด๋“ค๋งŒ ๊ฒŒ์‹œํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์šฐ์„  ๊ฐ€์ƒ ๋จธ์‹ ์„ ์„ค์น˜ํ•œ ๋’ค Minikube๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„๋Š” ์šฐ๋ถ„ํˆฌ๋ผ๊ณ  ๊ฐ€์ •ํ•˜์˜€๋‹ค.

 

$ apt-get install virtualbox
$ curl -Lo minukube \
https://storage.googleapis.com/minikube/releases/v1.25.2/minikube-linux-amd64 && \
chmod +x minukube && \
sudo mv minikube /usr/local/bin/
$ curl -Lo kubectl \
http://storage.googleapis.com/kubernetes-release/release/v1.23.6/bin/linux/amd64/kubectl && \
chmod +x kubect && \
sudo mv kubectl /usr/local/bin/

 

์œ„ ๋ช…๋ น์–ด๋Š” ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„์—์„œ ๊ฐ€์ƒ๋จธ์‹ ์„ ์„ค์น˜ํ•˜๊ณ , Minikube์™€ kubectl์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด Minikube ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ƒ์„ฑํ•ด๋ณด์ž.

 

$ minikube start --kubernetes-version v1.23.5

 

๋‹ค์Œ ๋ฐฉ๋ฒ•์€ ๋„์ปค ์—”์ง„์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„์—์„œ ๋„์ปค ์—”์ง„๋งŒ์œผ๋กœ Minikube๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์šฐ์„  ์•„๋ž˜ ๋ช…๋ ์–ด๋ฅผ ํ™œ์šฉํ•ด minikube์™€ kubectl๋ฅผ ์„ค์น˜ํ•˜์ž.

 

$ curl -Lo minukube \
https://storage.googleapis.com/minikube/releases/v1.25.2/minikube-linux-amd64 && \
chmod +x minukube && \
sudo mv minikube /usr/local/bin/
$ curl -Lo kubectl \
http://storage.googleapis.com/kubernetes-release/release/v1.23.6/bin/linux/amd64/kubectl && \
chmod +x kubect && \
sudo mv kubectl /usr/local/bin/

 

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค. ์ž˜ ์„ค์น˜๋˜์—ˆ๋‹ค๋ฉด kubectl์„ ํ™œ์šฉํ•ด์„œ ๋ฒ„์ „์ด ์ž˜ ์ถœ๋ ฅ๋˜๋Š”์ง€ ํ™•์ธ ํ•˜๋ฉด ๋œ๋‹ค.

 

$ minikube start --vm-driver=none
$ kubectl version --short

 

๋งŒ์•ฝ ์„ค์น˜ํ•œ minikube๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด delete ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

$ minikube delete

2-3. ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ์„ค์น˜

๋‹ค์Œ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์ง„์ •ํ•œ ํž˜์„ ๋ง›๋ณด๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ ์„ค์น˜๊ฐ€ ๋˜๊ฒ ๋‹ค. ๋ฐ”๋กœ ์—ฌ๋Ÿฌ ์„œ๋ฒ„(๋จธ์‹ )๋กœ ๊ตฌ์„ฑ๋œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ธฐ๋Šฅ์„ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ ์–ด๋„ 3๋Œ€ ์ด์ƒ์˜ ์„œ๋ฒ„๋ฅผ ์ค€๋น„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์—ฌ๊ธฐ ์˜ˆ์‹œ์—์„œ๋Š” 1๊ฐœ์˜ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์™€ 3๊ฐœ์˜ ์›Œ์ปค ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํ™˜๊ฒฝ์„ ๋งˆ๋ จํ–ˆ๋‹ค. ๋‹จ, ๊ฐ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ, ์•„๋ž˜์˜ ์‚ฌํ•ญ๋“ค์ด ์ž˜ ์ง€์ผœ์ง€๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ฉด ์ข‹๋‹ค.

 

  • ๋ชจ๋“  ์„œ๋ฒ„์˜ ์‹œ๊ฐ„์ด ntp๋ฅผ ํ†ตํ•ด ๋™๊ธฐํ™”๋˜์–ด ์žˆ๋Š”์ง€
  • ๋ชจ๋“  ์„œ๋ฒ„์˜ ๋งฅ(MAC) ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅธ์ง€ ํ™•์ธ(ํ˜น์—ฌ๋‚˜ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋ณต์‚ฌํ•ด ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ๊ฐ™์€ ๋งฅ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๋Š” ์„œ๋ฒ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ)
  • ๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ์ตœ์†Œ 2GB ๋ฉ”๋ชจ๋ฆฌ, 2 CPU ์ด์ƒ์˜ ์ถฉ๋ถ„ํ•œ ์ž์›์„ ๊ฐ–๋Š”์ง€ ํ™•์ธ
  • ๋ชจ๋“  ์„œ๋ฒ„์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์Šค์™‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ. ๋ฉ”๋ชจ๋ฆฌ ์Šค์••์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ์˜ ์„ฑ๋Šฅ์ด ์ผ๊ด€๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„ค์น˜ ๋„๊ตฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์Šค์™‘์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ. ๋ฉ”๋ชจ๋ฆฌ ์Šค์™‘ ๋น„ํ™œ์„ฑํ™”๋Š” ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ๊ฐ ์„œ๋ฒ„ ํ„ฐ๋ฏธ๋„์—์„œ ์ž…๋ ฅํ•˜๋ฉด ๋จ
$ swapoff -a

 

ํ•„์ž๋Š” ํด๋ผ์šฐ๋“œ๋ฅผ ํ™œ์šฉํ•ด VM 4๋Œ€๋ฅผ ๊ตฌ์„ฑํ–ˆ๊ณ , ๊ฐ VM์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„๊ณผ IP ์ฃผ์†Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.(IP ์ฃผ์†Œ๋Š” ์‹ค์ œ์™€๋Š” ๋‹ค๋ฅธ ์ž„์˜์˜ IP์ฃผ์†Œ๋กœ ๋ณ€ํ™˜)

 

kube-master1 123.456.789.21
kube-worker1 123.456.789.22
kube-worker2 123.456.789.23
kube-worker3 123.456.789.24

 

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์€ ํฌ๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  1. ๊ฐ ์„œ๋ฒ„์— ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€
  2. ๊ฐ ์„œ๋ฒ„์— CRI ๊ตฌํ˜„์ฒด(ex. containerd, cri-o ๋“ฑ..)์™€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋„๊ตฌ(ex. kubeadm)๋ฅผ ์„ค์น˜
  3. ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”
  4. ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ ์• ๋“œ์˜จ ์„ค์น˜

๋จผ์ € 1๋ฒˆ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์„œ๋ฒ„์—์„œ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์ž. ํ˜น์‹œ ์•„๋ž˜ ๋ช…๋ น์–ด ์ค‘ ํ‘œ์ค€ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„๋“ค์ธ ํ…์ŠคํŠธ๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” cat <<EOF ์— ๋Œ€ํ•ด ๋ชจ๋ฅธ๋‹ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

 

$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
$ cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF

 

๋‹ค์Œ์€ 2๋ฒˆ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ด๋ณด๋„๋ก ํ•˜์ž. ์šฐ์„  ์ด๋ฒˆ ์˜ˆ์‹œ์—์„œ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ํ™œ์šฉํ•  CRI ๊ตฌํ˜„์ฒด๋กœ์„œ, containerd๋ฅผ ์„ค์น˜ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด containerd๋Š” ๋„์ปค๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๊ฐ™์ด ์„ค์น˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋„์ปค์— ํฌํ•จ๋œ containerd๋ฅผ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ์—ฐ๋™ํ•ด๋ณด๋„๋ก ํ•˜์ž. ์•„๋ž˜ ๋ช…๋ น์–ด๋Š” ๋„์ปค๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ CRI๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š” containerd ์„ค์ • ํŒŒ์ผ์„ ๋ฎ์–ด์”Œ์šด ๋’ค containerd๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰ ์ค„์˜ ๋ช…๋ น์–ด๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ œ์–ดํ•˜๋Š” kubelet, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋…ธ๋“œ ๊ฐ„์˜ ํ†ต์‹  ๋ฐ ๋„คํŠธ์›Œํฌ ๊ธฐํƒ€ ์„ค์ •์„ ์ˆ˜ํ–‰ํ•˜๋Š” kubadm, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” CLI์ธ kubectl, ๋งˆ์ง€๋ง‰์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” kubernetes-cni๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

 

์ฐธ๊ณ ๋กœ, ํ˜„์žฌ ์˜ˆ์‹œ์—์„œ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค 1.23.6 ๋ฒ„์ „ ๊ธฐ์ค€์ด๊ธฐ ๋–„๋ฌธ์— kubelet, kubeadm, kubectl์€ 1.23.6 ๋ฒ„์ „์„ ๋ช…์‹œํ•ด์ฃผ๋„๋ก ํ•˜์ž.(์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€ ๋ฒ„์ „์„ ๋งž์ถฐ์ฃผ์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฝ์งˆ์„ ๋งŽ์ด ํ•จ..) ๋งŒ์•ฝ ๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์ด ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด 'apt-cache policy [๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„]' ํ˜•ํƒœ๋กœ ๋ฒ„์ €๋‹์„ ๊ฒ€์ƒ‰ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

$ apt-get update
$ wget -qO- get.docker.com | sh
$ containerd config default > /etc/containerd/config.toml
$ service containerd restart
$ apt-get install -y kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00 kubernetes-cni

 

๋‹ค์Œ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์˜ ์—ญํ• ์„ ํ•  ์„œ๋ฒ„๋กœ ๊ฐ€์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ์ด ์ ˆ์ฐจ๋Š” ๋„์ปค ์Šค์›œ์—์„œ ๋ฐฐ์› ๋˜ ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค.

 

$ kubeadm init --apiserver-advertise-address 123.456.789.21 \
--pod-network-cidr=192.168.0.0/16 \
--cri-socket /run/containerd/containerd.sock \
--kubernetes-version 1.23.6

 

์œ„ ๋ช…๋ น์–ด์—์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜ต์…˜๋“ค์ด ๋ถ™์–ด์žˆ๋Š”๋ฐ, ์ด์— ๋Œ€ํ•ด์„œ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์ž.

 

  • --apiserver-advertise-address : ๋‹ค๋ฅธ ๋…ธ๋“œ๊ฐ€ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” IP ์ฃผ์†Œ๋ฅผ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•จ. ๋„์ปค ์Šค์›œ๋•Œ์™€ ์œ ์‚ฌ
  • --pod-network-cidr : ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์‚ฌ์šฉํ•  ์ปจํ…Œ์ด๋„ˆ๋“ค์˜ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ์ด๋ฉฐ, ๊ฐ ์„œ๋ฒ„์˜ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ๊ณผ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ์ ์ ˆํžˆ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•จ(์ฐธ๊ณ ๋กœ ํ•ด๋‹น ์˜ต์…˜ ๊ฐ’์— ๋ช…์‹œํ•  ๋•Œ ์‚ฌ์šฉํ•œ IP ์ฃผ์†Œ๋’ค์˜ ์ˆซ์ž์ธ CIDR์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ๋ชจ๋ฅธ๋‹ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ )
  • --kubernetes-version : ์œ„์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•  ๋•Œ ํŠน์ • ๋ฒ„์ „์„ ๋ช…์‹œํ•ด์ฃผ์–ด ์„ค์น˜ํ•ด์ฃผ์—ˆ๋‹ค๋ฉด ํ•ด๋‹น ์˜ต์…˜์— ๋ช…์‹œํ•ด์ฃผ์—ˆ๋˜ ํŠน์ • ๋ฒ„์ „์„ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•จ
  • --cri-socket : ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์‚ฌ์šฉํ•  CRI ๊ตฌํ˜„์ฒด๋ฅผ ๋ช…์‹œ. ๋งŒ์•ฝ ๋„์ปค์™€ containerd ์–‘์ชฝ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด๋ผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋จผ์ € ๋„์ปค๋ฅผ ํ™œ์šฉํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ, ์—ฌ๊ธฐ์—์„œ๋Š” containerd๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์ผ๋ถ€๋Ÿฌ ๋ช…์‹œ๋ฅผ ํ•ด์ค€ ๊ฒƒ. ์ฐธ๊ณ ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค 1.24 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ๋„์ปค ์—”์ง„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ํ•จ. ํ˜„์žฌ ๋ฒ„์ „์ด 1.27์ด๊ธฐ ๋•Œ๋ฌธ์— ๋”์ด์ƒ ๋„์ปค์—”์ง„์„ ํ™œ์šฉํ•œ ์ปจํ…Œ์ด๋„ˆ ์ œ์–ด๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ๋ถˆ๊ฐ€๋Šฅ - ์ถœ์ฒ˜: ๊ณต์‹ ๋ฌธ์„œ)

๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ์ดˆ๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ํ‘œ์ค€์ถœ๋ ฅ์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋‚ด์šฉ์ด ๋‚˜์˜ค๋Š”๋ฐ, ๊ทธ ํ‘œ์ค€์ถœ๋ ฅ์— ์žˆ๋Š” ๋‚ด์šฉ์„ ์ฝ์–ด๋ณด๋ฉด ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์ˆ˜๋กœ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ๋ช…๋ น์–ด๋“ค์ด ์“ฐ์—ฌ์ ธ ์žˆ๋‹ค. ๊ทธ ๋ช…๋ น์–ด๋“ค์„ ์—ฐ์†ํ•ด์„œ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ์ˆ˜ํ–‰ํ•ด์ฃผ์ž.

 

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

์ด์ œ ๋„์ปค ์Šค์›œ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋‹ค๋ฅธ ์›Œ์ปค ๋…ธ๋“œ์—์„œ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋กœ join ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๊ฐ€ ํ† ํฐ๊ณผ ํ•จ๊ป˜ ํ„ฐ๋ฏธ๋„์— ์ œ๊ณต๋˜์—ˆ์„ ๊ฒƒ์ด๋‹ค. ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ฐ ์›Œ์ปค ๋…ธ๋“œ ๋จธ์‹ ์œผ๋กœ ์ด๋™ํ•ด join ์‹œ์ผœ์ฃผ๋„๋ก ํ•˜์ž.

 

$ kubeadm join 123.456.789.21:6443 \
--token [TOKEN] \
--cri-socket /run/containerd/containerd.sock

 

๋งŒ์•ฝ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค 1.24 ๋ฒ„์ „ ์ดํ›„๋ฅผ ํ™œ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์œ„์—์„œ --cri-socket ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋  ๊ฒƒ์ด๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋” ์ด์ƒ ๋„์ปค ์—”์ง„์„ ํ™œ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ œ์–ด ๊ธฐ๋Šฅ์ด ์ง€์›๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.(๊ณต์‹ ๋ฌธ์„œ)

 

๋งˆ์ง€๋ง‰์œผ๋กœ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ์ปจํ…Œ์ด๋„ˆ๋“ค ๊ฐ„์— ํ†ต์‹ ์„ ์œ„ํ•ด flannel, weaveNet, calico๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ฑ… ์˜ˆ์‹œ์—์„œ๋Š” calico๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋กœ ์ด๋™ํ•ด์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•ด calico ๋„คํŠธ์›Œํฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ด์ฃผ์ž.

 

$ kubectl apply -f https://docs.projectcalico.org/v3.22/manifests/calico.yaml

 

๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ --pod-network-cidr ์˜ต์…˜์— 192.168.0.0/16์ด ์•„๋‹Œ ๋ณ„๋„์˜ IP ๋Œ€์—ญ์„ ์„ค์ •ํ–ˆ๋‹ค๋ฉด calico.yaml ํŒŒ์ผ์„ wget์„ ํ†ตํ•ด ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ํ›„, ํ•ด๋‹น ํŒŒ์ผ์˜ CALICO_IPV4POOL_CIDR ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ž…๋ ฅํ•ด์ค€ ๋ณ„๋„์˜ IP ๋Œ€์—ญ์„ ์ž…๋ ฅํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. wget ๋ช…๋ น์–ด๋กœ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ณ  vim, nano ๋“ฑ ํ…์ŠคํŠธ ํŽธ์ง‘ ์—๋””ํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ calico.yaml ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค.

 

$ wget https://docs.projectcalico.org/v3.22/manifests/calico.yaml

 

์ด์ œ ๋ชจ๋“  ์„ค์น˜๊ณผ์ •์ด ๋‹ค ๋์ด ๋‚ฌ๋‹ค. ์ •์ƒ์ ์œผ๋กœ ์ž˜ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ธฐ ์œ„ํ•ด, ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์‹คํ–‰ ๋ชฉ๋ก์„ ํ™•์ธํ•œ๋‹ค. ์ „๋ถ€ Running ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉด ์ž˜ ์„ค์น˜๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

$ kubectl get pods --namespace kube-system

 

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์•„๊นŒ join ์‹œํ‚จ ๋…ธ๋“œ๋“ค์ด ์ž˜ ์žˆ๋Š”์ง€ ๋ณด๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•ด ์‚ดํŽด๋ณด์ž.

 

$ kubectl get nodes

 

 

์œ„ ํ™”๋ฉด์ฒ˜๋Ÿผ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ตฌ์„ฑ ๋…ธ๋“œ๋“ค์ด ์ž˜ ๋ณด์—ฌ์ง€๋Š” ๊ฒƒ์ด ํ™•์ธ๋œ๋‹ค. 

 

์ถ”๊ฐ€๋กœ kubeadm ์œผ๋กœ ์„ค์น˜๋œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๊ฐ ๋…ธ๋“œ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„ค์น˜ ๋„์ค‘ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธ์šฉ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

$ kubeadm reset

 

๊ทธ๋ฆฌ๊ณ  ํ•„์ž๋„ ์„ค์น˜ํ•˜๋ฉด์„œ ๊ฒช์—ˆ๋˜ ์‚ฝ์งˆ..์ด์˜€๋Š”๋ฐ, ์œ„ ๋ช…๋ น์–ด๋กœ ์„ค์‚ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ญ์ œํ•ด์ค€๋‹ค๊ณ  ํ•œ๋“ค ํ•ด๋‹น ์„œ๋ฒ„์˜ /etc/kubernetes/ ๋””๋ ‰ํ† ๋ฆฌ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„ค์ • ๊ฐ’์ด ์‚ญ์ œํ•œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ์–ด์„œ ์ƒˆ๋กญ๊ฒŒ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ญ์ œํ•ด์ฃผ๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๋„ ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋‹ค.

 

ํ•ด๋‹น ๋ฐฉ๋ฒ•๋“ค ์ด์™ธ์— kops๋ฅผ ํ™œ์šฉํ•ด์„œ AWS, GCP์—์„œ ์ œ๊ณตํ•˜๋Š” VM ์„œ๋ฒ„์—์„œ ์ง์ ‘ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๊ณ , ์•„์˜ˆ AWS์˜ EKS๋‚˜ GCP์˜ GKE์™€ ๊ฐ™์€ ๋งค๋‹ˆ์ง€๋“œ ์„œ๋น„์Šค๋ฅผ ํ™œ์šฉํ•ด์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•๋“ค์— ๋Œ€ํ•ด์„œ๋Š” ์ฑ…์— ์ž์„ธํ•˜๊ฒŒ ๋‚˜์™€์žˆ์œผ๋ฏ€๋กœ ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์ฑ… ์›๋ณธ์„ ํ™•์ธํ•ด๋ณด๋„๋ก ํ•˜์ž. ์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ์ƒ๋žตํ•˜๋„๋ก ํ•œ๋‹ค.


์ด๋ ‡๊ฒŒ ํ•ด์„œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์„ ํ†ตํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ฐœ๋…์ด ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…๋ถ€ํ„ฐ๋Š” ์ด์ œ ๋ณธ๊ฒฉ์ ์ธ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™œ์šฉ๋ฒ•์— ๋Œ€ํ•ด ํ•™์Šตํ•ด๋ณด๋„๋ก ํ•˜์ž.

๋ฐ˜์‘ํ˜•