我正在运行此命令:
kubectl set image deployment/www-deployment VERSION_www=newImage
工作正常。但是有一个10秒的窗口,网站是503,我是一个完美主义者。
如何在切换入口之前配置kubernetes等待图像可用?
我从这里使用nginx入口控制器:
gcr.io/google_containers/nginx-ingress-controller:0.8.3
这是网络服务器的yaml:
# Service and Deployment
apiVersion: v1
kind: Service
metadata:
name: www-service
spec:
ports:
- name: http-port
port: 80
protocol: TCP
targetPort: http-port
selector:
app: www
sessionAffinity: None
type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: www-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: www
spec:
containers:
- image: myapp/www
imagePullPolicy: Always
livenessProbe:
httpGet:
path: /healthz
port: http-port
name: www
ports:
- containerPort: 80
name: http-port
protocol: TCP
resources:
requests:
cpu: 100m
memory: 100Mi
volumeMounts:
- mountPath: /etc/env-volume
name: config
readOnly: true
imagePullSecrets:
- name: cloud.docker.com-pull
volumes:
- name: config
secret:
defaultMode: 420
items:
- key: www.sh
mode: 256
path: env.sh
secretName: env-secret
Docker镜像基于node.js server image。
/healthz
是网络服务器中的一个文件,它返回ok
我认为活动探测器会在切换到新版本之前确保服务器已启动并准备就绪。
提前致谢!
答案 0 :(得分:2)
在Pod lifecycle内定义:
初始延迟之前的默认活动状态是成功。
为确保您不会遇到问题,请更好地为您的Pod配置ReadinessProbe
,并考虑为部署配置.spec.minReadySeconds
。
您可以在Deployment文档
中找到详细信息