Kubernetes 1.16: ์ฃผ์š” ํ˜์‹  ๊ฐœ์š”

Kubernetes 1.16: ์ฃผ์š” ํ˜์‹  ๊ฐœ์š”

์˜ค๋Š˜, ์ˆ˜์š”์ผ, ์ผ์–ด๋‚œ๋‹ค Kubernetes์˜ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค - 1.16. ์šฐ๋ฆฌ ๋ธ”๋กœ๊ทธ๋ฅผ ์œ„ํ•ด ๋ฐœ์ „ํ•ด ์˜จ ์ „ํ†ต์— ๋”ฐ๋ฅด๋ฉด, ์ด๊ฒƒ์€ ์ƒˆ ๋ฒ„์ „์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” XNUMX์ฃผ๋…„ ๊ธฐ๋…์ผ์ž…๋‹ˆ๋‹ค.

์ด ์ž๋ฃŒ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ ์ •๋ณด๋Š” ๋‹ค์Œ์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. Kubernetes ๊ฐœ์„  ์‚ฌํ•ญ ์ถ”์  ํ…Œ์ด๋ธ”, ๋ณ€๊ฒฝ ๋กœ๊ทธ-1.16 ๊ด€๋ จ ๋ฌธ์ œ, ํ’€ ์š”์ฒญ, KEP(Kubernetes Enhancement Proposals) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๊ฐ€์ž!..

๋…ธ๋“œ

K8s ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ(Kubelet) ์ธก๋ฉด์—๋Š” ์ •๋ง ๋งŽ์€ ์ฃผ๋ชฉํ• ๋งŒํ•œ ํ˜์‹ (์•ŒํŒŒ ๋ฒ„์ „ ์ƒํƒœ)์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์ฒซ์งธ, ์†Œ์œ„ ยซ์ž„์‹œ ์ปจํ…Œ์ด๋„ˆยป (์ž„์‹œ ์ปจํ…Œ์ด๋„ˆ), Pod์˜ ๋””๋ฒ„๊น… ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.. ์ƒˆ๋กœ์šด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด ํฌ๋“œ์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์‹œ์ž‘ํ•˜๊ณ  ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ ์œ ์ง€๋˜๋Š” ํŠน์ˆ˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋ชฉ์ ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋””๋ฒ„๊ทธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ํฌ๋“œ ๋ฐ ์ปจํ…Œ์ด๋„ˆ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๋ช…๋ น์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. kubectl debug, ๋ณธ์งˆ์ ์œผ๋กœ ์œ ์‚ฌ kubectl exec: ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹ (์˜ˆ: exec) ํฌ๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ช…๋ น์€ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌ๋“œ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

kubectl debug -c debug-shell --image=debian target-pod -- bash

์ž„์‹œ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ(๋ฐ ์‚ฌ์šฉ ์˜ˆ)์€ ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น KEP. ํ˜„์žฌ ๊ตฌํ˜„(K8s 1.16)์€ ์•ŒํŒŒ ๋ฒ„์ „์ด๋ฉฐ, ๋ฒ ํƒ€ ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ค€ ์ค‘ ํ•˜๋‚˜๋Š” "[Kubernetes]์˜ ์ตœ์†Œ 2๊ฐœ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•ด ์ž„์‹œ ์ปจํ…Œ์ด๋„ˆ API๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ"์ž…๋‹ˆ๋‹ค.

NB: ๋ณธ์งˆ์ ์œผ๋กœ, ์‹ฌ์ง€์–ด ์ด๋ฆ„๊นŒ์ง€, ์ด ๊ธฐ๋Šฅ์€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. kubectl-๋””๋ฒ„๊ทธ์šฐ๋ฆฌ์— ๋Œ€ํ•ด ์ด๋ฏธ ์ผ๋‹ค. ์ž„์‹œ ์ปจํ…Œ์ด๋„ˆ์˜ ๋“ฑ์žฅ์œผ๋กœ ๋ณ„๋„์˜ ์™ธ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐœ๋ฐœ์ด ์ค‘๋‹จ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ํ˜์‹  - PodOverhead - ์ œ๊ณตํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฌ๋“œ์˜ ๊ฐ„์ ‘๋น„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜, ์ด๋Š” ์‚ฌ์šฉ๋œ ๋Ÿฐํƒ€์ž„์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ €์ž๋“ค์€ ์ด KEP ๊ฒŒ์ŠคํŠธ ์ปค๋„, kata ์—์ด์ „ํŠธ, init ์‹œ์Šคํ…œ ๋“ฑ์„ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” Kata ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง€๋ฉด ๋ฌด์‹œํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ถ”๊ฐ€ ํ• ๋‹น๋Ÿ‰, ๊ณ„ํš ๋“ฑ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด PodSpec ํ•„๋“œ๊ฐ€ ์ถ”๊ฐ€๋จ Overhead *ResourceList (๋ฐ์ดํ„ฐ์™€ ๋น„๊ต RuntimeClass, ํ•˜๋‚˜๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ).

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

Kubernetes 1.16: ์ฃผ์š” ํ˜์‹  ๊ฐœ์š”
ํ† ํด๋กœ์ง€ ๊ด€๋ฆฌ์ž ๊ตฌ์„ฑ ์š”์†Œ ๋‹ค์ด์–ด๊ทธ๋žจ

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

๋˜ํ•œ RuntimeClass์˜ ๊ฐœ์„  ์‚ฌํ•ญ์€ ๋ฒ ํƒ€ ์ƒํƒœ์—์„œ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ "์ด๊ธฐ์ข… ํด๋Ÿฌ์Šคํ„ฐ"์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์”จ ๋Ÿฐํƒ€์ž„ํด๋ž˜์Šค ์Šค์ผ€์ค„๋ง ์ด์ œ ๊ฐ ๋…ธ๋“œ๊ฐ€ ๊ฐ RuntimeClass๋ฅผ ์ง€์›ํ•  ํ•„์š”๊ฐ€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ํฌ๋“œ์˜ ๊ฒฝ์šฐ ํด๋Ÿฌ์Šคํ„ฐ ํ† ํด๋กœ์ง€์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  RuntimeClass๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด(Pod๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์ง€์›ํ•˜๋Š” ๋…ธ๋“œ์— ์žˆ๋„๋ก) NodeSelector ๋ฐ ํ—ˆ์šฉ์— ์ ์ ˆํ•œ ๊ทœ์น™์„ ํ• ๋‹นํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ˆ์— KEP ์‚ฌ์šฉ ์˜ˆ์™€ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ

Kubernetes 1.16์—์„œ ์ฒ˜์Œ์œผ๋กœ(์•ŒํŒŒ ๋ฒ„์ „) ๋“ฑ์žฅํ•œ ๋‘ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ง€์› ์ด์ค‘ ๋„คํŠธ์›Œํฌ ์Šคํƒ - IPv4/IPv6 - ๊ทธ๋ฆฌ๊ณ  ํฌ๋“œ, ๋…ธ๋“œ, ์„œ๋น„์Šค ์ˆ˜์ค€์—์„œ์˜ ํ•ด๋‹น "์ดํ•ด". ์—ฌ๊ธฐ์—๋Š” ํฌ๋“œ์—์„œ ์™ธ๋ถ€ ์„œ๋น„์Šค๊นŒ์ง€, ์ฐธ์กฐ ๊ตฌํ˜„(Bridge CNI, PTP CNI ๋ฐ ํ˜ธ์ŠคํŠธ-๋กœ์ปฌ IPAM ํ”Œ๋Ÿฌ๊ทธ์ธ ๋‚ด)๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹คํ–‰ ์ค‘์ธ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์™€ ์—ญํ˜ธํ™˜๋˜๋Š” ํฌ๋“œ ๊ฐ„ IPv4-IPv4 ๋ฐ IPv6-IPv6 ์ƒํ˜ธ ์šด์šฉ์„ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. IPv4 ๋˜๋Š” IPv6๋งŒ ํ•ด๋‹น. ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ KEP.

    ํฌ๋“œ ๋ชฉ๋ก์— ๋‘ ๊ฐ€์ง€ ์œ ํ˜•(IPv4 ๋ฐ IPv6)์˜ IP ์ฃผ์†Œ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์˜ˆ:

    kube-master# kubectl get pods -o wide
    NAME               READY     STATUS    RESTARTS   AGE       IP                          NODE
    nginx-controller   1/1       Running   0          20m       fd00:db8:1::2,192.168.1.3   kube-minion-1
    kube-master#

  • ์—”๋“œํฌ์ธํŠธ์šฉ ์ƒˆ API - ์—”๋“œํฌ์ธํŠธ์Šฌ๋ผ์ด์Šค API. ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์˜ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ์š”์†Œ(apiserver, etcd, Endpoints-controller, kube-proxy)์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ธฐ์กด Endpoint API์˜ ์„ฑ๋Šฅ/ํ™•์žฅ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด API๋Š” Discovery API ๊ทธ๋ฃน์— ์ถ”๊ฐ€๋˜๋ฉฐ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐ ์„œ๋น„์Šค์—์„œ ์ˆ˜๋งŒ ๊ฐœ์˜ ๋ฐฑ์—”๋“œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ฐ ์„œ๋น„์Šค๋Š” N๊ฐœ ๊ฐœ์ฒด์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. EndpointSlice, ๊ฐ๊ฐ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 100๊ฐœ ์ดํ•˜์˜ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐ’์€ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ). EndpointSlice API๋Š” ํ–ฅํ›„ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ธฐํšŒ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ ํฌ๋“œ์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ IP ์ฃผ์†Œ ์ง€์›, ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์ƒํƒœ(๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Ready ะธ NotReady), ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ๋™์  ํ•˜์œ„ ์„ค์ •.

์ง€๋‚œ๋ฒˆ ๋ฆด๋ฆฌ์ฆˆ์—์„œ ์„ ๋ณด์ธ ๊ฒƒ์ด ๋ฒ ํƒ€ ๋ฒ„์ „์— ์ด๋ฅด๋ €์Šต๋‹ˆ๋‹ค. ์ข…๋ฃŒ ์ž, ๋ช…๋ช… ๋œ service.kubernetes.io/load-balancer-cleanup ์œ ํ˜•์œผ๋กœ ๊ฐ ์„œ๋น„์Šค์— ์ฒจ๋ถ€๋ฉ๋‹ˆ๋‹ค. LoadBalancer. ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋ฅผ ์‚ญ์ œํ•  ๋•Œ ๋ชจ๋“  ๊ด€๋ จ ๋ฐธ๋Ÿฐ์„œ ๋ฆฌ์†Œ์Šค์˜ "์ •๋ฆฌ"๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ฆฌ์†Œ์Šค์˜ ์‹ค์ œ ์‚ญ์ œ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

API ๊ธฐ๊ณ„

์‹ค์ œ "์•ˆ์ •ํ™” ์ด์ •ํ‘œ"๋Š” Kubernetes API ์„œ๋ฒ„ ๋ฐ ์„œ๋ฒ„์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ ์˜์—ญ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์€ ์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋•๋ถ„์— ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ํŠน๋ณ„ํ•œ ์†Œ๊ฐœ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์„ ์•ˆ์ •์ ์ธ ์ƒํƒœ๋กœ ์ „ํ™˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌ์†Œ์Šค ์ •์˜ (CRD), ์ด๋Š” Kubernetes 1.7์ด ๋‚˜์˜จ ๋จผ ์‹œ์ ˆ๋ถ€ํ„ฐ ๋ฒ ํƒ€ ์ƒํƒœ์˜€์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ์€ 2017๋…„ XNUMX์›”์ž…๋‹ˆ๋‹ค!). ๊ด€๋ จ ๊ธฐ๋Šฅ์—๋„ ๋™์ผํ•œ ์•ˆ์ •ํ™”๊ฐ€ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

  • "ํ•˜์œ„ ๋ฆฌ์†Œ์Šค" ๊ณผ /status ะธ /scale CustomResources์˜ ๊ฒฝ์šฐ;
  • ๋ณ€ํ˜• ์™ธ๋ถ€ ์›นํ›…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” CRD ๋ฒ„์ „;
  • ์ตœ๊ทผ์— ๋ฐœํ‘œ (K8s 1.15์—์„œ) ๊ธฐ๋ณธ๊ฐ’ (๊ธฐ๋ณธ๊ฐ’) ๋ฐ ์ž๋™ ํ•„๋“œ ์ œ๊ฑฐ (์ „์ •) CustomResources์˜ ๊ฒฝ์šฐ;
  • ๊ธฐํšŒ OpenAPI v3 ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์ธก์—์„œ CRD ๋ฆฌ์†Œ์Šค์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” OpenAPI ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค.

Kubernetes ๊ด€๋ฆฌ์ž์—๊ฒŒ ์˜ค๋žซ๋™์•ˆ ์ต์ˆ™ํ•ด์ง„ ๋˜ ๋‹ค๋ฅธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž…์žฅ ์›นํ›… - ๋˜ํ•œ ์˜ค๋žซ๋™์•ˆ(K8s 1.9 ์ดํ›„) ๋ฒ ํƒ€ ์ƒํƒœ๋กœ ์œ ์ง€๋˜์—ˆ์œผ๋ฉฐ ํ˜„์žฌ๋Š” ์•ˆ์ •์ ์œผ๋กœ ์„ ์–ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ๋ฒ ํƒ€ ๋ฒ„์ „์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ธก ์ ์šฉ ะธ ๋ถ๋งˆํฌ ๋ณด๊ธฐ.

๊ทธ๋ฆฌ๊ณ  ์•ŒํŒŒ ๋ฒ„์ „์—์„œ ์œ ์ผํ•˜๊ฒŒ ์ค‘์š”ํ•œ ํ˜์‹ ์€ ์‹คํŒจ ๋ถ€ํ„ฐ SelfLink โ€” ์ง€์ •๋œ ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ๋‹ค์Œ์˜ ์ผ๋ถ€์ธ ํŠน์ˆ˜ URI ObjectMeta ะธ ListMeta (์ฆ‰, Kubernetes์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ์ฒด์˜ ์ผ๋ถ€). ์™œ ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ ๋ฒ„๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋™๊ธฐ ๋ถ€์—ฌ ์†Œ๋ฆฌ ์ด ๋ถ„์•ผ๊ฐ€ ์—ฌ์ „ํžˆ ์กด์žฌํ•ด์•ผ ํ•˜๋Š” ์‹ค์งˆ์ ์ธ(์••๋„์ ์ธ) ์ด์œ ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ณด๋‹ค ๊ณต์‹์ ์ธ ์ด์œ ๋Š” (๋ถˆํ•„์š”ํ•œ ํ•„๋“œ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ) ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ํ•„๋“œ๋ฅผ ํŠน๋ณ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” generic-apiserver์˜ ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ด๊ฒƒ์€ ๊ฐ์ฒด ๋ฐ”๋กœ ์•ž์— ์„ค์ •๋˜๋Š” ์œ ์ผํ•œ ํ•„๋“œ์ž…๋‹ˆ๋‹ค). ์ง๋ ฌํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค). ์‹ค์ œ ๋…ธํ›„ํ™”(๋ฒ ํƒ€ ๋‚ด) SelfLink Kubernetes ๋ฒ„์ „ 1.20 ๋ฐ ์ตœ์ข… ๋ฒ„์ „ 1.21์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ €์žฅ

์ด์ „ ๋ฆด๋ฆฌ์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ €์žฅ ์˜์—ญ์˜ ์ฃผ์š” ์ž‘์—…์€ ํ•ด๋‹น ์˜์—ญ์—์„œ ๊ด€์ฐฐ๋ฉ๋‹ˆ๋‹ค. CSI ์ง€์›. ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ฒ˜์Œ์œผ๋กœ (์•ŒํŒŒ ๋ฒ„์ „) ์ถœ์—ฐ ํ•œ Windows ์ž‘์—…์ž ๋…ธ๋“œ์— ๋Œ€ํ•œ CSI ํ”Œ๋Ÿฌ๊ทธ์ธ ์ง€์›: ํ˜„์žฌ ์Šคํ† ๋ฆฌ์ง€ ์ž‘์—… ๋ฐฉ์‹์€ Kubernetes ์ฝ”์–ด์˜ ํŠธ๋ฆฌ ๋‚ด ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ Powershell ๊ธฐ๋ฐ˜ Microsoft์˜ FlexVolume ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

    Kubernetes 1.16: ์ฃผ์š” ํ˜์‹  ๊ฐœ์š”
    Windows์šฉ Kubernetes์—์„œ CSI ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ฒด๊ณ„

  • ๊ธฐํšŒ CSI ๋ณผ๋ฅจ ํฌ๊ธฐ ์กฐ์ •K8s 1.12์—์„œ ๋‹ค์‹œ ์†Œ๊ฐœ๋œ ์€ ๋ฒ ํƒ€ ๋ฒ„์ „์œผ๋กœ ์„ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์œ ์‚ฌํ•œ "์Šน๊ฒฉ"(์•ŒํŒŒ์—์„œ ๋ฒ ํƒ€๋กœ)์€ CSI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ์ž„์‹œ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋‹ฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(CSI ์ธ๋ผ์ธ ๋ณผ๋ฅจ ์ง€์›).

์ด์ „ ๋ฒ„์ „์˜ Kubernetes์—์„œ ๋„์ž…๋จ ๋ณผ๋ฅจ ๋ณต์ œ ๊ธฐ๋Šฅ (๊ธฐ์กด PVC๋ฅผ DataSource ์ƒˆ๋กœ์šด PVC๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด)๋„ ์ด์ œ ๋ฒ ํƒ€ ์ƒํƒœ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

์Šค์ผ€์ค„๋Ÿฌ

์˜ˆ์•ฝ์— ๋Œ€ํ•œ ๋‘ ๊ฐ€์ง€ ์ฃผ๋ชฉํ• ๋งŒํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ(๋‘˜ ๋‹ค ์•ŒํŒŒ ๋ฒ„์ „):

  • EvenPodsSpreading - ๊ธฐํšŒ ๋กœ๋“œ์˜ "๊ณต์ •ํ•œ ๋ถ„๋ฐฐ"๋ฅผ ์œ„ํ•ด ๋…ผ๋ฆฌ์  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์žฅ์น˜ ๋Œ€์‹  ํฌ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. (์˜ˆ: ๋ฐฐํฌ ๋ฐ ReplicaSet) ๋ฐ ์ด ๋ฐฐํฌ๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค(ํ•˜๋“œ ์š”๊ตฌ ์‚ฌํ•ญ ๋˜๋Š” ์†Œํ”„ํŠธ ์กฐ๊ฑด, ์ฆ‰ ์šฐ์„  ์ˆœ์œ„). ์ด ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ์˜ต์…˜์œผ๋กœ ์ œํ•œ๋˜์–ด ์žˆ๋Š” ๊ณ„ํš๋œ ํฌ๋“œ์˜ ๊ธฐ์กด ๋ฐฐํฌ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. PodAffinity ะธ PodAntiAffinity, ๊ด€๋ฆฌ์ž๊ฐ€ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฏ€๋กœ ๊ณ ๊ฐ€์šฉ์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ  ๋ฆฌ์†Œ์Šค ์†Œ๋น„๊ฐ€ ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค. ์„ธ๋ถ€์ •๋ณด - ์—์„œ KEP.
  • ์‚ฌ์šฉ ๋ฒ ์ŠคํŠธํ• ์ •์ฑ… ะฒ RequestedToCapacityRatio ์šฐ์„ ์ˆœ์œ„ ํ•จ์ˆ˜ ํฌ๋“œ ๊ณ„ํš ์ค‘์— ์ ์šฉํ•˜๋‹ค ๋นˆ ํฌ์žฅ ๊ธฐ๋ณธ ๋ฆฌ์†Œ์Šค(ํ”„๋กœ์„ธ์„œ, ๋ฉ”๋ชจ๋ฆฌ)์™€ ํ™•์žฅ ๋ฆฌ์†Œ์Šค(์˜ˆ: GPU) ๋ชจ๋‘์— ๋Œ€ํ•œ (โ€œ์ปจํ…Œ์ด๋„ˆ์— ํฌ์žฅโ€). ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. KEP.

    Kubernetes 1.16: ์ฃผ์š” ํ˜์‹  ๊ฐœ์š”
    Pod ์˜ˆ์•ฝ: ์ตœ์  ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „(๊ธฐ๋ณธ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ง์ ‘) ๋ฐ ์‚ฌ์šฉ ์‹œ(์Šค์ผ€์ค„๋Ÿฌ ํ™•์žฅ๊ธฐ๋ฅผ ํ†ตํ•ด)

๋˜ํ•œ, ์ œ์‹œ ๊ธฐ๋ณธ Kubernetes ๊ฐœ๋ฐœ ํŠธ๋ฆฌ ์™ธ๋ถ€(ํŠธ๋ฆฌ ์™ธ๋ถ€)์—์„œ ์ž์ฒด ์Šค์ผ€์ค„๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ.

๊ธฐํƒ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ

๋˜ํ•œ Kubernetes 1.16 ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ์— ์œ ์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์— ๋Œ€ํ•œ ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ ๊ฐ€์ ธ์˜ค๋Š” ์ „์ฒด ์ˆœ์„œ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ธก์ •ํ•ญ๋ชฉ, ๋˜๋Š” ๋” ์ •ํ™•ํ•˜๊ฒŒ๋Š” ๊ณต์‹ ๊ทœ์ • K8s ๊ณ„์ธก์—. ๊ทธ๋“ค์€ ํ•ด๋‹น ํ•ญ๋ชฉ์— ํฌ๊ฒŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค ๋ฌธ์„œ. ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ(์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ถ€ ์ธก์ •ํ•ญ๋ชฉ์€ ํ˜„์žฌ ์ง€์นจ์ด ๋‚˜ํƒ€๋‚˜๊ธฐ ์ „์— ๋‹จ์ˆœํžˆ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.) ๊ฐœ๋ฐœ์ž๋Š” ์ด์ œ ๋ชจ๋“  ๊ฒƒ์„ "๋‚˜๋จธ์ง€ Prometheus ์ƒํƒœ๊ณ„์— ๋งž์ถฐ" ๋‹จ์ผ ํ‘œ์ค€์œผ๋กœ ๊ฐ€์ ธ๊ฐˆ ๋•Œ๋ผ๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ์˜ ํ˜„์žฌ ๊ตฌํ˜„์€ ์•ŒํŒŒ ์ƒํƒœ์ด๋ฉฐ, Kubernetes์˜ ํ›„์† ๋ฒ„์ „์—์„œ ๋ฒ ํƒ€(1.17) ๋ฐ ์•ˆ์ • ๋ฒ„์ „(1.18)์œผ๋กœ ์ ์ง„์ ์œผ๋กœ ์Šน๊ฒฉ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Windows ์ง€์› ๊ฐœ๋ฐœ ั ๋ชจ์Šต ์ด OS(์•ŒํŒŒ ๋ฒ„์ „)์šฉ Kubeadm ์œ ํ‹ธ๋ฆฌํ‹ฐ, ๊ธฐํšŒ RunAsUserName Windows ์ปจํ…Œ์ด๋„ˆ(์•ŒํŒŒ ๋ฒ„์ „)์˜ ๊ฒฝ์šฐ ๊ฐœ์„  ๊ทธ๋ฃน ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ •(gMSA)์€ ๋ฒ ํƒ€ ๋ฒ„์ „๊นŒ์ง€ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ง€์›ํ•˜๋‹ค vSphere ๋ณผ๋ฅจ์— ๋Œ€ํ•œ ๋งˆ์šดํŠธ/์—ฐ๊ฒฐ.
  • ์žฌํ™œ์šฉ API ์‘๋‹ต์˜ ๋ฐ์ดํ„ฐ ์••์ถ• ๋ฉ”์ปค๋‹ˆ์ฆ˜. ์ด์ „์—๋Š” ์ด๋Ÿฌํ•œ ๋ชฉ์ ์œผ๋กœ HTTP ํ•„ํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ œํ•œ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ "ํˆฌ๋ช…ํ•œ ์š”์ฒญ ์••์ถ•"์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. Accept-Encoding: gzip ํ—ค๋”์—์„œ ํฌ๊ธฐ๊ฐ€ 128KB๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด GZIP ์••์ถ• ์‘๋‹ต์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. Go ํด๋ผ์ด์–ธํŠธ๋Š” ์ž๋™์œผ๋กœ ์••์ถ•(ํ•„์ˆ˜ ํ—ค๋” ์ „์†ก)์„ ์ง€์›ํ•˜๋ฏ€๋กœ ํŠธ๋ž˜ํ”ฝ ๊ฐ์†Œ๋ฅผ ์ฆ‰์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋‹ค๋ฅธ ์–ธ์–ด์˜ ๊ฒฝ์šฐ ์•ฝ๊ฐ„์˜ ์ˆ˜์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)
  • ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค ์™ธ๋ถ€ ์ง€ํ‘œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ HPA๋ฅผ XNUMX ํฌ๋“œ์—์„œ/XNUMX ํฌ๋“œ๋กœ ํ™•์žฅ. ๊ฐœ์ฒด/์™ธ๋ถ€ ์ง€ํ‘œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ™•์žฅํ•˜๋Š” ๊ฒฝ์šฐ ์›Œํฌ๋กœ๋“œ๊ฐ€ ์œ ํœด ์ƒํƒœ์ผ ๋•Œ ์ž๋™์œผ๋กœ ๋ณต์ œ๋ณธ์„ 0๊ฐœ๋กœ ํ™•์žฅํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์ž‘์—…์ž๊ฐ€ GPU ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์œ ํœด ์ž‘์—…์ž ์ˆ˜๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ GPU ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ์— ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ ๊ทœ ๊ณ ๊ฐ - k8s.io/client-go/metadata.Client โ€” ๊ฐ์ฒด์— ๋Œ€ํ•œ "์ผ๋ฐ˜ํ™”๋œ" ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•ด. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์˜ˆ: ํ•˜์œ„ ์„น์…˜)๋ฅผ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. metadata)์„ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌ์†Œ์Šค์—์„œ ๊ฐ€์ ธ์™€ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ๋ฐ ํ• ๋‹น๋Ÿ‰ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ตฌ์ถ• ์ด์ œ ๋„ˆ๋Š” ํ•  ์ˆ˜์žˆ์–ด. ๋ ˆ๊ฑฐ์‹œ(ํŠธ๋ฆฌ์— "๋‚ด์žฅ") ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(์•ŒํŒŒ ๋ฒ„์ „).
  • kubeadm ์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ ์ถ”๊ฐ€ ์ž‘์—… ์ค‘์— ์‚ฌ์šฉ์ž ์ •์˜ ํŒจ์น˜๋ฅผ ์ ์šฉํ•˜๋Š” ์‹คํ—˜์ (์•ŒํŒŒ ๋ฒ„์ „) ๊ธฐ๋Šฅ init, join ะธ upgrade. ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”. --experimental-kustomize, ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค KEP.
  • apiserver์˜ ์ƒˆ๋กœ์šด ์—”๋“œํฌ์ธํŠธ - readyz, - ์ค€๋น„ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. API ์„œ๋ฒ„์—๋„ ์ด์ œ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. --maximum-startup-sequence-duration, ๋‹ค์‹œ ์‹œ์ž‘์„ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‘ Azure์˜ ๊ธฐ๋Šฅ ์•ˆ์ • ์„ ์–ธ: ์ง€์› ๊ฐ€์šฉ์„ฑ ์˜์—ญ (๊ฐ€์šฉ์„ฑ ์˜์—ญ) ๋ฐ ๊ต์ฐจ ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน (RG). ๋˜ํ•œ Azure์—๋Š” ๋‹ค์Œ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์ธ์ฆ ์ง€์› AAD ๋ฐ ADFS;
    • ์ฃผ์„ service.beta.kubernetes.io/azure-pip-name ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์˜ ๊ณต์šฉ IP๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ธฐํšŒ ะฝะฐัั‚ั€ะพะนะบะธ LoadBalancerName ะธ LoadBalancerResourceGroup.
  • AWS๋Š” ์ด์ œ ์ง€์› Windows์˜ EBS์šฉ ๋ฐ ์ตœ์ ํ™”๋œ EC2 API ํ˜ธ์ถœ DescribeInstances.
  • Kubeadm์€ ์ด์ œ ๋…๋ฆฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ CoreDNS ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ CoreDNS ๊ตฌ์„ฑ.
  • ๋ฐ”์ด๋„ˆ๋ฆฌ ๋“ฑ ํ•ด๋‹น Docker ์ด๋ฏธ์ง€์—์„œ ๋๋ƒˆ๋‹ค. world-executable์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฃจํŠธ ๊ถŒํ•œ ์—†์ด ์ด ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ etcd ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ด๋ฏธ์ง€ ์ค‘์ง€ ๋œ etcd2 ๋ฒ„์ „ ์ง€์›.
  • ะ’ ํด๋Ÿฌ์Šคํ„ฐ ์ž๋™ ํ™•์žฅ ์ฒ˜๋ฆฌ 1.16.0 distroless๋ฅผ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ–ˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž(DigitalOcean, Magnum, Packet)๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ/์ข…์† ์†Œํ”„ํŠธ์›จ์–ด ์—…๋ฐ์ดํŠธ: Go 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.

PS

๋ธ”๋กœ๊ทธ์—์„œ๋„ ์ฝ์–ด๋ณด์„ธ์š”.

์ถœ์ฒ˜ : habr.com

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