我有一个Kubernetes nginx部署,当我使用kubectl apply -f file.yaml重新部署它时,它有一个小的停机时间,大约3到5秒。
我使用readinessProbe告诉Kubernetes,在准备工作之前不应该将流量发送到该pod,但是一旦部署开始(即使initialDelaySeconds还没有完成,我也会收到502/503错误,这些错误会在准备工作后立即结束。
所以,我认为,在readinessProbe成功之前,Kubernetes不应该考虑这个pod,但这不是我所看到的。
如果我将initialDelaySeconds设置为10,我会得到大约10秒的中断。如果我将它减少到0,我仍然有一个小的停机时间,直到准备工作。
我正在使用的服务/部署的相关部分是
---
apiVersion: v1
kind: Service
metadata:
name: 'name'
spec:
ports:
- port: 80
protocol: TCP
name: http
selector:
project: 'project'
role: bastion
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: 'bastion'
spec:
replicas: 6
strategy:
rollingUpdate:
maxSurge: 6
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
spec:
containers:
- name: 'bastion'
image: 'my-image'
imagePullPolicy: Always
ports:
- containerPort: 80
lifecycle:
preStop:
exec:
command: ['sh', '-c', '/usr/sbin/nginx -s quit;']
livenessProbe:
httpGet:
path: /myendpoint
port: 80
periodSeconds: 60
initialDelaySeconds: 15
failureThreshold: 15
readinessProbe:
httpGet:
path: /myendpoint
port: 80
resources:
requests:
cpu: 5m
memory: 5Mi
limits:
cpu: 50m
memory: 50Mi
imagePullSecrets:
- name: 'imagesecrets'我是不是漏掉了什么?我可以尝试进行哪种更改来调试/解决此问题?
发布于 2021-03-30 22:03:41
你已经用过
periodSeconds: 60
initialDelaySeconds: 15
failureThreshold: 15用于livenessProbe,但是您还没有为就绪探测定义任何。我想这就是你看到错误的原因。也尝试为readinessProbe定义initialDelaySeconds
此外,要调试此过程,您可以描述一个新创建的pod。最后,您将看到正在发生的所有事件,包括就绪探测事件
https://stackoverflow.com/questions/66801095
复制相似问题