๊ฒฉ๋ฆฌ๋œ ์ปจํ…Œ์ด๋„ˆ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์ธ Kubernetes 1.18 ์ถœ์‹œ

๊ฒŒ์‹œ ๋จ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ ์ถœ์‹œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค 1.18, ๊ฒฉ๋ฆฌ๋œ ์ปจํ…Œ์ด๋„ˆ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ „์ฒด์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌ, ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์›๋ž˜ Google์—์„œ ๋งŒ๋“ค์—ˆ์ง€๋งŒ Linux Foundation์ด ๊ฐ๋…ํ•˜๋Š” ๋…๋ฆฝ ์‚ฌ์ดํŠธ๋กœ ์ด์ „๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”Œ๋žซํผ์€ ๊ฐœ๋ณ„ ์‹œ์Šคํ…œ์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ๋ชจ๋“  ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋ฒ”์šฉ ์†”๋ฃจ์…˜์œผ๋กœ ์ž๋ฆฌ๋งค๊น€ํ–ˆ์Šต๋‹ˆ๋‹ค. Kubernetes ์ฝ”๋“œ๋Š” Go๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ฐฐํฌ์ž Apache 2.0์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

Kubernetes 1.18 ๋ฆด๋ฆฌ์Šค์—๋Š” 38๊ฐœ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๊ฐœ์„  ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ทธ ์ค‘ 15๊ฐœ๋Š” ์•ˆ์ • ์ƒํƒœ๋กœ, 11๊ฐœ๋Š” ๋ฒ ํƒ€ ์ƒํƒœ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 12๊ฐœ์˜ ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์•ŒํŒŒ ์ƒํƒœ๋กœ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์„ ์ค€๋น„ํ•  ๋•Œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ณ  ์‹คํ—˜์  ์—ญ๋Ÿ‰์„ ์•ˆ์ •ํ™”ํ•˜๋Š” ๋™์‹œ์— ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ๊ท ๋“ฑํ•œ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์˜€์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

  • ์ฟ  ๋ฒ ํ‹€
    • ์ถ”๊ฐ€๋จ ๋””๋ฒ„๊น… ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž„์‹œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ Pod์—์„œ ๋””๋ฒ„๊น…์„ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋Š” "kubectl debug" ๋ช…๋ น์˜ ์•ŒํŒŒ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
    • ์•ˆ์ •์ ์ด๋ผ๊ณ  ์„ ์–ธ๋จ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ ์šฉํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฌด์—‡์ด ๋ณ€๊ฒฝ๋˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” "kubectl diff" ๋ช…๋ น.
    • ์ œ๊ฑฐ๋จ ๋‹จ์ผ Pod๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ƒ์„ฑ๊ธฐ๋ฅผ ์ œ์™ธํ•œ "kubectl run" ๋ช…๋ น์˜ ๋ชจ๋“  ์ƒ์„ฑ๊ธฐ.
    • ๋ณ€๊ฒฝ๋จ ํ”Œ๋ž˜๊ทธ "--dry-run"์€ ํ•ด๋‹น ๊ฐ’(ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„ ๋ฐ ์—†์Œ)์— ๋”ฐ๋ผ ๋ช…๋ น์˜ ์‹œํ—˜ ์‹คํ–‰์ด ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ์„œ๋ฒ„ ์ธก์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
    • kubectl ์ฝ”๋“œ ๊ฐ•์กฐ ํ‘œ์‹œ๋จ ๋ณ„๋„์˜ ์ €์žฅ์†Œ์—. ์ด๋ฅผ ํ†ตํ•ด kubectl์„ ๋‚ด๋ถ€ kubernetes ์ข…์†์„ฑ์—์„œ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ์ฝ”๋“œ๋ฅผ ํƒ€์‚ฌ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ๋” ์‰ฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค.
  • ์ž…๊ตฌ
    • ์‹œ์ž‘๋จ Ingress์šฉ API ๊ทธ๋ฃน์„๋„คํŠธ์›Œํ‚น.v1beta1๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
    • ์ถ”๊ฐ€๋จ ์ƒˆ ํ•„๋“œ:
      • ์š”์ฒญ์˜ ๊ฒฝ๋กœ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” pathType
      • IngressClassName์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ์„ ์–ธ๋œ kubernetes.io/ingress.class ์ฃผ์„์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•„๋“œ๋Š” ํŠน์ˆ˜ ๊ฐœ์ฒด InressClass์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ์ถ”๊ฐ€๋จ ์ˆ˜์‹  ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ด๋ฆ„, ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” IngressClass ๊ฐ์ฒด
  • ์˜ˆ๋ฐฐ
    • ์ถ”๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” AppProtocol ํ•„๋“œ
    • ๋ฒˆ์—ญ๋จ ๋ฒ ํƒ€ ์ƒํƒœ์ด๋ฉฐ ์ผ๋ฐ˜ Endpoint๋ฅผ ๋ณด๋‹ค ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” EndpointSlicesAPI๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ
    • ์ง€์› IPv6๊ฐ€ ๋ฒ ํƒ€ ์ƒํƒœ๋กœ ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์˜๊ตฌ ๋””์Šคํฌ. ๋‹ค์Œ ๊ธฐ๋Šฅ์€ ์•ˆ์ •์ ์œผ๋กœ ์„ ์–ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ
    • ConfigMap ๋ฐ Secret ๊ฐ์ฒด์— ์ถ”๊ฐ€๋จ ์ƒˆ๋กœ์šด ํ•„๋“œ "๋ถˆ๋ณ€". ํ•„๋“œ ๊ฐ’์„ true๋กœ ์„ค์ •ํ•˜๋ฉด ๊ฐ์ฒด ์ˆ˜์ •์ด ๋ฐฉ์ง€๋ฉ๋‹ˆ๋‹ค.
  • ์Šค์ผ€์ค„๋Ÿฌ
    • ์ถ”๊ฐ€๋จ kube-scheduler์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ํ”„๋กœํ•„์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ. ์ด์ „์—๋Š” ๋น„ํ‘œ์ค€ Pod ๋ฐฐํฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ์ถ”๊ฐ€ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ–ˆ๋˜ ๊ฒฝ์šฐ ์ด์ œ ํ‘œ์ค€ ์Šค์ผ€์ค„๋Ÿฌ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์„ค์ • ์„ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋™์ผํ•œ Pod ํ•„๋“œ ".spec.schedulerName"์— ํ•ด๋‹น ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ - ์•ŒํŒŒ.
    • ์˜ค์—ผ ๊ธฐ๋ฐ˜ ์ œ๊ฑฐ ์•ˆ์ •์ ์ด๋ผ๊ณ  ์„ ์–ธ๋จ
  • ์Šค์ผ€์ผ๋ง
    • ์ถ”๊ฐ€๋จ HPA์—์„œ ์ง€์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์‹คํ–‰ ์ค‘์ธ ํฌ๋“œ ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ๊ณต๊ฒฉ์„ฑ ์ •๋„๋ฅผ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋กœ๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ํ•œ ๋ฒˆ์— N๋ฐฐ ๋” ๋งŽ์€ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฟ ๋ฒจ๋ ›
    • ํ† ํด๋กœ์ง€ ๊ด€๋ฆฌ์ž ๋ฒ ํƒ€ ์ƒํƒœ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์ค‘ ์†Œ์ผ“ ์‹œ์Šคํ…œ์—์„œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” NUMA ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฒ ํƒ€ ์ƒํƒœ ๋ฐ›์€ PodOverhead ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด RuntimeClass์—์„œ Pod๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค ์–‘์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํผ์ง€๋Š” HugePages ์ง€์›, ์•ŒํŒŒ ์ƒํƒœ์—์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ ์ˆ˜์ค€ ๊ฒฉ๋ฆฌ ๋ฐ ์—ฌ๋Ÿฌ hugepage ํฌ๊ธฐ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์‚ญ์ œ๋จ ๋ฉ”ํŠธ๋ฆญ /metrics/resource/v1alpha1์— ๋Œ€ํ•œ ์—”๋“œํฌ์ธํŠธ, /metrics/resource๊ฐ€ ๋Œ€์‹  ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • API
    • ๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ค๋ž˜๋œ API ๊ทธ๋ฃน apps/v1beta1 ๋ฐ Extensions/v1beta1์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์„œ๋ฒ„์ธก ์ ์šฉ ๋ฒ ํƒ€2 ์ƒํƒœ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ฐœ์„ ์œผ๋กœ ๊ฐ์ฒด ์กฐ์ž‘์ด kubectl์—์„œ API ์„œ๋ฒ„๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์„  ์‚ฌํ•ญ ์ž‘์„ฑ์ž๋Š” ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ๋งŽ์€ ๊ธฐ์กด ์˜ค๋ฅ˜๊ฐ€ ์ˆ˜์ •๋  ๊ฒƒ์ด๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ".metadata.managedFields" ์„น์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฐ์ฒด ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์ €์žฅํ•˜์—ฌ ๋ˆ„๊ฐ€, ์–ธ์ œ, ๋ฌด์—‡์ด ์ •ํ™•ํžˆ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐœํ‘œ๋จ ์•ˆ์ •์ ์ธ CertificateSigningRequest API.
  • Windows ํ”Œ๋žซํผ ์ง€์›.

์ถœ์ฒ˜ : opennet.ru

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