k8s滚动升级_k8s deployment 滚动更新
正常來(lái)說(shuō) k8s 的 deployment 在更新時(shí)默認(rèn)就會(huì)進(jìn)行滾動(dòng)的升級(jí)
但是實(shí)際操作中會(huì)發(fā)現(xiàn),滾動(dòng)更新過(guò)程中應(yīng)用還是會(huì)“掛掉”一會(huì)兒,大概會(huì)有幾秒鐘網(wǎng)頁(yè)訪問(wèn) 502。
究其原因應(yīng)該是容器啟動(dòng)后,到應(yīng)用真正工作起來(lái),中間會(huì)有一段時(shí)間,比如在 runserver 前需要進(jìn)行一下 migrate 等操作,這段時(shí)間應(yīng)用是無(wú)法正常訪問(wèn)的,但 k8s 卻認(rèn)為應(yīng)用是正常就緒狀態(tài)。
解決方式是設(shè)置一個(gè)合理的 minReadySeconds 值,這個(gè)值默認(rèn)是 0
參考如下:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: webapp
labels:
app: webapp
spec:
replicas: 1
minReadySeconds: 10 # 這里需要估一個(gè)比較合理的值,從容器啟動(dòng)到應(yīng)用正常提供服務(wù)
strategy: # k8s 默認(rèn)的 strategy 就是 RollingUpdate, 這里寫明出來(lái)可以調(diào)節(jié)細(xì)節(jié)參數(shù)
type: RollingUpdate
rollingUpdate:
maxSurge: 1 # 更新時(shí)允許最大激增的容器數(shù),默認(rèn) replicas 的 1/4 向上取整
maxUnavailable: 0 # 更新時(shí)允許最大 unavailable 容器數(shù),默認(rèn) 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; "
總結(jié)
以上是生活随笔為你收集整理的k8s滚动升级_k8s deployment 滚动更新的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: win7如何系统恢复
- 下一篇: Excel表格中的切片器功能怎么使用