kubectl rolling-update
๋ ์ ๋ณต์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ง์ ์ผ๋ก ๋ฐฐํฌํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ์กด ๋ณต์ ์ปจํธ๋กค๋ฌ๊ฐ ์๊ณ ๊ด๋ฆฌํ๋ ๋ชจ๋ ํฌ๋์ ๋กค๋ง ์ฌ์์์ ์ํํ๋ ค๋ ๊ฒฝ์ฐ ์ ์ด๋ฆ๊ณผ ๋์ผํ ์ฌ์์ผ๋ก RC์ ๋ฌด์๋ ์
๋ฐ์ดํธ๋ฅผ ์ํํด์ผ ํฉ๋๋ค. RC๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ RC ์ฌ์์ ์ ๊ณตํ ํ์ ์์ด ๋กค๋ง ์ฌ์์์ ์ํํ ์ ์์ผ๋ฉด ์ ์ฉํ ๊ฒ์ด๋ฏ๋ก kubectl์ ์ก์ธ์คํ ์ ์๋ ์ฌ๋์ ๋๊ตฌ๋ ์ฌ์์ด ๋ก์ปฌ์ ์๋์ง ๊ฑฑ์ ํ์ง ์๊ณ ์ฝ๊ฒ ๋ค์ ์์ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ช ๊ฐ์ง ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์๋ํ ์ ์์ต๋๋ค.
kubectl rolling-restart
์ RC ์ด๋ฆ์ ์ฌ์ฉํ๊ณ RC๊ฐ ์ ์ดํ๋ โโ๋ชจ๋ ํฌ๋๋ฅผ ์ ์ง์ ์ผ๋ก ์ญ์ ํ๊ณ RC๊ฐ ๋ค์ ์์ฑํ ์ ์๋๋ก ํฉ๋๋ค.kubectl rolling-update
์ด์ RC๋ง ์ง์ ํ ์ ์๋ ํ๋๊ทธ์ ํจ๊ป 1 ๋๋ 2์ ๋
ผ๋ฆฌ๋ฅผ ๋ฐ๋ฆ
๋๋ค.kubectl rolling-update
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ RC๋ง ์ง์ ํ ์ ์์ผ๋ฉฐ ์ด์ RC๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ RC๋ฅผ ์๋ ์์ฑํ๊ณ ์ผ๋ฐ ๋กค๋ง ์
๋ฐ์ดํธ ๋
ผ๋ฆฌ๋ฅผ ์งํํฉ๋๋ค.์์ ๋ชจ๋ ์ต์ ์๋ ๋ชจ๋ ํฌ๋๋ฅผ ์ ๊ฑฐํ์ง ์๊ณ ๋ค์ ์์์ด ์ํ๋๋์ง ํ์ธํ๊ธฐ ์ํ ์ค๋น ์ํ ํ์ธ๊ณผ ํจ๊ป ์ต๊ทผ์ ๋์ ๋ MaxSurge ๋ฐ MaxUnavailable ์ต์ (#11942 ์ฐธ์กฐ)์ด ํ์ํฉ๋๋ค.
@nikhiljindal @kubernetes/kubectl
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์ ์๋น์๋ฅผ ๋ค์ ์์ํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค.
์, ๋ด๋ถ ๋ณ๊ฒฝ ์์ด ํฌ๋/์ปจํ
์ด๋๋ฅผ ๋ค์ ์์ํ๋ ค๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค...
๊ตฌ์ฑ, ์บ์, ์ธ๋ถ ์๋น์ค ์ฌ์ ์ ๋ฑ. ์ด ๊ธฐ๋ฅ์ด ๊ฐ๋ฐ๋๊ธฐ๋ฅผ ์ง์ฌ์ผ๋ก ๋ฐ๋๋๋ค.
์์ ํด๊ฒฐ ๋ฐฉ๋ฒ(๋ฐฐํฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ด๋ฏธ์ง/ํฌ๋๋ฅผ ์ค์ ๋ก ๋ณ๊ฒฝํ์ง ์๊ณ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ต๋๋ค):
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์ผ๋ก ์กฐ์ , ๋กค๋ง ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๊ธฐ๋ฅ์ ์๋ฎฌ๋ ์ด์ ํ๋ ๋กค๋ง ์ ๋ฐ์ดํธ ์ ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ ํ ์๋ก์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ง๋ค๊ณ ์์ต๋๋ค. ์ด๊ฒ์ด ์ฌ์ ํ ํด๋ฌ์คํฐ ๊ด๋ฆฌ์๊ฐ ํธ๋ฆญ ์์ด ์ ์งํ๊ฒ ํด์๋ ์ ๋๋ ์ผ์ ๋๊น?
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 ์ฐ๋ฆฌ ์์คํ ์ ์ฌ์ฉ
๋น๋ฐ ์ ๋ฐ์ดํธ - ์ ์ ๊ฐ์ด kubernetes๋ฅผ ํตํด ์์ฒด ์ถ์ํ๋ฅผ ๊ตฌ์ถํ ํ์ฌ๊ฐ ๋ง์ด ์๋ค๋ ๊ฒ์ ์๊ณ ๊ณ์ค ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ kubernetes๋ฅผ ํตํด ์ค์ผ์คํธ๋ ์ด์ ๋๋ ์์ฒด ์ปจํ ์ด๋ ๊ด๋ฆฌ ์์คํ ์ ๋ณด์ ํ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ํฌ๊ตฌ ๋น๋ฐ ์ ์ ๋๊ธ ๋ฑ์ ํด๋น๋์ง ์์ต๋๋ค. dev ํด๋ฌ์คํฐ์ ConfigMaps์์ ๋น๋ฐ์ ๋ค์ ๋ก๋ํ๋ ค๋ฉด ํฌ๋๋ฅผ ๊ฐ์ ์ข ๋ฃํด์ผ ํ๋ฏ๋ก ๋ช ์ด์ ๊ฐ๋ ์ค์ง ์๊ฐ์ด ๋ฐ์ํฉ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ์์ด์๋ ์ ๋ฉ๋๋ค. ์ด๊ฒ์ ๋กค๋ง ์ ๋ฐ์ดํธ์ ์ค์ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค.
์ด๊ฒ์ ์ฝ๊ฐ ๋ณต์กํ์ง๋ง ๋๊ตฐ๊ฐ๊ฐ ์ ์ํ ๊ฒ์ฒ๋ผ ์ ๋ฐ์ ์ธ ๋ฒ์๋ ๋น์ ์์ ์ธ ๋์์ ์์ ํ๋ ๊ฒ์ ๋๋ค. 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์ผ๋ก ์กฐ์ , ๊ธฐ๋ฅ์ ์๋ฎฌ๋ ์ด์ ํ๊ธฐ ์ํ ๋กค๋ง ์ ๋ฐ์ดํธ ์ ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ ํ ์๋ก์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ง๋ค๊ณ ์์ต๋๋ค. ๋กค๋ง ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. ์ด๊ฒ์ด ์ฌ์ ํ ํด๋ฌ์คํฐ ๊ด๋ฆฌ์๊ฐ ํธ๋ฆญ ์์ด ์ ์งํ๊ฒ ํด์๋ ์ ๋๋ ์ผ์ ๋๊น?
๋กค๋ง ์ ๋ฐ์ดํธ๋ ์์ง ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ๋งค์ฐ ์ธ๊ธฐ ์๋ ํ๋์ ๋๋ค ๐
์ฅ๊ธฐ ๋ฌธ์ (์์ ์ ๋ํ ๋ฉ๋ชจ)
์๋ฅผ ๋ค์ด 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์ ํฌํจ๋์ด ๊ธฐ์ฉ๋๋ค! ๊ฐ์ฌ ํด์
์คํํ ์ ์๋ ์ต์ ๋ฒ์ ์ @anuragtr
kubectl rollout restart deploy NAME
@countrogue
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๊ฒ ์ต๋๋ค.
kubectl rollout restart
์ด(๊ฐ) ๋ณํฉ๋์์ต๋๋ค!