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

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

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

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

SIG ํด๋Ÿฌ์Šคํ„ฐ ์ˆ˜๋ช…์ฃผ๊ธฐ์˜ ์ค‘์š”ํ•œ ์†Œ๊ฐœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋™์  ์žฅ์•  ์กฐ์น˜ ํด๋Ÿฌ์Šคํ„ฐ Kubernetes(๋˜๋Š” ๋” ์ •ํ™•ํ•˜๊ฒŒ ๋งํ•˜๋ฉด ์ž์ฒด ํ˜ธ์ŠคํŒ… HA ๋ฐฐํฌ)๊ฐ€ ์ด์ œ ๋งŒ๋“ค ์ˆ˜์žˆ๋‹ค ์ต์ˆ™ํ•œ(๋‹จ์ผ ๋…ธ๋“œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋งฅ๋ฝ์—์„œ) ๋ช…๋ น ์‚ฌ์šฉ kubeadm (init ะธ join). ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฆ์„œ๋Š” ๋น„๋ฐ€๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  • K8s ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์—์„œ etcd ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ(์ฆ‰, ๊ธฐ์กด ์™ธ๋ถ€ ์ข…์†์„ฑ ์ œ๊ฑฐ) etcd-์—ฐ์‚ฐ์ž;
  • ๋‚ด๊ฒฐํ•จ์„ฑ ๊ตฌ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ์™ธ๋ถ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์— ๋Œ€ํ•œ ๊ถŒ์žฅ ์„ค์ •์„ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค(ํ–ฅํ›„์—๋Š” ์ด ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•  ๊ณ„ํš์ด์ง€๋งŒ ํ˜„ ๋‹จ๊ณ„์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Œ).

Kubernetes 1.14: ์ฃผ์š” ํ˜์‹  ๊ฐœ์š”
kubeadm์œผ๋กœ ์ƒ์„ฑ๋œ Kubernetes HA ํด๋Ÿฌ์Šคํ„ฐ์˜ ์•„ํ‚คํ…์ฒ˜

๊ตฌํ˜„ ์„ธ๋ถ€์ •๋ณด๋Š” ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””์ž์ธ ์ œ์•ˆ. ์ด ๊ธฐ๋Šฅ์€ ์ •๋ง ์˜ค๋žซ๋™์•ˆ ๊ธฐ๋‹ค๋ ค์˜จ ๊ธฐ๋Šฅ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์•ŒํŒŒ ๋ฒ„์ „์€ K8s 1.9์—์„œ ์˜ˆ์ƒ๋˜์—ˆ์ง€๋งŒ ์ง€๊ธˆ์—์„œ์•ผ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

API

ํŒ€ apply ์ผ๋ฐ˜์ ์œผ๋กœ ์„ ์–ธ์  ๊ฐ์ฒด ๊ด€๋ฆฌ ํ•ฉ๊ฒฉ ์œผ๋กœ kubectl apiserver์—์„œ. ๊ฐœ๋ฐœ์ž๋“ค์€ ์ž์‹ ์˜ ๊ฒฐ์ •์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. kubectl apply - Kubernetes ๊ตฌ์„ฑ ์ž‘์—…์˜ ๊ธฐ๋ณธ ๋ถ€๋ถ„์ด์ง€๋งŒ "๋ฒ„๊ทธ๊ฐ€ ๊ฐ€๋“ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค." ๋”ฐ๋ผ์„œ ์ด ๊ธฐ๋Šฅ์„ ๋‹ค์‹œ ์ •์ƒ์œผ๋กœ ๊ฐ€์ ธ์™€ ์ œ์–ด ํ”Œ๋ ˆ์ธ์œผ๋กœ ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ์กด์žฌํ•˜๋Š” ๋ฌธ์ œ์˜ ๊ฐ„๋‹จํ•˜๊ณ  ๋ช…ํ™•ํ•œ ์˜ˆ:

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

๊ตฌํ˜„์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ KEP. ํ˜„์žฌ ์ค€๋น„ ์ƒํƒœ๋Š” ์•ŒํŒŒ์ž…๋‹ˆ๋‹ค(๋‹ค์Œ Kubernetes ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๋ฒ ํƒ€๋กœ์˜ ์Šน๊ฒฉ์ด ๊ณ„ํš๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค).

์•ŒํŒŒ ๋ฒ„์ „์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๊ธฐํšŒ OpenAPI v3 ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CustomResources์šฉ OpenAPI ๋ฌธ์„œ ์ƒ์„ฑ ๋ฐ ๊ฒŒ์‹œ (CR) (์„œ๋ฒ„ ์ธก) K8s ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌ์†Œ์Šค(CustomResourceDefinition, CRD)๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. CRD์šฉ OpenAPI๋ฅผ ๊ฒŒ์‹œํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ(์˜ˆ: kubectl) ๊ท€ํ•˜ ์ธก์—์„œ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. kubectl create ะธ kubectl apply) ๊ณ„ํš์— ๋”ฐ๋ผ ๋ฌธ์„œ๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  (kubectl explain). ์„ธ๋ถ€์ •๋ณด - ์—์„œ KEP.

๊ธฐ์กด ๋กœ๊ทธ ์ง€๊ธˆ ๊ฐœ์žฅ ์ค‘ ๊นƒ๋ฐœ์ด ๋‹ฌ๋ฆฐ O_APPEND (์•„๋‹ˆ O_TRUNC) ์ผ๋ถ€ ์ƒํ™ฉ์—์„œ ๋กœ๊ทธ ์†์‹ค์„ ๋ฐฉ์ง€ํ•˜๊ณ  ํšŒ์ „์„ ์œ„ํ•œ ์™ธ๋ถ€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ์ž๋ฅด๋Š” ํŽธ์˜๋ฅผ ์œ„ํ•ด.

๋˜ํ•œ Kubernetes API์˜ ๋งฅ๋ฝ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PodSandbox ะธ PodSandboxStatus ์ถ”๊ฐ€๋จ ๋“คํŒ runtime_handler ์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด RuntimeClass ํฌ๋“œ์—์„œ(์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ…์ŠคํŠธ์—์„œ ์ฝ์–ด๋ณด์„ธ์š”. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค 1.12 ๋ฆด๋ฆฌ์Šค, ์ด ํด๋ž˜์Šค๋Š” ์•ŒํŒŒ ๋ฒ„์ „์œผ๋กœ ๋‚˜ํƒ€๋‚จ) ๋ฐ ์ž…ํ•™ ์›นํ›… ๊ตฌํ˜„ ๋ฒ„์ „์„ ๊ฒฐ์ •ํ•˜๋Š” ๋Šฅ๋ ฅ AdmissionReview ๊ทธ๋“ค์€ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ, ์ž…ํ•™ ์›นํ›… ๊ทœ์น™์€ ์ด์ œ ์ œํ•œ๋  ์ˆ˜ ์žˆ๋‹ค ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ์˜ ์‚ฌ์šฉ ๋ฒ”์œ„.

๊ธˆ๊ณ 

PersistentLocalVolumes, ์ถœ์‹œ ์ดํ›„ ๋ฒ ํƒ€ ์ƒํƒœ์˜€์Šต๋‹ˆ๋‹ค. K8s 1.10, ๋ฐœํ‘œ stable(GA): ์ด ๊ธฐ๋Šฅ ๊ฒŒ์ดํŠธ๋Š” ๋” ์ด์ƒ ๋น„ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์œผ๋ฉฐ Kubernetes 1.17์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

๊ธฐํšŒ ๋ผ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜ํ–ฅ API (์˜ˆ: ํฌ๋“œ ์ด๋ฆ„)์œผ๋กœ ๋งˆ์šดํŠธ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ subPath, ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค - ์ƒˆ๋กœ์šด ๋ถ„์•ผ์˜ ํ˜•ํƒœ๋กœ subPathExpr, ์ด์ œ ์›ํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์ฒ˜์Œ์— Kubernetes 1.11์— ๋“ฑ์žฅํ–ˆ์ง€๋งŒ 1.14์—์„œ๋Š” ์•ŒํŒŒ ๋ฒ„์ „ ์ƒํƒœ๋กœ ์œ ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ „ Kubernetes ๋ฆด๋ฆฌ์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ ๊ทน์ ์œผ๋กœ ๊ฐœ๋ฐœ ์ค‘์ธ CSI(์ปจํ…Œ์ด๋„ˆ ์Šคํ† ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค)์— ๋งŽ์€ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

CSI

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋จ(์•ŒํŒŒ ๋ฒ„์ „์˜ ์ผ๋ถ€๋กœ) ์ง€์› CSI ๋ณผ๋ฅจ์— ๋งž๊ฒŒ ํฌ๊ธฐ ์กฐ์ •. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ ๊ฒŒ์ดํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ExpandCSIVolumes, ํŠน์ • CSI ๋“œ๋ผ์ด๋ฒ„์—์„œ ์ด ์ž‘์—…์— ๋Œ€ํ•œ ์ง€์› ๊ฐ€์šฉ์„ฑ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ŒํŒŒ ๋ฒ„์ „์˜ CSI์˜ ๋˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ - ๊ธฐํšŒ ํฌ๋“œ ์‚ฌ์–‘ ๋‚ด์˜ CSI ๋ณผ๋ฅจ์„ ์ง์ ‘ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: PV/PVC๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ). ์ด๊ฒƒ CSI๋ฅผ ์›๊ฒฉ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋Œ€ํ•œ ์ œํ•œ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค., ๊ทธ๋“ค์—๊ฒŒ ์„ธ์ƒ์˜ ๋ฌธ์„ ์—ด์–ด์ค๋‹ˆ๋‹ค ๋กœ์ปฌ ์ž„์‹œ ๋ณผ๋ฅจ. ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•œ (๋ฌธ์„œ์˜ ์˜ˆ)์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. CSIInlineVolume ๊ธฐ๋Šฅ ๊ฒŒ์ดํŠธ.

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

์ด ๋ชจ๋“  ๊ฒƒ์ด ์•ŒํŒŒ ๋ฒ„์ „์— ๋„๋‹ฌํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”„๋กœ์„ธ์Šค ๋‚ด๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฝ”๋“œ, CSI ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ํŠธ๋ฆฌ ๋‚ด๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๋•๋ถ„์— ๊ฐœ๋ฐœ์ž์˜ ๊ฑฑ์ •์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ํ•œ ๋ฒ„์ „์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์ค„์–ด๋“ค๊ณ  ์ด์ „ API์™€์˜ ํ˜ธํ™˜์„ฑ์€ ์œ ์ง€๋˜๋ฉฐ ์ผ๋ฐ˜์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์„ ์–ธ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Kubernetes์˜ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค(1.15)์—์„œ๋Š” ๋ชจ๋“  ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋˜๊ณ  ๊ตฌํ˜„์ด ๋ฒ ํƒ€ ์ƒํƒœ๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ K8s ์„ค์น˜์—์„œ ํ™œ์„ฑํ™”๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ๋””์ž์ธ ์ œ์•ˆ. ์ด๋ฒˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์œผ๋กœ ์ธํ•ด ์‹คํŒจ ํŠน์ • ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž(AWS, Azure, GCE, Cinder)๊ฐ€ ์ •์˜ํ•œ ๋ณผ๋ฅจ ์ œํ•œ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๋˜ํ•œ CSI๊ฐ€ ํฌํ•จ๋œ ๋ธ”๋ก ์žฅ์น˜์— ๋Œ€ํ•œ ์ง€์›(CSIBlockVolume) ์ด์ „๋จ ๋ฒ ํƒ€ ๋ฒ„์ „์œผ๋กœ.

๋…ธ๋“œ/Kubelet

์•ŒํŒŒ ๋ฒ„์ „ ์ œ๊ณต ์ƒˆ ์—”๋“œํฌ์ธํŠธ Kubelet์—์„œ๋Š” ๋‹ค์Œ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ธก์ •ํ•ญ๋ชฉ ๋ฐ˜ํ™˜. ์ผ๋ฐ˜์ ์œผ๋กœ Kubelet์ด ์ด์ „์— cAdvisor๋กœ๋ถ€ํ„ฐ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ๋ฐ›์•˜๋‹ค๋ฉด ์ด์ œ ์ด ๋ฐ์ดํ„ฐ๋Š” CRI(์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์ธํ„ฐํŽ˜์ด์Šค)๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ๊ฐ€์ ธ์˜ค์ง€๋งŒ ์ด์ „ ๋ฒ„์ „์˜ Docker์™€ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•œ ํ˜ธํ™˜์„ฑ๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด์ „์—๋Š” Kubelet์—์„œ ์ˆ˜์ง‘๋œ ํ†ต๊ณ„๊ฐ€ REST API๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜์—ˆ์ง€๋งŒ ์ด์ œ๋Š” ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๋‹ค์Œ ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค. /metrics/resource/v1alpha1. ๊ฐœ๋ฐœ์ž์˜ ์žฅ๊ธฐ ์ „๋žต ~์ด๋‹ค. Kubelet์—์„œ ์ œ๊ณตํ•˜๋Š” ์ธก์ •ํ•ญ๋ชฉ ์ง‘ํ•ฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ด๋Ÿฌํ•œ ์ธก์ • ํ•ญ๋ชฉ ์ž์ฒด๋Š” ์ด์ œ ๊ทธ๋“ค์€ ์ „ํ™”ํ•ด "ํ•ต์‹ฌ ์ง€ํ‘œ"๊ฐ€ ์•„๋‹ˆ๋ผ "๋ฆฌ์†Œ์Šค ์ง€ํ‘œ"์ด๋ฉฐ "CPU, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ ์ผ๋ฅ˜ ๋ฆฌ์†Œ์Šค"๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.

๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ๋‰˜์•™์Šค: Prometheus ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์–‘ํ•œ ์‚ฌ๋ก€์™€ ๋น„๊ตํ•˜์—ฌ gRPC ์—”๋“œํฌ์ธํŠธ์˜ ๋ถ„๋ช…ํ•œ ์„ฑ๋Šฅ ์ด์ ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  (์•„๋ž˜ ๋ฒค์น˜๋งˆํฌ ์ค‘ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ์ฐธ์กฐ), ์ €์ž๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ด ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์˜ ๋ช…ํ™•ํ•œ ๋ฆฌ๋”์‹ญ์œผ๋กœ ์ธํ•ด Prometheus์˜ ํ…์ŠคํŠธ ํ˜•์‹์„ ์„ ํ˜ธํ–ˆ์Šต๋‹ˆ๋‹ค.

โ€œgRPC๋Š” ์ฃผ์š” ๋ชจ๋‹ˆํ„ฐ๋ง ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๋Š” Metrics Server์— ๋ฉ”ํŠธ๋ฆญ์„ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ์ด์™€ ์ง์ ‘ ํ†ตํ•ฉ๋˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐ์—๋งŒ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. Metrics Server์—์„œ ์บ์‹ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ Prometheus ํ…์ŠคํŠธ ํ˜•์‹ ์„ฑ๋Šฅ ์ถฉ๋ถ„ํ•˜๋‹ค ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ Prometheus๊ฐ€ ๋„๋ฆฌ ์ฑ„ํƒ๋œ ์ ์„ ๊ณ ๋ คํ•˜๋ฉด gRPC๋ณด๋‹ค Prometheus๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. OpenMetrics ํ˜•์‹์ด ๋”์šฑ ์•ˆ์ •๋˜๋ฉด ํ”„๋กœํ†  ๊ธฐ๋ฐ˜ ํ˜•์‹์œผ๋กœ gRPC ์„ฑ๋Šฅ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค."

Kubernetes 1.14: ์ฃผ์š” ํ˜์‹  ๊ฐœ์š”
๋ฉ”ํŠธ๋ฆญ์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด Kubelet ์—”๋“œํฌ์ธํŠธ์—์„œ gRPC ๋ฐ Prometheus ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๋น„๊ต ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๊ทธ๋ž˜ํ”„์™€ ๊ธฐํƒ€ ์„ธ๋ถ€์ •๋ณด๋Š” ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. KEP.

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

  • Kubelet ์ง€๊ธˆ(XNUMXํšŒ) ๋ฉˆ์ถ”๋ ค๊ณ  ๋…ธ๋ ฅ ์ค‘ ๋‹ค์‹œ ์‹œ์ž‘ ๋ฐ ์‚ญ์ œ ์ž‘์—… ์ „์—๋Š” ์•Œ ์ˆ˜ ์—†๋Š” ์ƒํƒœ์˜ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค.
  • ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ PodPresets ์ด์ œ ์ดˆ๊ธฐํ™” ์ปจํ…Œ์ด๋„ˆ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค ์ผ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ์™€ ๋™์ผํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค.
  • ์ฟ ๋ฒจ๋ › ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค usageNanoCores CRI ํ†ต๊ณ„ ์ œ๊ณต์ž ๋ฐ Windows์˜ ๋…ธ๋“œ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์ถ”๊ฐ€ ๋„คํŠธ์›Œํฌ ํ†ต๊ณ„.
  • ์ด์ œ ์šด์˜ ์ฒด์ œ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ์ •๋ณด๊ฐ€ ๋ ˆ์ด๋ธ”์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. kubernetes.io/os ะธ kubernetes.io/arch ๋…ธ๋“œ ๊ฐœ์ฒด(๋ฒ ํƒ€์—์„œ GA๋กœ ์ „์†ก๋จ)
  • ํฌ๋“œ์˜ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ํŠน์ • ์‹œ์Šคํ…œ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์„ ์ง€์ •ํ•˜๋Š” ๊ธฐ๋Šฅ(RunAsGroup, ์— ๋‚˜ํƒ€๋‚ฌ๋‹ค K8s 1.11) ๊ณ ๊ธ‰์˜ ๋ฒ ํƒ€ ์ด์ „(๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋จ)
  • du ๋ฐ find๋Š” cAdvisor์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ~๋กœ ๊ต์ฒด๋˜๋‹ค ์ด๋™ ์ค‘ ๊ตฌํ˜„.

CLI

cli-runtime ๋ฐ kubectl์—์„œ ์ถ”๊ฐ€ -k ํ†ตํ•ฉ์„ ์œ„ํ•œ ํ”Œ๋ž˜๊ทธ ์ปค์Šคํ„ฐ๋งˆ์ด์ œ์ด์…˜ (๊ทธ๋Ÿฐ๋ฐ ๊ฐœ๋ฐœ์€ ์ด์ œ ๋ณ„๋„์˜ ์ €์žฅ์†Œ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.) ํŠน์ˆ˜ kustomization ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์ถ”๊ฐ€ YAML ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด(์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.) KEP):

Kubernetes 1.14: ์ฃผ์š” ํ˜์‹  ๊ฐœ์š”
๋‹จ์ˆœ ํŒŒ์ผ ์‚ฌ์šฉ ์˜ˆ์‹œ ๋งž์ถคํ™” (kustomize์˜ ๋” ๋ณต์žกํ•œ ์ ์šฉ์€ ๋‚ด์—์„œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฒ„๋ ˆ์ด)

๋˜ํ•œ :

  • ์ถ”๊ฐ€๋จ ์ƒˆ๋กœ์šด ํŒ€ kubectl create cronjob, ๊ทธ ์ด๋ฆ„ ์ž์ฒด๊ฐ€ ๋งํ•ด์ค๋‹ˆ๋‹ค.
  • ะ’ kubectl logs ์ด์ œ ๋„ˆ๋Š” ํ•  ์ˆ˜์žˆ์–ด. ๊ฒฐํ•ฉ์‹œํ‚ค๋‹ค ๊นƒ๋ฐœ -f (--follow ๋กœ๊ทธ ์ŠคํŠธ๋ฆฌ๋ฐ์˜ ๊ฒฝ์šฐ) ๋ฐ -l (--selector ๋ผ๋ฒจ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ).
  • ์ฟ  ๋ฒ ํ‹€ ์ง€๋„ ๋ฐ›์€ ์™€์ผ๋“œ์นด๋“œ๋กœ ์„ ํƒํ•œ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ํŒ€์—๊ฒŒ kubectl wait ์ถ”๊ฐ€ ํ”Œ๋ž˜๊ทธ --all ์ง€์ •๋œ ๋ฆฌ์†Œ์Šค ์œ ํ˜•์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ๋Š” ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๊ธฐํƒ€

๋‹ค์Œ ๊ธฐ๋Šฅ์€ ์•ˆ์ •(GA) ์ƒํƒœ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

Kubernetes 1.14์— ๋„์ž…๋œ ๊ธฐํƒ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

  • ๊ธฐ๋ณธ RBAC ์ •์ฑ…์€ ๋” ์ด์ƒ API ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. discovery ะธ access-review ์ธ์ฆ๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž (์ธ์ฆ๋˜์ง€ ์•Š์Œ).
  • ๊ณต์‹ CoreDNS ์ง€์› ์— ์˜ํ•ด ์ œ๊ณต Linux ์ „์šฉ์ด๋ฏ€๋กœ kubeadm์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌ(CoreDNS)ํ•  ๋•Œ ๋…ธ๋“œ๋Š” Linux์—์„œ๋งŒ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด ์ œํ•œ ์‚ฌํ•ญ์—๋Š” nodeSelector๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค).
  • ๊ธฐ๋ณธ CoreDNS ๊ตฌ์„ฑ์€ ์ด์ œ ะธัะฟะพะปัŒะทัƒะตั‚ ํฌ์›Œ๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋ก์‹œ ๋Œ€์‹ . ๋˜ํ•œ CoreDNS์—์„œ๋Š” ์ถ”๊ฐ€ ์ ์ ˆํ•œ(์„œ๋น„์Šค ์ค€๋น„๊ฐ€ ์•ˆ ๋œ) ํฌ๋“œ์—์„œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ๋ฐฉ์ง€ํ•˜๋Š” readinessProbe.
  • kubeadm์—์„œ๋Š” ๋‹จ๊ณ„์ ์œผ๋กœ init ๋˜๋Š” upload-certs, ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค ์ƒˆ๋กœ์šด ์ œ์–ด ํ‰๋ฉด์„ kubeadm-certs ๋น„๋ฐ€์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ธ์ฆ์„œ๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค(ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉ --experimental-upload-certs).
  • Windows ์„ค์น˜์šฉ ์•ŒํŒŒ ๋ฒ„์ „์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ง€์ง€ gMSA(๊ทธ๋ฃน ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ •) - ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Active Directory์˜ ํŠน์ˆ˜ ๊ณ„์ •์ž…๋‹ˆ๋‹ค.
  • G.C.E์˜ ๊ฒฝ์šฐ ํ™œ์„ฑํ™” etcd์™€ kube-apiserver ๊ฐ„์˜ mTLS ์•”ํ˜ธํ™”.
  • ์‚ฌ์šฉ/์ข…์† ์†Œํ”„ํŠธ์›จ์–ด ์—…๋ฐ์ดํŠธ: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, kubeadm์˜ Docker 18.09 ์ง€์› ๋ฐ ์ง€์›๋˜๋Š” ์ตœ์†Œ Docker API ๋ฒ„์ „์€ ์ด์ œ 1.26์ž…๋‹ˆ๋‹ค.

PS

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

์ถœ์ฒ˜ : habr.com

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