k8s滚动升级_k8s deployment 滚动更新
正常來說 k8s 的 deployment 在更新時默認就會進行滾動的升級
但是實際操作中會發現,滾動更新過程中應用還是會“掛掉”一會兒,大概會有幾秒鐘網頁訪問 502。
究其原因應該是容器啟動后,到應用真正工作起來,中間會有一段時間,比如在 runserver 前需要進行一下 migrate 等操作,這段時間應用是無法正常訪問的,但 k8s 卻認為應用是正常就緒狀態。
解決方式是設置一個合理的 minReadySeconds 值,這個值默認是 0
參考如下:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: webapp
labels:
app: webapp
spec:
replicas: 1
minReadySeconds: 10 # 這里需要估一個比較合理的值,從容器啟動到應用正常提供服務
strategy: # k8s 默認的 strategy 就是 RollingUpdate, 這里寫明出來可以調節細節參數
type: RollingUpdate
rollingUpdate:
maxSurge: 1 # 更新時允許最大激增的容器數,默認 replicas 的 1/4 向上取整
maxUnavailable: 0 # 更新時允許最大 unavailable 容器數,默認 replicas 的 1/4 向下取整
selector:
matchLabels:
app: webapp
template:
metadata:
name: webapp
labels:
app: webapp
spec:
containers:
- name: heyshop-app-combo-backend
image: django-app-image:latest
imagePullPolicy: Always
command:
- bash
args:
- "-c"
- "python manage.py migrate; gunicorn run.wsgi; "
總結
以上是生活随笔為你收集整理的k8s滚动升级_k8s deployment 滚动更新的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7如何系统恢复
- 下一篇: vscode 快速调到定义处_vim技巧