1 post tagged with "k8s"

View All Tags

μΏ λ²„λ„€ν‹°μŠ€μ—μ„œ 앱을 μž¬μ‹œμž‘ ν•˜λŠ” 방법

κ°œμš”#

μΏ λ²„λ„€ν‹°μŠ€λ₯Ό 처음 μ ‘ν•˜κ³  μ‚¬μš©ν•΄μ˜¨μ§€ 2년이 λ„˜μ–΄κ°€λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ²˜μŒμ— μΏ λ²„λ„€ν‹°μŠ€λ₯Ό λ‹€λ£¨κ²Œ 될 λ•Œ λ‚œκ°ν–ˆλ˜ λΆ€λΆ„ 쀑에 ν•˜λ‚˜κ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ–΄λ–»κ²Œ λ‚΄λ Έλ‹€κ°€ μ˜¬λ¦¬λŠ”μ§€μ˜€μ£ . κ·Έ 방법이 μ‹œκ°„μ΄ μ§€λ‚˜λ©΄μ„œ μ‘°κΈˆμ”© λ‚˜μ•„μ‘Œλ‹€κ³  μƒκ°ν•˜λŠ”λ°, κ·Έ 방법듀을 ν•œλ²ˆ μ­‰ μ†Œκ°œν•΄λ³ΌκΉŒ ν•©λ‹ˆλ‹€. (λ³Έλ¬Έμ—μ„œ λ§ν•˜λŠ” "μ„œλΉ„μŠ€"λŠ” μΏ λ²„λ„€ν‹°μŠ€μ— μ„œλΉ„μŠ€κ°€ μ•„λ‹ˆλΌ "μ• ν”Œλ¦¬μΌ€μ΄μ…˜" or "μ„œλ²„"λ₯Ό λ§ν•©λ‹ˆλ‹€.)

νŒŒλ“œ μ‚­μ œ#

kubectl delete pod <pod-name>

κ°€μž₯ 처음으둜 μ‚¬μš©ν–ˆλ˜ λ°©λ²•μž…λ‹ˆλ‹€. μΏ λ²„λ„€ν‹°μŠ€λŠ” λ””ν”Œλ‘œμ΄λ¨ΌνŠΈμ— μ„ μ–Έν•œ μƒνƒœλ‘œ ν˜„μž¬ μƒνƒœλ₯Ό λ§žμΆ”κΈ° μœ„ν•΄ νŒŒλ“œκ°€ μ‚­μ œλ˜λ©΄ μžλ™μœΌλ‘œ μƒˆλ‘œ λ„μ›Œμ€λ‹ˆλ‹€. 즉 μ‚­μ œλ§Œ ν•˜λ©΄ μ•Œμ•„μ„œ 쿠버가 λ‹€μ‹œ λ„μ›Œμ£ΌκΈ° λ•Œλ¬Έμ— μž¬μ‹œμž‘μ²˜λŸΌ λ™μž‘ν•©λ‹ˆλ‹€. μ•„, 이 방법은 deployment λ§€λ‹ˆνŽ˜μŠ€νŠΈλ‘œ μƒμ„±λœ νŒŒλ“œλ§Œ ν•΄λ‹Ήλ©λ‹ˆλ‹€. 이 방법을 μ­‰ μ¨μ˜€λ‹€κ°€ λ””ν”Œλ‘œμ΄λ¨ΌνŠΈ νŒŒλ“œκ°€ 볡수 개인 μ„œλΉ„μŠ€λ₯Ό μž¬μ‹œμž‘ ν•  κ²½μš°μ— νŒŒλ“œλ₯Ό ν•˜λ‚˜μ”© μ’…λ£Œμ‹œμΌœμ•Όν•˜λŠ” λ¬Έμ œμ μ„ λ§Œλ‚˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ¬Όλ‘  μΆ”ν›„ 라벨둜 같은 라벨인 νŒŒλ“œλ₯Ό λͺ¨λ‘ μ‚­μ œ ν•  수 μžˆλ‹€λŠ” 것을 μ•Œκ²Œλ˜μ—ˆμ§€λ§Œ κ·Έ λ•ŒλŠ” 이미 더 쒋은 방법을 μ•Œκ³  μžˆμ–΄μ„œ... μ„œλΉ„μŠ€κ°€ μ„±μž₯ν•˜λ©΄μ„œ νŠΉμ • μ„œλΉ„μŠ€μ— 볡수 κ°œμ— νŒŒλ“œκ°€ μƒμ„±λ˜λŠ” κ²½μš°κ°€ λ§Žμ•„μ§€λ©΄μ„œ 이 방법은 더 이상 쓰지 μ•Šκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ””ν”Œλ‘œμ΄λ¨ΌνŠΈ μ‚­μ œ ν›„ μž¬μƒμ„±#

kubectl delete -f <deployment-manifest>
kubectl apply -f <deployment-manifest>

κ²°λ‘ λΆ€ν„° λ§ν•˜λ©΄ λΉ„μΆ”μ²œν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. λ””ν”Œλ‘œμ΄λ¨ΌνŠΈλ₯Ό μ‚­μ œν•˜λ©΄μ„œ μžƒμ–΄λ²„λ¦¬λŠ” 정보듀이 λ§Žκ±°λ“ μš”. (rollout history 같은 정보듀) μ–΄μ°Œ 됐든 ν•΄λ‹Ή 방법을 μ‚¬μš©ν•˜λ©΄ 볡수 κ°œμ— νŒŒλ“œλ₯Ό 가진 μ„œλΉ„μŠ€λ„ λͺ¨λ‘ μž¬μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ””ν”Œλ‘œμ΄λ¨ΌνŠΈλ₯Ό μ§€μš°κ³  λ‹€μ‹œ λ§Œλ“œλŠ”λ° μ•ˆλ  μˆ˜κ°€ μ—†μ£ . νŒŒλ“œλ₯Ό μ‚­μ œν•˜λŠ” 방법에 λΉ„ν•΄ μž₯점이 또 ν•˜λ‚˜ μžˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ μ’…λ£Œ ν›„ μ‹œμž‘ν•˜λŠ” μ‹œμ μ„ μ‚¬μš©μžκ°€ 컨트둀 ν•  수 μžˆλ‹€λŠ” 것이죠. 즉 μœ„μ—μ„œ μ†Œκ°œν•œ νŒŒλ“œ μ‚­μ œκ°€ μ’…λ£Œ ν›„ λ°”λ‘œ μ‹œμž‘ν•˜λŠ” "restart" μ΄μ˜€λ‹€λ©΄, λ””ν”Œλ‘œμ΄λ¨ΌνŠΈ μ‚­μ œ ν›„ 생성은 "stop", "start" 둜 이벀트 μ‹œμ μ΄ λ‚˜λˆ μ§€κ²Œ λ©λ‹ˆλ‹€. μš΄μ˜ν•˜λ‹€λ³΄λ©΄ 잠깐 λ‚΄λ Έλ‹€κ°€ 일정 μ‹œκ°„ ν›„ λ„μ›Œμ•Ό ν•˜λŠ” κ²½μš°κ°€ 생기기 마련이죠. 그럼 κ·Έ λ•Œ μ΄λ ‡κ²Œ ν•΄μ•Όν•˜λŠ”λ° μ™œ λΉ„μΆ”μ²œμ΄λƒκ΅¬μš”? λ°”λ‘œ λ‹€μŒμ— μ†Œκ°œ μ‹œμΌœλ“œλ¦΄ 방법이 더 μ’‹κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

λ””ν”Œλ‘œμ΄λ¨ΌνŠΈμ˜ Scale 을 λ³€κ²½#

kubectl scale deployment <deployment-name> --replicas 0
kubectl scale deployment <deployment-name> --replicas <n>

μ„œλΉ„μŠ€ μž¬μ‹œμž‘μ„ μœ„ν•΄μ„œ μƒλ‹Ήνžˆ μ˜€λž«λ™μ•ˆ 써왔고 ν˜„μž¬λ„ μ“°κ³  μžˆλŠ” λ°©λ²•μž…λ‹ˆλ‹€. λ‹€λ§Œ μ§€κΈˆμ€ "stop", "start" λ°©μ‹μœΌλ‘œ μ’…λ£Œ ν›„ μ‹œμž‘ μ‹œμ μ„ μ œκ°€ 컨트둀 ν•˜κ³  싢을 λ•Œλ§Œ μ‚¬μš©ν•©λ‹ˆλ‹€. μ¦‰μ‹œ μž¬μ‹œμž‘μΌ κ²½μš°μ—λŠ” λ§ˆμ§€λ§‰μœΌλ‘œ μ†Œκ°œν•  방법을 μ‚¬μš©ν•˜μ£ .

Rollout restart λͺ…λ Ήμ–΄ μ‚¬μš©#

kubectl rollout restart deployment <deployment-name>

μ €μ˜ μ΅œμ’… μ’…μ°©μ μž…λ‹ˆλ‹€. 사싀 rollout λͺ…λ Ήμ–΄λ₯Ό μΏ λ²„λ„€ν‹°μŠ€λ₯Ό κ½€ μ˜€λž«λ™μ•ˆ μ“°κ³ λ‚˜μ„œ μ•Œκ²Œ λ˜μ„œ... μ—­μ‹œ 지식이 λΆ€μ‘±ν•˜λ©΄ λͺΈμ΄ κ³ μƒν•˜λŠ” 법이죠. μ € λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ νŒŒλ“œλ₯Ό μž¬μ‹œμž‘ν•΄μ€λ‹ˆλ‹€. λ‹€λ§Œ μœ„μ— λ°©λ²•μ²˜λŸΌ λ‹¨μˆœνžˆ νŒŒλ“œλ₯Ό μ‚­μ œν•˜κ³  μ‹œμž‘ν•΄μ£ΌλŠ” κ²ƒμœΌλ‘œ λλ‚˜λŠ”κ²Œ μ•„λ‹™λ‹ˆλ‹€. μ—¬κΈ°μ„œ μžμ„Ένžˆ λ‹€λ£¨μ§€λŠ” μ•Šκ² μ§€λ§Œ μ„œλΉ„μŠ€μ— replica μˆ˜κ°€ λŠ˜μ–΄λ‚˜κ²Œ 되면 배포 μ „λž΅μ— λŒ€ν•΄μ„œ 고민을 ν•˜κ²Œ 되고 λ””ν”Œλ‘œμ΄λ¨ΌνŠΈμ— μ„€μ •ν•˜λŠ” μ•„λž˜ 섀정을 ν•˜κ²Œ λ ν…λ°μš”.

spec:
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate

이 μ „λž΅μ— λ§žμΆ°μ„œ μž¬μ‹œμž‘μ„ ν•΄μ€λ‹ˆλ‹€. κ°„λ‹¨ν•˜κ²Œ μ„€λͺ…ν•˜λ©΄ 이 방법 μœ„μ—μ„œ μ–ΈκΈ‰ν•œ 방법듀은 μˆœκ°„μ μœΌλ‘œ λͺ¨λ“  νŒŒλ“œλ₯Ό μž¬μ‹œμž‘ν•˜κ²Œ λ˜μ§€λ§Œ, rollout restart λŠ” μ‚¬μš©μžκ°€ μ„€μ •ν•œλŒ€λ‘œ 순차적으둜 νŒŒλ“œλ₯Ό μž¬μ‹œμž‘ν•˜κ²Œ λ˜λŠ” 것이죠. 무쀑단 μž¬μ‹œμž‘μ„ μœ„ν•΄μ„œλΌλ©΄ ν•„μˆ˜μ μ΄λΌκ³  λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

마치며#

μ§€κΈˆκΉŒμ§€ μ„œλΉ„μŠ€λ₯Ό μž¬μ‹œμž‘ν•˜λŠ” 방법듀을 μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 사싀 rollout restart 을 μ΄ˆκΈ°λΆ€ν„° μ•Œμ•˜μœΌλ©΄ μ’‹μ•˜κ² λ‹€ μ‹Άμ–΄μ„œ λ‹€λ₯Έ λΆ„λ“€μ—κ²Œ μ†Œκ°œν•˜κ³ μž μ“΄ κΈ€μ΄μ§€λ§Œ, μ œκ°€ μ§€κΈˆκΉŒμ§€ μ‚¬μš©ν–ˆλ˜ 방법듀을 λ˜μƒˆκ²¨λ³΄λ©΄μ„œ 각 방법듀에 μž₯단점도 μ •λ¦¬ν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€. ν˜Ήμ‹œ 또 λ‹€λ₯Έ 방법이 μžˆμ„κΉŒμš”? μ—¬λŸ¬λΆ„λ“€μ€ μ–΄λ–€ 방법을 μ‚¬μš©ν•˜μ‹œλ‚˜μš”? ν˜„μž¬ λŒ“κΈ€ κΈ°λŠ₯은 μ—†μ§€λ§Œ... μ–΄λ–€ λ°©λ²•μœΌλ‘œλ“  μ˜κ²¬μ£Όμ„Έμš” πŸ˜‹