导语:因为线上环境集群规模较小 项目更新的时候 没有多的node可供deopyment先生成一个pod。因此采用其他2种办法更新。
1 当POD数量与node数量相同时,可使用先减小deployment规模的方法,先减小规模,再发布,待发布成功后再恢复deployment规模:
kubectl scale deployment prod-myweb --replicas=2 -n prod
缩容的时候 可以通过命令获取一下deployment中replicas的值 并对值进行-1的操作
kubectl get deployment -n namespace deploymantname -o jsonpath='{.spec.replicas}'
重启的话也是如此
kubectl scale deployment prod-myweb --replicas=2 -n prod
kubectl rollout restart deployment prod-myweb -n prod
kubectl scale deployment prod-myweb --replicas=3 -n prod
2 使用rollingUpdate参数
设置maxSurge: 0
-
maxSurge:
- 升级过程中最多可以比原先设置多出的POD数量
- 例如:maxSurage=1,replicas=5,则表示Kubernetes会先启动1一个新的Pod后才删掉一个旧的POD,整个升级过程中最多会有5+1个POD。
-
maxUnavaible:
-
升级过程中最多有多少个POD处于无法提供服务的状态
-
当maxSurge不为0时,该值也不能为0
-
例如:maxUnavaible=1,则表示Kubernetes整个升级过程中最多会有1个POD处于无法服务的状态。
-
apiVersion: apps/v1
kind: Deployment
metadata:
name: prod-myweb
namespace: prod
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
selector:
matchLabels:
app: prod-myweb
replicas: 3
template:
metadata:
labels:
app: prod-myweb
spec:
containers:
- name: prod-myweb
image: nginx
ports:
- name: test-port
containerPort: 80
hostPort: 8888