[Day 24] Oops!Helm - Can Not Upgrade Release
· 1 min read
Oops 希望大家都不要遇到
Helm 2 -> Helm 3 後 突然無法Upgrade Release
Why
在 helm 2 to helm 3遷移後,我們把k8s直接做升級了。
helm3是支援k8s 1.16版本的,所以在yaml檢查上會把 apps/v1beta2
做警告並不能使用
以下介紹幾個k8s異動類別
Deployment
無法使用的API版本:
- extensions/v1beta1
- apps/v1beta1
- apps/v1beta2
請升級API版本至apps/v1 !
sepc相關異動:
spec.rollbackTo
-> 移除spec.selector
-> 改為必填spec.progressDeadlineSeconds
預設改成:600secspec.revisionHistoryLimit
預設改成:10maxSurge
跟maxUnavailable
預設改成:25%
StatefulSet
sepc相關異動:
spec.selector
-> 改為必填spec.updateStrategy.type
現在預設改成RollingUpdate(apps/v1beta1預設為OnDelete)
ReplicaSet
sepc相關異動:
spec.selector
-> 改為必填
更多詳細說明 - https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/
如何避免
在k8s的新舊版本更新前,需要仔細去閱讀版本差異的說明!
在CD過程中遇到此狀況怎麼辦?
1.通知大家
2.給自己一個最快能處理的時間(ex:5分鐘)
3.趕緊看噴錯的原因debug,並回想最近CI/CD的流程or k8s有何異動
4.時間來不及怎麼辦
先改手動透過kubectl edit yaml更新 or 至Web UI介面都可以。
5.暫停該段的CD,並通知大家,先將CD的部分改為手動。
之後就趕緊找出原因吧。
心得
一開始你一定會慌,所以請先保持冷靜,請先通報夥伴們後,給個時間找問題,並提供其他CD方式(給夥伴一點安心), 並在修正後,檢討如何避免此狀況的發生!