Kubernetes: ํฌ๋“œ์˜ ๋กค๋ง ์žฌ์‹œ์ž‘

์— ๋งŒ๋“  2015๋…„ 09์›” 02์ผ  ยท  108์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubernetes

kubectl rolling-update ๋Š” ์ƒˆ ๋ณต์ œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ ์ง„์ ์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ์กด ๋ณต์ œ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์žˆ๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“  ํฌ๋“œ์˜ ๋กค๋ง ์žฌ์‹œ์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ƒˆ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ์‚ฌ์–‘์œผ๋กœ RC์— ๋ฌด์ž‘๋™ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. RC๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ RC ์‚ฌ์–‘์„ ์ œ๊ณตํ•  ํ•„์š” ์—†์ด ๋กค๋ง ์žฌ์‹œ์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์œ ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ kubectl์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์–‘์ด ๋กœ์ปฌ์— ์žˆ๋Š”์ง€ ๊ฑฑ์ •ํ•˜์ง€ ์•Š๊ณ  ์‰ฝ๊ฒŒ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ƒˆ๋กœ์šด ๋ช…๋ น kubectl rolling-restart ์€ RC ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ณ  RC๊ฐ€ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ชจ๋“  ํฌ๋“œ๋ฅผ ์ ์ง„์ ์œผ๋กœ ์‚ญ์ œํ•˜๊ณ  RC๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  2. 1๊ณผ ๊ฐ™์ง€๋งŒ ๊ฐ ํฌ๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋Œ€์‹  ๋ช…๋ น์ด ํฌ๋“œ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  ๊ฐ ํฌ๋“œ์— ์ผ์ข…์˜ "์žฌ์‹œ์ž‘" ๋ช…๋ น์„ ์ ์ง„์ ์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(์ด๊ฒƒ์ด ์กด์žฌํ•ฉ๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๊นŒ?). ์ด๊ฒƒ์˜ ์žฅ์ ์€ ํฌ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๊ธฐ๊ณ„์— ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์žฌ์กฐ์ •๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  3. kubectl rolling-update ์ด์ „ RC๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ 1 ๋˜๋Š” 2์˜ ๋…ผ๋ฆฌ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
  4. kubectl rolling-update ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „ RC๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด์ „ RC๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ RC๋ฅผ ์ž๋™ ์ƒ์„ฑํ•˜๊ณ  ์ผ๋ฐ˜ ๋กค๋ง ์—…๋ฐ์ดํŠธ ๋…ผ๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ๋ชจ๋“  ์˜ต์…˜์—๋Š” ๋ชจ๋“  ํฌ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ๋‹ค์‹œ ์‹œ์ž‘์ด ์ˆ˜ํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„ ์ƒํƒœ ํ™•์ธ๊ณผ ํ•จ๊ป˜ ์ตœ๊ทผ์— ๋„์ž…๋œ MaxSurge ๋ฐ MaxUnavailable ์˜ต์…˜(#11942 ์ฐธ์กฐ)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@nikhiljindal @kubernetes/kubectl

areapp-lifecycle kinfeature lifecyclfrozen prioritbacklog siapps

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. kubectl rollout restart ์ด(๊ฐ€) ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

๋ชจ๋“  108 ๋Œ“๊ธ€

cc @ironcladlou @bgrant0607

์‚ฌ์–‘์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํฌ๋“œ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ ์‹คํŒจํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

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

์ฒซ ๋ฒˆ์งธ ํฌ๋“œ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ ์‹คํŒจํ•˜๋ฉด ๊ณ„์†์„ ์ค‘๋‹จํ•˜๊ฑฐ๋‚˜ ํฌ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ„์† ์žฌ์‹œ๋„ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์‚ฌ์–‘ ๋ณ€๊ฒฝ ์—†์ด ๋กค๋ง ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ์ „์ฒด์— ํฌ๋“œ๊ฐ€ ์žฌํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
๋ฌด๋ฆฌ.

๊ทธ๋Ÿฌ๋‚˜ ์ผ์ •์„ ์žฌ์กฐ์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.
๊ผฌํˆฌ๋ฆฌ. ์ด๋Š” ๋กค๋ง ๋ ˆ์ด๋ธ” ๋ณ€๊ฒฝ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒˆ๋กœ์šด ๋™์ 
๋กœ์ปฌ ํŒŒ์ผ ์ƒํƒœ๋ฅผ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ์ง€์›๋‹ˆ๋‹ค.

2015๋…„ 9์›” 2์ผ ์ˆ˜์š”์ผ ์˜ค์ „ 12์‹œ 1๋ถ„์— Sam Ghods [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค๊ฐ€ ์ผ๋ถ€ ์๊ธฐํ˜• ๋˜๋Š” ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ์ƒํƒœ๊ฐ€ ๋  ๋•Œ๋งˆ๋‹ค(์ตœ๋Œ€
์—ฐ๊ฒฐ์ด ์ค‘๋‹จ๋˜๊ณ  ๋‚ด๋ถ€ ์ƒํƒœ๊ฐ€ ์ข‹์ง€ ์•Š์Œ ๋“ฑ). ๊ทธ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ
์„œ๋น„์Šค๊ฐ€ ์‹ฌ๊ฐํ•œ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋‹จ๊ณ„ ์ค‘ ํ•˜๋‚˜
์ž˜๋ชป๋œ ํ–‰๋™.

์ฒซ ๋ฒˆ์งธ ํฌ๋“œ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ ์‹คํŒจํ•˜๋ฉด ์ค‘์ง€๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.
๊ณ„์†ํ•˜๊ฑฐ๋‚˜ ๊ณ„์†ํ•ด์„œ ํฌ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubernetes/issues/13488#issuecomment -136931790
.

ํด๋ ˆ์ดํŠผ ์ฝœ๋จผ | ์ˆ˜์„ ์—”์ง€๋‹ˆ์–ด, OpenShift

@smarterclayton ์œ„์— ๋‚˜์—ด๋œ ๋‚ด ์˜ต์…˜ 2์™€ ๊ฐ™์Šต๋‹ˆ๊นŒ? ๋ผ๋ฒจ์ด ๋ณ€๊ฒฝ๋˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ต์žฅ. wedged: ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํ™œ์„ฑ๋„ ํ”„๋กœ๋ธŒ์˜ ์šฉ๋„์ž…๋‹ˆ๋‹ค.

๋‹ต์žฅ. ์žฌ์กฐ์ •: #12140 ์ฐธ์กฐ

์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ์ง€์›ํ•œ๋‹ค๋ฉด #9043์œผ๋กœ ๋ฌถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํฌ๋“œ๊ฐ€ ์‚ด์•„ ์žˆ๊ณ  ๊ฒ€์‚ฌ์— ์‘๋‹ตํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์— ๋” ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์˜ˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์บ์‹œ ๋˜๋Š” ๋‚ด๋ถ€ ์ƒํƒœ๊ฐ€ ์†์ƒ๋˜์–ด ์ง€์›Œ์•ผ ํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์ธ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์•„๋งˆ๋„ ์ œ๊ฐ€ ํ‹€๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ€ํŒจ๋Š” ๋‹จ์ง€ ํ•˜๋‚˜์˜ ๊ผฌํˆฌ๋ฆฌ์ผ ๋ฟ์ด๋ฉฐ RC๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜คํ”„๋ผ์ธ์—์„œ ์–ธ๊ธ‰๋œ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋Š” ๊ตฌ์„ฑ์„ ๋‹ค์‹œ ์ฝ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ๋“  ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒˆ ๊ตฌ์„ฑ์„ ๋กœ๋“œํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ์•”์‹œ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ๊ตฌ์„ฑ ์ฐธ์กฐ(์˜ˆ: env var)๋ฅผ ํฌ๋“œ์— ํ‘ธ์‹œํ•˜๋ ค๋ฉด ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋™๊ธฐ #1353๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@bgrant0607 ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๊ณ  ๊ฒฐ์ • ํ–ˆ์Šต๋‹ˆ๊นŒ?

@gmarek ํ˜„์žฌ ์•„๋‹™๋‹ˆ๋‹ค . ๋„ˆ๋ฌด ๋งŽ์€ ์ผ์ด ์ด๋ฏธ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ํ•ญ๋ชฉ์— ๋Œ€ํ•ด post v1.1 ์ด์ •ํ‘œ(๋˜๋Š” ๋ฌด์–ธ๊ฐ€)๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ์ฆ‰์‹œ ์ˆ˜์ •ํ•  ์‚ฌ๋žŒ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋„ ์ด ๊ธฐ๋Šฅ์˜ ํŒฌ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋กค์•„์›ƒํ•˜๋ ค๋Š” ๋ชจ๋“  ์‚ฌ์†Œํ•œ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•ด ๊ฐ•์ œ๋กœ ํƒœ๊ทธ๋ฅผ ์ „ํ™˜ํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ์ด ๊ธฐ๋Šฅ์˜ ํŒฌ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€: ์ƒˆ๋กœ ํ‘ธ์‹œ๋œ ๋„์ปค ์ด๋ฏธ์ง€( imagePullPolicy: Always )๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ชจ๋“  ํฌ๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ํ˜„์žฌ ์•ฝ๊ฐ„์˜ ํ•ดํ‚ค ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ์ด๋ฆ„์— :latest ํƒœ๊ทธ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์—†๋Š” ๋กค๋ง ์—…๋ฐ์ดํŠธ์ž…๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€: ๋น„๋ฐ€ ์—…๋ฐ์ดํŠธ.

์ด ๊ธฐ๋Šฅ์„ ์ •๋ง ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. kubernetes์—์„œ ๋…ธ๋“œ ์•ฑ์„ ์‹คํ–‰ํ•˜๊ณ  ํ˜„์žฌ ์•ฑ ์˜์‚ฌ ์บ์‹ฑ์—์„œ ์ง€์šฐ๊ธฐ ์œ„ํ•ด ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ํ•˜๊ณ  ์žˆ๋Š” ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

kubectl get pod | grep 'pod-name' | cut -d " " -f1 - | xargs -n1 -P 10 kubectl delete pod

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

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

์˜ˆ, ๋‚ด๋ถ€ ๋ณ€๊ฒฝ ์—†์ด ํฌ๋“œ/์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค...
๊ตฌ์„ฑ, ์บ์‹œ, ์™ธ๋ถ€ ์„œ๋น„์Šค ์žฌ์ ‘์† ๋“ฑ. ์ด ๊ธฐ๋Šฅ์ด ๊ฐœ๋ฐœ๋˜๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ž‘์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•(๋ฐฐํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ด๋ฏธ์ง€/ํฌ๋“œ๋ฅผ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค):

  • configMap ์ƒ์„ฑ
  • ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์—์„œ ENV ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ ์ƒ์„ฑ(๋ฐฐํฌ์— ๋Œ€ํ•œ ์ง€ํ‘œ๋กœ ์‚ฌ์šฉ)
  • configMap ์—…๋ฐ์ดํŠธ
  • ๋ฐฐํฌ ์—…๋ฐ์ดํŠธ(์ด ENV ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ)

k8s๋Š” ๋ฐฐํฌ ์ •์˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Œ์„ ํ™•์ธํ•˜๊ณ  ํฌ๋“œ ๊ต์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์ถ”์‹ :
๋ˆ„๊ตฐ๊ฐ€ ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค

@paunin ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

@paunin ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค์— ๋งค์šฐ ์ค‘์š”ํ•œ ConfigMap ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋ฉฐ ๋ช‡ ๋ถ„์—์„œ ๋ช‡ ์‹œ๊ฐ„ ๋‚ด์— ์ปจํ…Œ์ด๋„ˆ์— ๋กค์•„์›ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋™์•ˆ ๋ฐฐํฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ชจ๋‘ ๋™์‹œ์— ์‹คํŒจํ•˜๊ณ  ์ตœ์†Œ ๋ช‡ ์ดˆ์˜ ๋ถ€๋ถ„์  ๋‹ค์šดํƒ€์ž„์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

from (kinda-related #9043): @paunin ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ•œ RESTART_ ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜์ด๊ณ  ISO ํƒ€์ž„์Šคํƒฌํ”„๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

kubectl patch deployment mydeployment \
-p'{"spec":{"template":{"spec":{"containers":[{"name":"mycontainer","env":[{"name":"RESTART_","value":"$(date -uIseconds)"}]}]}}}}'

(์–ด๋–ค ์ด์œ ๋กœ _ ์‹œ์ž‘ํ•˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ณ  ์ˆซ์ž env value ๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๋ฏ€๋กœ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•จ)

@paunin @rcoup ์šฐ๋ฆฌ๋Š” ์š”์ฆ˜ ๋งค์šฐ ๋น„์Šทํ•œ ์ผ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ "DUMMY_VAR_FOR_NO_OP_DEPLOYMENT"๋ผ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ์ถ”๊ฐ€๋Š” CLI API์˜ ๋ถˆํ•„์š”ํ•œ ํŒฝ์ฐฝ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” @paunin์ด ์ œ์•ˆํ•œ ๋Œ€๋กœ ๋ฐฐํฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ kubectl restart deployment some-api ์™€ ๊ฐ™์€ ๋ฐฐํฌ์— ๋Œ€ํ•ด ์ด๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Kubernetes๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ด์œ ๋กœ Pod๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ป๋‹ค๊ฐ€ ๋‹ค์‹œ ์ผœ๋Š” ๋ฐฉ์‹์ด ๋ฐ”๋žŒ์งํ•œ ์šด์˜ ๋ฐฉ์‹์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๋„๋•์  ์ž…์žฅ์€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค๋งŒ.. ์›ํ•˜๋Š” ๋ถ„๋“ค์ด ๋ฒ”์œ„์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์„ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋œ ์‹์š•์„ ๋‹์šฐ๋Š” ํŠธ๋ฆญ:

  • ํฌ๋“œ ์‚ญ์ œ
  • ๋”๋ฏธ ๋ ˆ์ด๋ธ”
  • ๋”๋ฏธ ํ™˜๊ฒฝ ๋ณ€์ˆ˜
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋งคํ•‘๋œ ๋”๋ฏธ ๊ตฌ์„ฑ ๋งต
  • ์ž‘์—…์ž ๋…ธ๋“œ ์žฌ๋ถ€ํŒ…
  • ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์ „๋ ฅ ์ฐจ๋‹จ ๐Ÿ˜„

'์•„๋‹ˆ์š”, ์•„๋‹ˆ์š”, ์•„๋ฌด๊ฒƒ๋„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  ์—ฌ๊ธฐ ์ด ๋ ˆ์ด๋ธ”์˜ ์˜คํƒ€๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค' ๐Ÿ˜›

์ด ๊ธฐ๋Šฅ์€ kubectl apply ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. apply ๋Š” ๋ณต์ œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•˜์ง€๋งŒ ํฌ๋“œ๋Š” ๋‹ค์‹œ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ํฌ๋“œ๋ฅผ Blue-Green ๋ฐฉ์‹์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@DmitryRomanenko ReplicationController์—์„œ Deployment๋กœ ์ „ํ™˜ํ•˜๋Š”

@kargakis ๋ถˆ๊ฐ€๋Šฅ: ๋ฐฐํฌ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฐ
kubectl apply ConfigMaps, Services ๋“ฑ๋„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

@DmitryRomanenko ๋ฌธ์ œ๊ฐ€ "ConfigMap/Secret์ด ์—…๋ฐ์ดํŠธ๋  ๋•Œ Pod๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค"์ธ ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์€ ConfigMap ๋ฐ Secrets์— ๋Œ€ํ•œ ๋ฒ„์ „์„ ๊ฐ–๊ณ  ํ•ด๋‹น ๋ฒ„์ „์„ ๋ฐฐํฌ ์‚ฌ์–‘์˜ ์ผ๋ถ€๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ kubectl apply ํ•˜๋ฉด Deployment ์‚ฌ์–‘์ด ๋ณ€๊ฒฝ๋˜๊ณ  Pod๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์ƒํ™ฉ์—์„œ๋Š” Pod๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(Service/Ingress/etc ์—…๋ฐ์ดํŠธ๋ฅผ ์˜๋ฏธํ•จ).

@tyranron , ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ConfigMap ๋ฒ„์ „์„ ๋งŒ๋“œ๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ƒˆ ๋ฐฐํฌ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ƒˆ ๊ตฌ์„ฑ ๋งต์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

@DmitryRomanenko ์‹ค์ œ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ

์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ์ข‹์€ ์†”๋ฃจ์…˜์€ configmap ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ผ์ข…์˜ ๊ฐ์‹œ์ž ๋˜๋Š” ํ•ด์‹œ์„ฌ ๊ฒ€์‚ฌ๊ธฐ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ ๊ฐœ์ฒด/ํฌ๋“œ ์žฌ์‹œ์ž‘์„ ํŠธ๋ฆฌ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋ชจ๋“  ๊ฒƒ์ด configmap , secret ). k8s ์•„ํ‚คํ…์ฒ˜์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ...

๋˜ํ•œ configmap|secret ๊ฐœ์ฒด์—์„œ ์ œ์–ดํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋‹ค์‹œ ์‹œ์ž‘ ์—ฌ๋ถ€๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@tyranron ,

๋”ฐ๋ผ์„œ kubectl์„ ์ ์šฉํ•˜๋ฉด Deployment ์‚ฌ์–‘์ด ๋ณ€๊ฒฝ๋˜๊ณ  Pod๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์—…๋ฐ์ดํŠธ๋œ ๋ฐฐํฌ์™€ ํ•จ๊ป˜ kubectl apply -f new_config.yml ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ๋ฐฐํฌ๋Š” ๋กค๋ง ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๊นŒ?

@DmitryRomanenko ๋„ค ๋งž์Šต๋‹ˆ๋‹ค .

@DmitryRomanenko ์ƒˆ๋กœ์šด ์‚ฌ์–‘์„ ์ ์šฉํ•˜๋ฉด๋œ๋‹ค ๋ฐฐํฌ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ณ , ๊ทธ ์‚ฌ์–‘์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ๋ฐฐํฌ์— ์—…๋ฐ์ดํŠธ ๋‹ค์‹œ ์‹œ์ž‘ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ ์ „๋žต์€ RollingUpdate ์ด์ง€๋งŒ ๋‹ค๋ฅธ ์ „๋žต์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

90์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ถ€์‹คํ•ด์ง‘๋‹ˆ๋‹ค.
/remove-lifecycle stale ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ตœ์‹ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋ถ€์‹ค ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฉ๊ณ  ๊ฒฐ๊ตญ ๋‹ซํž™๋‹ˆ๋‹ค.

/lifecycle frozen ์ฃผ์„์œผ๋กœ ์ด์Šˆ๊ฐ€ ์ž๋™์œผ๋กœ ๋‹ซํžˆ์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close .

sig-testing, kubernetes/test-infra ๋ฐ/๋˜๋Š” @fejta ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.
/์ˆ˜๋ช… ์ฃผ๊ธฐ ๋ถ€์‹ค

@rcoup ์˜ ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ๋ณ€๊ฒฝ: date ๊ฐ€ ์‰˜ ๋‚ด์—์„œ ํ‰๊ฐ€๋˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"mycontainer","env":[{"name":"RESTART_","value":"'$(date +%s)'"}]}]}}}}'

/remove-lifecycle ๋ถ€์‹ค
/์ˆ˜๋ช… ์ฃผ๊ธฐ ๋™๊ฒฐ

Kubernetes๋ณด๋‹ค ์œ ์—ฐํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” Swarm ๋ชจ๋“œ๋ฅผ ํ•œ๋™์•ˆ ์‚ฌ์šฉํ•˜์—ฌ docker service update --force <service-name> ๊ณผ ๊ฐ™์ด ๊ฐ•์ œ ์—…๋ฐ์ดํŠธ(์‚ฌ์–‘ ๋ณ€๊ฒฝ ์—†์ด)๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์„œ๋น„์Šค ์ž‘์—…(์ฝ๊ธฐ: ๋ฐฐํฌ ํฌ๋“œ)์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
configmaps ๋ฐ secrets์˜ ๊ฒฝ์šฐ swarm์—์„œ๋Š” ํŽธ์ง‘์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋Œ€์‹  ํšŒ์ „ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด configmaps/secrets๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„œ๋น„์Šค ์‚ฌ์–‘์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ์ด์ „ ๊ฒƒ๋“ค์„ ์‚ญ์ œํ•จ์œผ๋กœ์จ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ configmaps/secerts์˜ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฐํฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์œ„์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ, ์ด ํšŒ์ „ ๋™์ž‘์€ ๋‚ด๊ฐ€ Swarm์„ ๋– ๋‚œ ์ฃผ์š” ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค! ๋กœ์ปฌ ๋ณต์‚ฌ๋ณธ์„ ๊ฐ€์ง€๊ณ  ์—…๋ฐ์ดํŠธํ•œ ๋‹ค์Œ ์ƒˆ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์ข…์† ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ swarm์˜ ๋น„๋ฐ€์€ API์—์„œ ์ฝ์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ(๋˜๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ exec)์— ํƒ‘์žฌํ•œ ๋‹ค์Œ ํŒŒ์ผ์„ cat ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ด€๋ จ ๋ฉ”๋ชจ์—์„œ ๋‚˜๋Š” ์–ผ๋งˆ ๋™์•ˆ openshift๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ env/configmap/secret ๋ณ€๊ฒฝ ์‹œ ํฌ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ •์ •ํ•ฉ๋‹ˆ๋‹ค.

์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ configmap/secret์—์„œ ์ฒดํฌ์„ฌ์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ๊ฐ•์ œ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ตฌ์„ฑ์„ ์ „ํ˜€ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ณ  ์ž„์˜์˜ ์ผ์‹œ ์ค‘์ง€๋กœ ๋กค๋ง ์žฌ์‹œ์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ฐ„๋‹จํ•œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค(์ข…๋ฃŒ๋œ ํฌ๋“œ ์‚ฌ์ด์— 30์ดˆ ๋Œ€๊ธฐ)

kubectl get po -l release=my-app -o name | cut -d"/" -f2 | while read p;do kubectl  delete po $p;sleep 30;done

ctrl+c๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ค‘๋‹จํ•œ ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@so0k , ๋Œ€์ฒด ๋ช…๋ น:

kubectl get pods|grep somename|awk '{print $1}' | xargs -i sh -c 'kubectl delete pod -o name {} && sleep 4'

2๋…„ ๋ฐ˜์ด ์ง€๋‚ฌ์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์€ ๋”๋ฏธ ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ๋”๋ฏธ ๋ ˆ์ด๋ธ”, ConfigMap ๋ฐ Secret ๊ฐ์‹œ์ž ์‚ฌ์ด๋“œ์นด, 0์œผ๋กœ ์กฐ์ •, ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๋กค๋ง ์—…๋ฐ์ดํŠธ ์…ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ์ „ํžˆ ์ƒˆ๋กœ์šด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ํŠธ๋ฆญ ์—†์ด ์ •์งํ•˜๊ฒŒ ํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์ผ์ž…๋‹ˆ๊นŒ?

27081 #33664 https://github.com/kubernetes/helm/issues/2639

https://stackoverflow.com/questions/41735829/update-a-deployment-image-in-kubernetes

kubectl scale --replicas=0 deployment application
kubectl scale --replicas=1 deployment application

https://stackoverflow.com/questions/40366192/kubernetes-how-to-make-deployment-to-update-image

๋˜ ๋‹ค๋ฅธ ํŠธ๋ฆญ์€ ์ฒ˜์Œ์— ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

kubectl set image deployment/my-deployment mycontainer=myimage:latest

๊ทธ๋ฆฌ๊ณ :

kubectl set image deployment/my-deployment mycontainer=myimage

์‹ค์ œ๋กœ ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€๋งŒ imagePullPolicy: "ํ•ญ์ƒ"๋„ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋˜ ๋‹ค๋ฅธ ํŠธ๋ฆญ์€ TerminationGracePeriodSeconds์™€ ๊ฐ™์ด ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•  ํ•„๋“œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. kubectl edit deployment your_deployment ๋˜๋Š” kubectl apply -f your_deployment.yaml์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒจ์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl patch deployment your_deployment -p \
  '{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'

http://rancher.com/docs/rancher/v1.4/en/cattle/upgrading/

# Force an upgrade even though the docker-compose.yml for the services didn't change
$ rancher-compose up --force-upgrade

@so0k @KIVagant ํฌ๋“œ ์‚ญ์ œ๋Š” ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋‹ค์šดํƒ€์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ strategy.rollingUpdate.maxUnavailable = 0 ๋กœ ๋‹จ์ผ ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ผ๋ฐ˜ ๋ฐฐํฌ๋Š” ๊ธฐ์กด ํฌ๋“œ๋ฅผ ์ข…๋ฃŒํ•˜๊ธฐ ์ „์— ๋จผ์ € ์ƒˆ ํฌ๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. kubectl patch deployment ํŠธ๋ฆญ์€ ์ด ๋™์ž‘์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€๋งŒ ํฌ๋“œ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์š”์ฒญ ์‹œ ์ด ๋™์ž‘์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋น„ํ•ตํ™” ๋ฐฉ๋ฒ•์„ ์ •๋ง ์›ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, hub.docker.com์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด ๋™์ผํ•œ ํƒœ๊ทธ๋ฅผ ํŒจ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "์ตœ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ " ์˜ค๋ž˜๋œ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ConfigMap/๋น„๋ฐ€ ์—…๋ฐ์ดํŠธ ๋กค์•„์›ƒ์€ #22368์ž…๋‹ˆ๋‹ค.
์ƒˆ ์ด๋ฏธ์ง€์˜ ๋” ์‰ฌ์šด ๋กค์•„์›ƒ์€ #1697์ž…๋‹ˆ๋‹ค.
์ธํ”Œ๋ ˆ์ด์Šค ๋กค๋ง ์—…๋ฐ์ดํŠธ๋Š” #9043์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ๋นŒ๋“œ์—์„œ ๋‹ค์‹œ ์‹œ์ž‘: https://github.com/GoogleCloudPlatform/freshpod
ํ…œํ”Œ๋ฆฟ ์ฃผ์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ ๋กค์•„์›ƒ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ํŠธ๋ฆญ์— ๋Œ€ํ•œ Helm Summit ํ”„๋ ˆ์  ํ…Œ์ด์…˜: https://www.youtube.com/watch?v=dSw0w1x96ak

@bgrant0607 ๋‹ค๋ฅธ ํ‹ฐ์ผ“์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š๋Š” ์ค‘์š”ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/kubernetes/kubernetes/issues/13488#issuecomment -136946912

@ghodss ๋Š” ๋‹ค์Œ
์ด๊ฒƒ์€ ํฌ๋“œ๊ฐ€ ์‚ด์•„ ์žˆ๊ณ  ๊ฒ€์‚ฌ์— ์‘๋‹ตํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์— ๋” ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์˜ˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์บ์‹œ ๋˜๋Š” ๋‚ด๋ถ€ ์ƒํƒœ๊ฐ€ ์†์ƒ๋˜์–ด ์ง€์›Œ์•ผ ํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์ธ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์•„๋งˆ๋„ ์ œ๊ฐ€ ํ‹€๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜๋™ ํŠธ๋ฆญ ์—†์ด ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ์ง€์šฐ๊ธฐ ์œ„ํ•ด ๋กค๋ง ๋‹ค์‹œ ์‹œ์ž‘์„ ๊ฐ•์ œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@rcoup ๊ณผ @paunin์ด ์„ค๋ช…ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋น„์Šทํ•œ ํ•œ ์ค„ ์งœ๋ฆฌ๊ฐ€ ์žˆ์ง€๋งŒ ๋” ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์— ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. JSON ์ถœ๋ ฅ์— ์˜์กดํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„์„ ์œ„ํ•ด jq๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ํ•จ์ˆ˜๋กœ ๋‚ด bashrc์— ๋กœ๋“œํ•˜์—ฌ ์–ด๋””์„œ๋‚˜ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl-restart() {
  kubectl get deploy $1 -o json | jq \
    'del(
      .spec.template.spec.containers[0].env[]
      | select(.name == "RESTART_"))
    | .spec.template.spec.containers[0].env += [{name: "RESTART_", value: now|tostring}]' | kubectl apply -f -
}

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ kubectl-restart my-deployment-name ๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ์˜ RESTART_ env var๋ฅผ ํ˜„์žฌ ํƒ€์ž„์Šคํƒฌํ”„๋กœ "์—…๋ฐ์ดํŠธ"ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” jq ์ „๋ฌธ๊ฐ€์™€ ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถœ๋ ฅ์—์„œ โ€‹โ€‹์ด์ „ RESTART_ env var๋ฅผ ์‚ญ์ œํ•œ ๋‹ค์Œ(์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ) ๊ฑฐ๊ธฐ์— ๋‹ค์‹œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์‹œ๊ฐ„.

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋ณธ ๋ฐฉ๋ฒ•์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ์ œ๊ฒŒ๋Š” ๋งค์šฐ ์ด์ƒํ•˜๊ฒŒ ๋Š๊ปด์ง€์ง€๋งŒ... ํ™•์‹คํžˆ ์—”์ง€๋‹ˆ์–ด๋“ค๋กœ ๊ฐ€๋“ ์ฐฌ ํšŒ์˜์‹ค์€ "๊ป๋‹ค๊ฐ€ ๋‹ค์‹œ ์ผœ๋Š”" ๊ธฐ๋Šฅ์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฐ–๊ณ  ์‹ถ์–ดํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ข‹์€ ํ•ดํ‚น์ด์ง€๋งŒ ํฐ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์— kubectl apply -f ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•  ๋•Œ ๋‹ค๋ฅธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†๋”๋ผ๋„ RESTART_xxx ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ํ•ด๋‹น ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋งˆ์ง€๋ง‰ ๋ฐฐํฌ์™€ ์ด ๋ฐฐํฌ ์‚ฌ์ด์— ๋‹ค์‹œ ์‹œ์ž‘๋œ ์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋ฐฐํฌ์—์„œ ์ž˜๋ชป๋œ ๋‹ค์‹œ ์‹œ์ž‘์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์ด์ง€ ์•Š์€...

์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋กค๋ง ์žฌ์‹œ์ž‘ ๊ธฐ๋Šฅ์ด ๋งจ ์œ„์— ๊ตฌ์ถ•๋˜์ง€ ์•Š๊ณ  ๋ฐฐํฌ ์ปจํŠธ๋กค๋Ÿฌ์— ๊ตฌ์›Œ์ ธ์•ผ ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์œ„์˜ ๊ทธ์˜ ์˜๊ฒฌ (์ถœ์ฒ˜: https://stackoverflow.com/a/40368520/90442)์—์„œ ์ธ์šฉ๋œ " terminationGracePeriodSeconds ์˜ ํŒจ์น˜ ๋ฐฐํฌ" ์ „๋žต @whereisaaron ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด bash ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

# $1 is a valid namespace
function refresh-all-pods() {
  echo
  DEPLOYMENT_LIST=$(kubectl -n $1 get deployment -o json|jq -r .items[].metadata.name)
  echo "Refreshing pods in all Deployments"
  for deployment_name in $DEPLOYMENT_LIST ; do
    TERMINATION_GRACE_PERIOD_SECONDS=$(kubectl -n $1 get deployment "$deployment_name" -o json|jq .spec.template.spec.terminationGracePeriodSeconds)
    if [ "$TERMINATION_GRACE_PERIOD_SECONDS" -eq 30 ]; then
      TERMINATION_GRACE_PERIOD_SECONDS='31'
    else
      TERMINATION_GRACE_PERIOD_SECONDS='30'
    fi
    patch_string="{\"spec\":{\"template\":{\"spec\":{\"terminationGracePeriodSeconds\":$TERMINATION_GRACE_PERIOD_SECONDS}}}}"
    kubectl -n $1 patch deployment $deployment_name -p $patch_string
  done
  echo
}

์—ฌ๊ธฐ ์š”์ ์„ ํ†ตํ•ด ๋Œ“๊ธ€์„ ํ•˜์„ธ์š” . ๋‚˜๋Š” ์ด๊ฒƒ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋” ์ข‹์„ ๊ฒƒ์ด๋ผ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์˜๊ฒฌ์„ ๋ฐ˜์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ณด๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ kube ๊ด€๋ จ ์ •๋‹นํ™”๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ํ‚ค๋ฅผ ๋กค๋งํ•˜๊ฑฐ๋‚˜ ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์ดˆ๊ธฐํ™” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ดˆ๊ธฐํ™” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@ kubernetes / sig-apps-feature-requests @ kow3ns @janetkuo

@gjcarneiro ์ ์šฉํ•œ ๊ตฌ์„ฑ์— RESTART_xxx env var๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ, ์—†์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ผ์ด๋ธŒ ์ƒํƒœ์—์„œ ์ถ”๊ฐ€ env var๋ฅผ ๋ฌด์‹œํ•˜๋„๋ก ์ ์šฉํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

cc @apelisse

@gjcarneiro ์˜ˆ, @mattdodge ์Šคํฌ๋ฆฝํŠธ์˜ ๋ฌธ์ œ๋Š” ์ ์šฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด lastApplied ์ฃผ์„์— ์ €์žฅ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒจ์น˜ ๋˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ๊ธฐ๋ณธ์ ์ด๊ณ  ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋„ #22368์—๋„ ์ง„์ „์ด ์—†์Šต๋‹ˆ๋‹ค. ํ•œ์ˆจ ์‰ฌ์„ธ์š” :-(

๋งˆ์šดํŠธ๋œ ConfigMap์ด ์—…๋ฐ์ดํŠธ๋œ ํ›„ DaemonSet๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๋น ๋ฅด๊ณ  ๋”๋Ÿฌ์šด ์†”๋ฃจ์…˜์„ ์ถ”์ฒœํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ(์ด๋ฆ„์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋™์ผํ•จ)?

@alcohol , ์ด๊ฒƒ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค https://github.com/kubernetes/kubernetes/issues/13488#issuecomment -356892053

ํŒ ๊ณ ๋งˆ์›Œ :-)

Openshift์—๋Š” ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ, ์›นํ›… ๋˜๋Š” ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ๋กค์•„์›ƒ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฐฐํฌ ํŠธ๋ฆฌ๊ฑฐ ๊ฐœ๋…์ด ์žˆ์Šต๋‹ˆ๋‹ค. Kubernetes์— ์žˆ์œผ๋ฉด ๋งค์šฐ ์ข‹์€ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ˆ˜๋™ ๋กค์•„์›ƒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ Docker ์ €์žฅ์†Œ์—๋Š” ๊ธฐ๋ก์ด ์žˆ์œผ๋ฏ€๋กœ ๋กค๋ฐฑ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. .spec.template ์—์„œ ์ƒ์„ฑ๋œ ํฌ๋“œ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ image-tag:@digest ํ˜•์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กค๋ฐฑ์€ ์ด์ „ ๋กค์•„์›ƒ์˜ ๋‹ค์ด์ œ์ŠคํŠธ ID๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋„์›€์ด๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ.

ํฌ๋“œ > ํ…œํ”Œ๋ฆฟ > ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—์„œ ๋ ˆ์ด๋ธ” ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด kubectl apply -f file.yaml ์ดํ›„์— ๋กค๋ง ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•ญ์ƒ ๋ฒ„์ „์— ๋Œ€ํ•œ ๋ ˆ์ด๋ธ”์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ  ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ์›ํ•  ๋•Œ๋งˆ๋‹ค ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜๊ณ  ํŒŒ์ผ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋‹จ์ ์€ ๋‹ค์Œ์— ๋ฐฐํฌํ•  ๋•Œ kubectl apply -f some.yaml . ๋งž์ฃ ? ์ผ๋ฐ˜์ ์œผ๋กœ some.yaml ์—์„œ ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฉด ์•„๋ฌด ๊ฒƒ๋„ ๋‹ค์‹œ ์‹œ์ž‘๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด Kubernetes์˜ ๊ฐ€์žฅ ์ข‹์€ ์  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ ˆ์ด๋ธ”์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„ ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋‹ค์Œ ์ผ๋ฐ˜ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ์—์„œ๋Š” ํ‰์†Œ์™€ ๊ฐ™์ด kubectl apply -f some.yaml ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ yaml ํŒŒ์ผ์— ๋™์ผํ•œ ๋ ˆ์ด๋ธ”์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐํฌ๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

@gjcarneiro apply ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด kubectl.kubernetes.io/last-applied-configuration ์ฃผ์„์ด ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ค์Œ apply ์ธํ•ด ๋‹ค์‹œ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” kubectl์— ๋กค๋ง ์žฌ์‹œ์ž‘ ๋ช…๋ น์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ์ง€์ง€ํ•˜์ง€๋งŒ ๊ทธ ๋™์•ˆ์—๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์œ„์˜ ์†”๋ฃจ์…˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•จ).

kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"mycontainer","env":[{"name":"RESTART_","value":"'$(date +%s)'"}]}]}}}}'

์ด๊ฒƒ์„ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”ํ•˜๊ณ  .bashrc์— ํ•จ์ˆ˜๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด ์ข‹์€ ์ž„์‹œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

์•„ ๊ทธ๋ ‡๊ตฐ์š” ๋ชฐ๋ž๋„ค์š” ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” bash ๋ณ„์นญ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํšŒ์‚ฌ์—์„œ Python+aiohttp๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž์ฒด ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ  ์ด๋ฏธ ํŒจ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ์†Œ์Šค๋กœ ํ• ๊นŒ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ๊ทธ๋ƒฅ ๊ฒŒ์„๋Ÿฌ์„œ...

์‚ฌ๋žŒ๋“ค์ด ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋™์ผํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๊ฒŒ์‹œํ•˜๊ธฐ ์ „์— ์ „์ฒด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์œผ์‹ญ์‹œ์˜ค.

@joelittlejohn ๋งคํฌ๋กœ๋ฅผ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ๋‚ด ํฌ๋“œ๊ฐ€ ์žฌ๋ถ€ํŒ…๋˜์—ˆ์ง€๋งŒ ๋ชจ๋‘ ๋™์‹œ์— ๋‹ค์‹œ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋กค๋ง ์žฌ๋ถ€ํŒ…์„ ์œ ๋ฐœํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@Macmee ๋ฐฐํฌ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์œ„์˜ ๋ช…๋ น์€ ๋ฐฐํฌ๋งŒ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐฐํฌ์—์„œ ์ •์˜ํ•œ ๋กค์•„์›ƒ strategy ์— ๋”ฐ๋ผ ํฌ๋“œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐฐํฌ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋™์‹œ์— ๋ชจ๋“  ํฌ๋“œ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ .spec.strategy.rollingUpdate.maxUnavailable ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋„ ์ด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ธก์˜ ํ•œ ๊ฐ€์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์šฐ๋ฆฌ์˜ spring-boot ์•ฑ์— ๋Œ€ํ•ด ๋ฐ scm๊ฐ€ ์ง€์›ํ•˜๋Š” spring-cloud-config-server๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์ƒˆ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์Šคํ”„๋ง ๋ถ€ํŠธ ์•ฑ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์žฌ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์šฐ์•„ํ•œ ์žฌ์‹œ์ž‘ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@japzio Helm์ด ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ฃผ์„์˜ configmap ์ฒดํฌ์„ฌ์€ ์ด ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋„ ์ด ๊ธฐ๋Šฅ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. @bgrant0607 @nikhiljindal

@bholagabbar-mt ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

cc @kow3ns @janetkuo

@bgrant0607 @kow3ns @janetkuo ์šฐ๋ฆฌ ์‹œ์Šคํ…œ์˜ ์‚ฌ์šฉ

  1. ๋น„๋ฐ€ ์—…๋ฐ์ดํŠธ - ์ €์™€ ๊ฐ™์ด kubernetes๋ฅผ ํ†ตํ•ด ์ž์ฒด ์ถ”์ƒํ™”๋ฅผ ๊ตฌ์ถ•ํ•œ ํšŒ์‚ฌ๊ฐ€ ๋งŽ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ณ„์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” kubernetes๋ฅผ ํ†ตํ•ด ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜๋˜๋Š” ์ž์ฒด ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํˆฌ๊ตฌ ๋น„๋ฐ€ ์ œ์•ˆ ๋Œ“๊ธ€ ๋“ฑ์€ ํ•ด๋‹น๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. dev ํด๋Ÿฌ์Šคํ„ฐ์˜ ConfigMaps์—์„œ ๋น„๋ฐ€์„ ๋‹ค์‹œ ๋กœ๋“œํ•˜๋ ค๋ฉด ํฌ๋“œ๋ฅผ ๊ฐ•์ œ ์ข…๋ฃŒํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ช‡ ์ดˆ์˜ ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋กค๋ง ์—…๋ฐ์ดํŠธ์˜ ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

  2. ์ด๊ฒƒ์€ ์•ฝ๊ฐ„ ๋ณต์žกํ•˜์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ „๋ฐ˜์ ์ธ ๋ฒ”์œ„๋Š” ๋น„์ •์ƒ์ ์ธ ๋™์ž‘์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Play ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋˜๋Š” 4-5๊ฐœ์˜ ๋ฌด๊ฑฐ์šด Java ์•ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Java ํฌ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•œ ๋‹ค์Œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์— ๋„๋‹ฌํ•˜๋ฉด ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ stackoverflow ๋ฌธ์ œ ๋ฐ ์ด์™€ ๊ด€๋ จ๋œ Kubernetes ๋ฌธ์ œ ๊ฐ€ ์žˆ๋Š” ๋ฌธ์„œํ™”๋œ Java ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. 3-4์‹œ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ํฌ๋“œ๋ฅผ ๋กค๋ง-๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ์žฌ์„ค์ •๋˜๊ณ  ์•ฑ์ด ์ŠคํŒŒ์ดํฌ ์—†์ด ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ถฉ๋ถ„ํžˆ ์„ค๋“๋ ฅ์ด ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ ์ด ๊ธฐ๋Šฅ์€ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ฑ„ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@bholagabbar-mt ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋กค๋ง ๋ฐฐํฌ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"mycontainer","env":[{"name":"LAST_MANUAL_RESTART","value":"'$(date +%s)'"}]}]}}}}'

@montanaflynn ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ˜„์žฌ ์‹œ์Šคํ…œ ์ž์ฒด์— ํ†ตํ•ฉํ–ˆ์œผ๋ฉฐ ์ž˜ ์‹คํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

cc @huzhengchuan

์ด์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€: containerd์˜ ๋ณด์•ˆ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ชจ๋“  ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. https://seclists.org/oss-sec/2019/q1/119 ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์™„์ „ํžˆ ๋‹ค์šด๋˜๊ฑฐ๋‚˜ ๋กค๋ง ์žฌ์‹œ์ž‘์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์‹œ์ž‘ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์—…๋ฐ์ดํŠธ , ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

kubectl set env --all deployment --env="LAST_MANUAL_RESTART=$(date +%s)" --namespace=...
kubectl set env --all daemonset --env="LAST_MANUAL_RESTART=$(date +%s)" --namespace=...

@realfresh ๋‹น์‹ ์€ ๋ชจ๋ฒ” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ๋ชฉ์žฅ์— annotation:{creatTime: 12312312} ์ถ”๊ฐ€!

kubectl set env deployment mydeployment --env="LAST_RESTART=$(date)" --namespace ...

ํ•˜๋‚˜์˜ ๋ฐฐํฌ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ๋ช…๋ น์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ช…๋ นํ˜• ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค.

cc @monopole @apelisse

~2~ 3 ๋…„ ๋ฐ˜์ด ์ง€๋‚ฌ์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์€ ๋”๋ฏธ ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ๋”๋ฏธ ๋ ˆ์ด๋ธ”, ๋”๋ฏธ ์ฃผ์„ , ConfigMap ๋ฐ Secret ๊ฐ์‹œ์ž ์‚ฌ์ด๋“œ์นด, 0์œผ๋กœ ์กฐ์ •, ๊ธฐ๋Šฅ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•œ ๋กค๋ง ์—…๋ฐ์ดํŠธ ์…ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ์ „ํžˆ ์ƒˆ๋กœ์šด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ํŠธ๋ฆญ ์—†์ด ์ •์งํ•˜๊ฒŒ ํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์ผ์ž…๋‹ˆ๊นŒ?

๋กค๋ง ์—…๋ฐ์ดํŠธ๋Š” ์•„์ง ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์—†๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ๋งค์šฐ ์ธ๊ธฐ ์žˆ๋Š” ํ™œ๋™์ž…๋‹ˆ๋‹ค ๐Ÿ˜„

์žฅ๊ธฐ ๋ฌธ์ œ(์ž์‹ ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ)

  1. ๋ช…๋ นํ˜• ๋…ผ๋ฆฌ๊ฐ€ ์„ ์–ธ์  API๋กœ ํ˜๋Ÿฌ ๋“ค์–ด๊ฐ€๊ฒŒ ํ•˜์—ฌ API๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ์œ ์ง€ํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ช…๋ น์  ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ CI/CD ๊ด€ํ–‰๊ณผ ๋น„ํ˜ธํ™˜์„ฑ์„ ๋„์ž…ํ•˜๋Š” ๊ด€์Šต์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š๊ณ ๋Š” ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.
  2. RollingRestart ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ์œผ๋กœ ์ธํ•ด ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ถ•์ถœ์„ ํ†ตํ•ด Pod 1์„ 1์”ฉ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š”(๋”ฐ๋ผ์„œ ์ค‘๋‹จ ์˜ˆ์‚ฐ์„ ๊ณ ๋ คํ•œ) RollingRestart API ๋ฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ CRD๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ํŠธ๋ฆฌ์—์„œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค).
  3. ์˜ˆ๋ฅผ ๋“ค์–ด lastRestartedAt=TIMESTAMP ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์„ ์–ธ์  ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‚˜์—๊ฒŒ ํ•ดํ‚น์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  4. ๋ˆ„๊ตฌ๋“ ์ง€ ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์„ ์–ธ์  ๋””์ž์ธ๊ณผ ๊ธฐ์—ฌ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด(ํŠธ๋ฆฌ ๋˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ) ๊ฐœ์„ ๋œ ์ €์žฅ์†Œ ์— ๋Œ€ํ•ด KEP PR์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ์„ ์–ธ์ ์ธ ๊ธฐ๋ณธ ์ œ๊ณต ๊ตฌํ˜„์„ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ธฐ๊บผ์ด ์›Œํฌ๋กœ๋“œ API๋ฅผ ๊ฒ€ํ† /๊ณต์œ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. [2]์™€ ๊ฐ™์€ CRD ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ œ๊ณต๋˜๋ฉด SIG Apps์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ›„์› ํ™•์žฅ์œผ๋กœ ํ›„์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด lastRestartedAt=TIMESTAMP ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์„ ์–ธ์  ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‚˜์—๊ฒŒ ํ•ดํ‚น์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•ดํ‚น์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์•ฝ์‹ ๋ช…๋ น์ค„๋งŒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๋Š” ํŒจ์น˜๋ฅผ ๋ณด๋‚ด๋Š” ํฌ๋ฃจ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. kubectl restart-deployment <deployment_name> ?

์ƒˆ๋กœ์šด '๋กค์•„์›ƒ'์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฐํฌ/๋ฐ๋ชฌ์…‹/์Šคํ…Œ์ดํŠธํ’€์…‹์„ ํŒจ์น˜ํ•˜๋Š” kubectl rollout restart ?

์ด๋Š” @kow3ns ์˜ ์ ‘๊ทผ ๋ฐฉ์‹(3)๊ณผ ์ผ์น˜ํ•˜๋ฉฐ ๋‹ค๋ฅธ kubectl rollout ๋ช…๋ น์œผ๋กœ ๋ฐฉ๊ธˆ ์‹œ์ž‘ํ•œ ๋กค์•„์›ƒ์„ ์‹œ์ฒญ/์ผ์‹œ ์ค‘์ง€/์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@whereisaaron ํŒจ์น˜๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค (๋ง์žฅ๋‚œ์ด ์•„๋‹˜)

์ƒˆ๋กœ์šด ๋น„๋ฐ€๊ณผ configmaps๋ฅผ ๋กค์•„์›ƒํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด ๊ถŒ์žฅ ์‚ฌํ•ญ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹#22368: ์ƒˆ ๋น„๋ฐ€ ๋งŒ๋“ค๊ธฐ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋กค์•„์›ƒ์„ ์ œ์–ดํ•˜๊ณ  ๋กค๋ฐฑํ•˜๋Š” ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ๊ฐ์ฒด์˜ GC๋งŒ ์™„๋ฃŒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
https://github.com/kubernetes/community/pull/1163
https://github.com/kubernetes/community/pull/2287

๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ์กด API๋กœ ๋กค๋ง ์žฌ์‹œ์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ถŒ์žฅ ๋ฐฉ๋ฒ•์„ ๋ฌธ์„œํ™” ๋ฐ/๋˜๋Š” ์ง€์›(kustomize, kubectl ๋˜๋Š” kubectl ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ)ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

cc @๋ชจ๋…ธํด

์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ, CI/CD ๋˜๋Š” ํƒœ๊ทธ๋ฅผ ๋‹ค์ด์ œ์ŠคํŠธ๋กœ ํ•ด์„ํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ: #1697.

๋ถˆํ–‰ํ•œ ํฌ๋“œ๋ฅผ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€ descheduler(https://github.com/kubernetes-incubator/descheduler) ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ, ํ•ต์‹ฌ ๋ฉ”ํŠธ๋ฆญ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฉ”ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/rescheduler.md
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/rescheduling.md

๋˜ํ•œ ๋น„๋ฐ€ ๋ฐ configmap์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ณต์‹ ๋ฌธ์„œ: https://kubectl.docs.kubernetes.io/pages/app_management/secrets_and_configmaps.html

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

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. kubectl rollout restart ์ด(๊ฐ€) ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

๊ฑฐ์˜ 4๋…„๋งŒ์— ๋“ฃ๊ฒŒ ๋˜์–ด์„œ ๋„ˆ๋ฌด ์ข‹๋„ค์š”, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋ณ‘ํ•ฉ๋œ PR์€ ๋ฐฐํฌ๋งŒ ์ง€์›ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ์˜ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์€ ๋ฐ๋ชฌ ์„ธํŠธ์™€ ์ƒํƒœ ์ €์žฅ ์„ธํŠธ๋„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์„ ํ‘œํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

@apelisse sdk ๋˜๋Š” kubectl์„ ํ†ตํ•ด์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๊นŒ?

@e-nikolov SDK๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Go ํ”„๋กœ๊ทธ๋žจ์—์„œ kubernetes์™€ ๋Œ€ํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Go ํด๋ผ์ด์–ธํŠธ๋ฅผ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, kubectl์— ๊ตฌํ˜„๋œ (๋งค์šฐ ๊ฐ„๋‹จํ•œ) ๋กœ์ง์„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

OK, kubectl ๋กค์•„์›ƒ ์žฌ์‹œ์ž‘์ด ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

์–ด๋–ค kubectl ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์–ด๋–ค kubectl ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค 1.15

"์‹ ์†ํ•œ" ๋ฆด๋ฆฌ์Šค ์ฑ„๋„์˜ GKE ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ Kubernetes 1.16์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ์œผ๋ฉฐ ์ด์ œ kubectl rollout restart ์ž‘๋™์ด ์ค‘์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

kubectl ๋กค์•„์›ƒ ๋‹ค์‹œ ์‹œ์ž‘ ๋ฐฐํฌ myapp
์˜ค๋ฅ˜: ์•Œ ์ˆ˜ ์—†๋Š” ๋ช…๋ น "๋ฐฐํฌ myapp ๋‹ค์‹œ ์‹œ์ž‘"

@nikhiljindal ์€ ์‚ฌ์–‘์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋ฐฐํฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์–ผ๋งˆ ์ „์— ์งˆ๋ฌธํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์šฐ๋ฆฌ๋Š” ์ตœ์ ์ด ์•„๋‹Œ ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ๋Š” ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ML ๋ชจ๋ธ์ด Google Cloud Storage์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ํŒŒ์ผ์ด GCS์—์„œ ์—…๋ฐ์ดํŠธ๋˜๋ฉด GCS์—์„œ ๋ชจ๋ธ์„ ๊ฐ€์ ธ์˜ค๋Š” K8S ๋ฐฐํฌ๋ฅผ ๋กค์•„์›ƒ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋ชจ๋ธ ํŒŒ์ผ๋กœ ๋ฐฐํฌ๋ฅผ ์‰ฝ๊ฒŒ ๋กค๋ฐฑํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์— ๊ฐ์‚ฌํ•˜์ง€๋งŒ ๋ชจ๋ธ์„ ์•ฑ์— ์ตœ๋Œ€ํ•œ ๊ฐ€๊น๊ฒŒ ๊ฐ€์ ธ์˜ค๊ณ  ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ฑ„ํƒํ•œ ์ ˆ์ถฉ์•ˆ์ž…๋‹ˆ๋‹ค(์ผ๋ถ€๋Š” ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Œ).

์•ˆ๋…•ํ•˜์„ธ์š” @dimileeh

์ง€๊ธˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” kubectl์˜ ๋ฒ„์ „์„ ์•Œ๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ? ์ด์ „์— ์‚ฌ์šฉํ•œ ๋ฒ„์ „์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํšŒ๊ท€๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์ง€๋งŒ ๋™์‹œ์— ๊ธฐ๋Šฅ์ด ์™„์ „ํžˆ ์‚ฌ๋ผ์กŒ๋‹ค๋ฉด ๋†€๋ž์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

์•ˆ๋…•ํ•˜์„ธ์š” @apelisse๋‹˜ , ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

Google Cloud Terminal์—์„œ kubectl version ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Client Version: version.Info{Major:"1", Minor:"13+", GitVersion:"v1.13.11-dispatcher", GitCommit:"2e298c7e992f83f47af60cf4830b11c7370f6668", GitTreeState:"clean", BuildDate:"2019-09-19T22:20:12Z", GoVersion:"go1.11.13", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.0-gke.20", GitCommit:"d324c1db214acfc1ff3d543767f33feab3f4dcaa", GitTreeState:"clean", BuildDate:"2019-11-26T20:51:21Z", GoVersion:"go1.12.11b4", Compiler:"gc", Platform:"linux/amd64"}

gcloud components update ๋ฅผ ํ†ตํ•ด kubectl์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ด๋ฏธ ๋ชจ๋“  ์ œํ’ˆ์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ K8S ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ 1.15์—์„œ 1.16์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜๋Š” ๋™์•ˆ ๋‚ด kubectl ๋ฒ„์ „์€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Kubenetes ๋ฌธ์„œ 1.17, 1.16 ๋ฐ 1.15์—๋Š” kubectl rollout restart ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹น์‹ ์˜ ์†Œ์ค‘ํ•œ ๊ธฐ์—ฌ๊ฐ€ 1.16์—์„œ ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.


๋ชจ๋ธ ๋ฒ„์ „ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์ œ์•ˆ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋งค์ผ ๋ชจ๋ธ์„ ์žฌ๊ต์œกํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋„ˆ๋ฌด ๋งŽ์€ ๋ชจ๋ธ์„ ์ถ•์ ํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ์ƒ๋‹นํžˆ ๋ฌด๊ฒ์Šต๋‹ˆ๋‹ค). ๋ฌผ๋ก  ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „ ๋ฒ„์ „์„ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€๋Š” kubectl rollout restart ์— ์˜์กดํ•˜๊ณ  ๋ชจ๋ธ ๋ฒ„์ „ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. :)

์—ฌ๊ธฐ์—์„œ ๋ฌธ์„œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://v1-16.docs.kubernetes.io/docs/reference/generated/kubectl/kubectl-commands# -em-restart-em-

์•„, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๋ฅผ ์ฐพ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
https://v1-16.docs.kubernetes.io/docs/reference/kubectl/cheatsheet/

ํ•ด๋‹น ๋งํฌ์— ๋Œ€ํ•ด ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋˜๋ฉด ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

2019๋…„ 12์›” 19์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 12์‹œ 40๋ถ„ Dmitri Lihhatsov [email protected]
์ผ๋‹ค:

์•„, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๋ฅผ ์ฐพ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
https://v1-16.docs.kubernetes.io/docs/reference/kubectl/cheatsheet/

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubernetes/issues/13488?email_source=notifications&email_token=AAOXDLCDSTPYK6EGBQWSRADQZPL5BA5CNFSM4BOYZ5Z2YY3PNVWWK3TUL52HS4DFVEXG43NVMVBW6
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AAOXDLHWCU4T6NCSHOYZIELQZPL5BANCNFSM4BOYZ5ZQ
.

@dimileeh PTAL https://github.com/kubernetes/website/pull/18224 (์ด๊ฒƒ์ด ๋ณ‘ํ•ฉ๋˜๋ฉด ๊ด€๋ จ ๋ธŒ๋žœ์น˜๋ฅผ ์„ ํƒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค).

@dimileeh ๊ท€ํ•˜์˜ kubectl ๋ฒ„์ „์— ๋ฌด์—‡์ด ๋ฌธ์ œ์ธ์ง€ ํŒŒ์•…ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด์— ๋Œ€ํ•ด ์ž‘์—…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, configmap์„ ์—…๋ฐ์ดํŠธํ•œ ํ›„ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ๋ฐฐํฌํ•˜์ง€ ์•Š๊ณ  ML ๋ชจ๋ธ์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์‹  ๋ฒ„์ „์˜ @anuragtr

kubectl rollout restart deploy NAME

[1]์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ์ด์ œ ํ‘œ์ค€ kubectl์— ํฌํ•จ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค! ๊ฐ์‚ฌ ํ•ด์š”

[1] https://github.com/mauri870/kubectl-renew

์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์‹  ๋ฒ„์ „์˜ @anuragtr

kubectl rollout restart deploy NAME

@countrogue

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰