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

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

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

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

ํ† ํด๋กœ์ง€ ์ธ์‹ ๋ผ์šฐํŒ…

Kubernetes ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์˜ค๋žซ๋™์•ˆ ์ด ๊ธฐ๋Šฅ์„ ๊ธฐ๋‹ค๋ ค์™”์Šต๋‹ˆ๋‹ค. ํ† ํด๋กœ์ง€ ์ธ์‹ ์„œ๋น„์Šค ๋ผ์šฐํŒ…. ๋งŒ์•ฝ KEP 2018๋…„ XNUMX์›”์— ์‹œ์ž‘๋˜์—ˆ์œผ๋ฉฐ ๊ณต์‹์ ์œผ๋กœ๋Š” ์ƒ์Šน โ€” 2๋…„ ์ „, ํ”ํžˆ ์žˆ๋˜ ๋ฌธ์ œ๋“ค (์ข‹๋‹ค ๊ทธ๊ฒƒ) - ๊ทธ๋ฆฌ๊ณ  ๋ช‡ ์‚ด ๋” ๋งŽ์•„์กŒ๋Š”๋ฐ...

์ผ๋ฐ˜์ ์ธ ์•„์ด๋””์–ด๋Š” Kubernetes์— ์žˆ๋Š” ์„œ๋น„์Šค์— ๋Œ€ํ•ด "๋กœ์ปฌ" ๋ผ์šฐํŒ…์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ "์ง€์—ญ์„ฑ"์€ "๋™์ผํ•œ ํ† ํด๋กœ์ง€ ์ˆ˜์ค€"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (ํ† ํด๋กœ์ง€ ์ˆ˜์ค€), ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์„œ๋น„์Šค์— ๋Œ€ํ•ด ๋™์ผํ•œ ๋…ธ๋“œ,
  • ๋™์ผํ•œ ์„œ๋ฒ„ ๋ž™,
  • ๊ฐ™์€ ์ง€์—ญ
  • ๋™์ผํ•œ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด,
  • ...

์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ:

  • ์—ฌ๋Ÿฌ ๊ฐ€์šฉ์„ฑ ์˜์—ญ(๋‹ค์ค‘ AZ)์ด ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์„ค์น˜์˜ ํŠธ๋ž˜ํ”ฝ ์ ˆ๊ฐ - ์ฐธ์กฐ. ์‹ ์„ ํ•œ ๊ทธ๋ฆผ ๋™์ผํ•œ ์ง€์—ญ์ด์ง€๋งŒ AWS์˜ ๋‹ค๋ฅธ AZ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์˜ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋” ๋‚ฎ์€ ์„ฑ๋Šฅ ๋Œ€๊ธฐ ์‹œ๊ฐ„/๋” ๋‚˜์€ ์ฒ˜๋ฆฌ๋Ÿ‰;
  • ๊ฐ ์ƒค๋“œ์˜ ๋…ธ๋“œ์— ๋Œ€ํ•œ ๋กœ์ปฌ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒค๋“œ ์„œ๋น„์Šค
  • ๋กœ๊ทธ๊ฐ€ ์ˆ˜์ง‘๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋™์ผํ•œ ๋…ธ๋“œ์— fluentd(๋˜๋Š” ์œ ์‚ฌํ’ˆ) ๋ฐฐ์น˜
  • ...

ํ† ํด๋กœ์ง€์— ๋Œ€ํ•ด "์•Œ๊ณ  ์žˆ๋Š”" ์ด๋Ÿฌํ•œ ๋ผ์šฐํŒ…์„ ๋„คํŠธ์›Œํฌ ์„ ํ˜ธ๋„๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ ์„ ํ˜ธ๋„, ํฌ๋“œ ์„ ํ˜ธ๋„/๋ฐ˜์นœํ™”์„ฑ ๋˜๋Š” ๋“ฑ์žฅ ๊ทธ๋ฆฌ ์˜ค๋ž˜ ์ „ ์•„๋‹ˆ์—์š”. ํ† ํด๋กœ์ง€ ์ธ์‹ ๋ณผ๋ฅจ ์Šค์ผ€์ค„๋ง (๊ทธ๋ฆฌ๊ณ  ๋ณผ๋ฅจ ํ”„๋กœ๋น„์ €๋‹). ํ˜„์žฌ ๊ตฌํ˜„ ์ˆ˜์ค€ ServiceTopology Kubernetes - ์•ŒํŒŒ ๋ฒ„์ „.

๊ธฐ๋Šฅ์˜ ์ž‘๋™ ๋ฐฉ์‹๊ณผ ์ด๋ฏธ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฝ์–ด๋ณด์„ธ์š”. ์ด ๊ธฐ์‚ฌ ์ž‘๊ฐ€ ์ค‘ ํ•œ ๋ช…์—๊ฒŒ์„œ.

IPv4/IPv6 ๋“€์–ผ ์Šคํƒ ์ง€์›

์ƒ๋‹นํ•œ ์ง„์ „ ๊ฒฐ์ •๋œ ๋˜ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ: 2๊ฐœ์˜ IP ์Šคํƒ์„ ๋™์‹œ์— ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. K8s 1.16. ํŠนํžˆ ์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํ๋ธŒ ํ”„๋ก์‹œ์—์„œ ๊ตฌํ˜„ ๋‘ ๋ชจ๋“œ(IPv4 ๋ฐ IPv6)์—์„œ ๋™์‹œ ์ž‘๋™ ๊ฐ€๋Šฅ์„ฑ;
  • ะฒ Pod.Status.PodIPs ์ถœ์—ฐ ํ•œ ํ•˜ํ–ฅ API ์ง€์›(๋™์‹œ์— /etc/hosts ์ด์ œ๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ IPv6 ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋“€์–ผ ์Šคํƒ ์ง€์› ์ข…๋ฅ˜ (Kubernetes IN Docker) ๋ฐ kubeadm;
  • e2e ํ…Œ์ŠคํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

Kubernetes 1.17: ์ฃผ์š” ํ˜์‹  ๊ฐœ์š”
์ผ๋Ÿฌ์ŠคํŠธ๋ ˆ์ด์…˜ KIND์—์„œ ๋“€์–ผ ์Šคํƒ IPV4/IPv6 ์‚ฌ์šฉ

CSI ์ง„ํ–‰ ์ƒํ™ฉ

์•ˆ์ •์ ์ด๋ผ๊ณ  ์„ ์–ธ๋จ ํ† ํด๋กœ์ง€ ์ง€์› CSI ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€์šฉ์œผ๋กœ ์ฒ˜์Œ ๋„์ž…๋จ K8s 1.12.

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

ํ˜„์žฌ AWS EBS ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ๋ฒ ํƒ€ ๋ฒ„์ „(kubernetes.io/aws-ebs) ๋ฐ GCE PD(kubernetes.io/gce-pd). ๊ธฐํƒ€ ์ €์žฅ์‹œ์„ค์— ๋Œ€ํ•œ ์ „๋ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ๋Š” K8์˜ "์ „ํ†ต์ ์ธ" ์Šคํ† ๋ฆฌ์ง€ ์ง€์›์ด CSI์— ์–ด๋–ป๊ฒŒ ๋„์ž…๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ. ๊ทธ๋ฆฌ๊ณ  CSI ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋ฒ ํƒ€ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณ„๋„ ์ถœํŒ ํ”„๋กœ์ ํŠธ ๋ธ”๋กœ๊ทธ์—์„œ

๋˜ํ•œ K1.17s 8์—์„œ ์‹œ์ž‘๋œ(์•ŒํŒŒ ๊ตฌํ˜„) CSI ๋งฅ๋ฝ์˜ ๋˜ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์€ Kubernetes 1.12 ๋ฆด๋ฆฌ์Šค์—์„œ ๋ฒ ํƒ€ ์ƒํƒœ(์ฆ‰, ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋จ)์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ƒ…์ƒท ์ƒ์„ฑ ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค๋กœ๋ถ€ํ„ฐ์˜ ํšŒ๋ณต. ๋ฒ ํƒ€ ์ถœ์‹œ ๊ณผ์ •์—์„œ Kubernetes ๋ณผ๋ฅจ ์Šค๋ƒ…์ƒท์— ์ ์šฉ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • CSI ์™ธ๋ถ€ ์Šค๋ƒ…์ƒท ์‚ฌ์ด๋“œ์นด๋ฅผ ๋‘ ๊ฐœ์˜ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ถ„ํ• 
  • ์‚ญ์ œ๋ฅผ ์œ„ํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค (์‚ญ์ œ ๋น„๋ฐ€) ๋ณผ๋ฅจ ์Šค๋ƒ…์ƒท์˜ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ฃผ์„์œผ๋กœ,
  • ์ƒˆ๋กœ์šด ์ข…๋ฃŒ์ž (์ข…๋ฃŒ์ž) ์—ฐ๊ฒฐ์ด ๋‚จ์•„ ์žˆ๋Š” ๊ฒฝ์šฐ ์Šค๋ƒ…์ƒท API ๊ฐœ์ฒด๊ฐ€ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์Šค 1.17 ์‹œ์ ์—์„œ ์ด ๊ธฐ๋Šฅ์€ ์„ธ ๊ฐ€์ง€ CSI ๋“œ๋ผ์ด๋ฒ„(GCE ์˜๊ตฌ ๋””์Šคํฌ CSI ๋“œ๋ผ์ด๋ฒ„, Portworx CSI ๋“œ๋ผ์ด๋ฒ„ ๋ฐ NetApp Trident CSI ๋“œ๋ผ์ด๋ฒ„)์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„ ๋ฐ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ„ํ–‰๋ฌผ ๋ธ”๋กœ๊ทธ์—.

ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด ๋ผ๋ฒจ

์ž๋™์œผ๋กœ ๋ผ๋ฒจ์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋œ ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž์— ๋”ฐ๋ผ ์ƒ์„ฑ๋œ ๋…ธ๋“œ ๋ฐ ๋ณผ๋ฅจ์— ํ• ๋‹น๋จ, K8s 1.2 ์ถœ์‹œ ์ดํ›„ ์˜ค๋žซ๋™์•ˆ Kubernetes์—์„œ ๋ฒ ํƒ€ ๋ฒ„์ „์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. (2016๋…„ XNUMX์›”!). ์˜ค๋žซ๋™์•ˆ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋Š” ั€ะตัˆะธะปะธ, ์ด์ œ ๊ธฐ๋Šฅ ์•ˆ์ •(GA)์„ ์„ ์–ธํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ชจ๋‘ ๊ทธ์— ๋”ฐ๋ผ(ํ† ํด๋กœ์ง€์— ๋”ฐ๋ผ) ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • beta.kubernetes.io/instance-type โ†’ node.kubernetes.io/instance-type
  • failure-domain.beta.kubernetes.io/zone โ†’ topology.kubernetes.io/zone
  • failure-domain.beta.kubernetes.io/region โ†’ topology.kubernetes.io/region

...ํ•˜์ง€๋งŒ ์ด์ „ ์ด๋ฆ„์œผ๋กœ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด). ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ด€๋ฆฌ์ž๋Š” ํ˜„์žฌ ๋ ˆ์ด๋ธ”๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ฌธ์„œ K8s๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

kubeadm์˜ ๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ

์ฒ˜์Œ์œผ๋กœ ์•ŒํŒŒ ๋ฒ„์ „์œผ๋กœ ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. kubeadm ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ. ์ง€์›๋˜๋Š” ํ˜•์‹: JSON, YAML, Go ํ…œํ”Œ๋ฆฟ.

์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ๋™๊ธฐ(์— ๋”ฐ๋ฆ„) KEP) ์ด๋‹ค:

Kubernetes๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ์ž‘์—…์— ๋Œ€ํ•œ ์‚ฌ์‹ค์ƒ์˜(๋ฒ•๋ฅ ์ ์ด์ง€๋Š” ์•Š๋”๋ผ๋„) ํ‘œ์ค€์€ kubeadm์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Terraform๊ณผ ๊ฐ™์€ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ๋„๊ตฌ๋Š” Kubernetes ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด kubeadm์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ API์— ๋Œ€ํ•œ ๊ณ„ํš๋œ ๊ฐœ์„ ์—๋Š” kubeadm ๋ฐ cloud-init๋ฅผ ์‚ฌ์šฉํ•œ Kubernetes ๋ถ€ํŠธ์ŠคํŠธ๋ž˜ํ•‘์„ ์œ„ํ•œ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ์ด ์—†์œผ๋ฉด ์–ธ๋œป ๋ณด๊ธฐ์— ๊ฐ€์žฅ ๋ฌดํ•ดํ•œ ๋ณ€๊ฒฝ์ด๋ผ๋„ Terraform, Cluster API ๋ฐ kubeadm์˜ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐํƒ€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ์ฆ‰๊ฐ์ ์ธ ๊ณ„ํš์—๋Š” ๋‹ค์Œ kubeadm ๋ช…๋ น์— ๋Œ€ํ•œ ์ง€์›(๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ ํ˜•์‹)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • alpha certs
  • config images list
  • init
  • token create
  • token list
  • upgrade plan
  • version

๋ช…๋ น์— ๋Œ€ํ•œ JSON ์‘๋‹ต์˜ ๊ทธ๋ฆผ kubeadm init -o json:

{
  "node0": "192.168.20.51:443",
  "caCrt": "sha256:1f40ff4bd1b854fb4a5cf5d2f38267a5ce5f89e34d34b0f62bf335d74eef91a3",
  "token": {
    "id":          "5ndzuu.ngie1sxkgielfpb1",
    "ttl":         "23h",
    "expires":     "2019-05-08T18:58:07Z",
    "usages":      [
      "authentication",
      "signing"
    ],
    "description": "The default bootstrap token generated by 'kubeadm init'.",
    "extraGroups": [
      "system:bootstrappers:kubeadm:default-node-token"
    ]
  },
  "raw": "Rm9yIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSAia3ViZWFkbSBpbml0IiBjb21tYW5kLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FrdXR6LzdhNjg2ZGU1N2JmNDMzZjkyZjcxYjZmYjc3ZDRkOWJhI2ZpbGUta3ViZWFkbS1pbml0LW91dHB1dC1sb2c="
}

๊ธฐํƒ€ ํ˜์‹ ์˜ ์•ˆ์ •ํ™”

์ผ๋ฐ˜์ ์œผ๋กœ Kubernetes 1.17์˜ ์ถœ์‹œ๋Š” "์•ˆ์ •์„ฑ" ์ด๋Š” ๊ทธ ์•ˆ์— ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์ธํ•ด ์ด‰์ง„๋˜์—ˆ์Šต๋‹ˆ๋‹ค (์ด ๊ฐœ์ˆ˜๋Š” 14) GA ์ƒํƒœ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—๋Š”:

  • ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋…ธ๋“œ๋ฅผ "๋งˆํ‚น"ํ•ฉ๋‹ˆ๋‹ค(TaintNodesByCondition), ์— ๋‚˜ํƒ€๋‚ฌ๋‹ค K8s 1.8;
  • ๋ถ๋งˆํฌ ๋ณด๊ธฐ - ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ํŠน์ • ๋ฒ„์ „์— ํ•ด๋‹นํ•œ๋‹ค๋Š” ๋ผ๋ฒจ์ด ๋ถ™์€ ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ์ด๋ฒคํŠธ(resourceVersion) ์ด๋ฏธ ์‹œ๊ณ„์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ๊ฐ’ (๊ธฐ๋ณธ๊ฐ’) ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ์šฐ;
  • ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— ๊ณต์œ ๋จ ํฌ๋“œ ํ”„๋กœ์„ธ์Šค ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ;
  • ScheduleDaemonSetPods - DaemonSet์—์„œ ํฌ๋“œ ๊ณ„ํš kube-scheduler ์‚ฌ์šฉ(DaemonSet ์ปจํŠธ๋กค๋Ÿฌ ๋Œ€์‹ )
  • ๋™์  ํ•œ๊ณ„ ๋…ธ๋“œ ์œ ํ˜•์— ๋”ฐ๋ฅธ ๋ณผ๋ฅจ ์ˆ˜
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ง€์› ๋‹ค์Œ์œผ๋กœ ๋งˆ์šดํŠธ๋œ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์˜ ๊ฒฝ์šฐ subPath;
  • Kubelet ํ•˜ํŠธ๋น„ํŠธ ์ „์†ก ์ „๋ฌธํ™”๋œ Lease API๋กœ;
  • "์ข…๋ฃŒ์ž ๋ณดํ˜ธ"(์ข…๋ฃŒ์ž ๋ณดํ˜ธ) ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์˜ ๊ฒฝ์šฐ(LoadBalancer ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ์„œ๋น„์Šค ๋ฆฌ์†Œ์Šค ํ™•์ธ)
  • kube-apiserver ์ตœ์ ํ™” ๋™์ผํ•œ ๊ฐœ์ฒด ์ง‘ํ•ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์—ฌ๋Ÿฌ ์‹œ๊ณ„๋กœ ์ž‘์—…ํ•  ๋•Œ ์„ฑ๋Šฅ ํ–ฅ์ƒ - ๊ฐ ๊ด€์ฐฐ์ž์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ฐœ์ฒด์˜ ๋ฐ˜๋ณต์ ์ธ ์ง๋ ฌํ™”๋ฅผ ํ”ผํ•จ์œผ๋กœ์จ ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

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

๋ฌผ๋ก  Kubernetes 1.17์˜ ์ „์ฒด ํ˜์‹  ๋ชฉ๋ก์€ ์œ„์— ๋‚˜์—ด๋œ ํ•ญ๋ชฉ์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ธฐํƒ€ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค(๋” ์™„์ „ํ•œ ๋ชฉ๋ก์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”). ๋ณ€๊ฒฝ ๋กœ๊ทธ):

  • ๋งˆ์ง€๋ง‰ ๋ฆด๋ฆฌ์Šค์— ์ œ์‹œ๋œ ๊ธฐ๋Šฅ์ด ๋ฒ ํƒ€ ๋ฒ„์ „์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. RunAsUserName ์œˆ๋„์šฐ์šฉ;
  • ๋น„์Šทํ•œ ๋ณ€ํ™” ๋‹ฅ์น˜๋‹ค EndpointSlice API(๋˜ํ•œ K8s 1.16๋ถ€ํ„ฐ). ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ๋กœ์„œ๋Š” Endpoint API์˜ ์„ฑ๋Šฅ/ํ™•์žฅ์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ์ด ์†”๋ฃจ์…˜์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํฌ๋“œ๋Š” ์ด์ œ ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ kube-system (์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์šฐ์„ ์ˆœ์œ„ ํด๋ž˜์Šค ์†Œ๋น„ ์ œํ•œ);
  • kubelet์˜ ์ƒˆ๋กœ์šด ์˜ต์…˜ - --reserved-cpus โ€” ์‹œ์Šคํ…œ์— ์˜ˆ์•ฝ๋œ CPU ๋ชฉ๋ก์„ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์— kubectl logs ์ œ์‹œ๋œ ์ƒˆ ๊นƒ๋ฐœ --prefix, ๋กœ๊ทธ์˜ ๊ฐ ์ค„์— Pod ๋ฐ ์†Œ์Šค ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ะฒ label.Selector ์ถ”๊ฐ€ RequiresExactMatch;
  • kube-dns์˜ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์ง€๊ธˆ ๋‹ฌ๋ฆฌ๊ณ  ์žˆ์–ด์š” ๋” ์ ์€ ๊ถŒํ•œ์œผ๋กœ;
  • ํ•˜์ดํผํ๋ธŒ ๋ณ„๋„์˜ GitHub ์ €์žฅ์†Œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ๋” ์ด์ƒ Kubernetes ๋ฆด๋ฆฌ์Šค์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋งŽ์€ ํ–ฅ์ƒ๋œ ์„ฑ๋Šฅ ๋น„ UDP ํฌํŠธ์šฉ kube-proxy.

์ข…์†์„ฑ ๋ณ€๊ฒฝ:

  • kubeadm์— ํฌํ•จ๋œ CoreDNS ๋ฒ„์ „์€ 1.6.5์ž…๋‹ˆ๋‹ค.
  • crictl ๋ฒ„์ „์ด v1.16.1๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • CSI 1.2.0;
  • etcd 3.4.3;
  • ํ…Œ์ŠคํŠธ๋œ ์ตœ์‹  Docker ๋ฒ„์ „์ด 19.03์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Kubernetes 1.17์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œ Go ๋ฒ„์ „์€ 1.13.4์ž…๋‹ˆ๋‹ค.

PS

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

์ถœ์ฒ˜ : habr.com

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