在默认设置下,由script-src www.gstatic.com;
个服务副本组成的部署将在部署期间遵循以下顺序:
启动容器n
->等待容器1
准备就绪
窗格1
准备就绪后,启动窗格1
->等待窗格2
准备就绪
...
容器2
准备就绪后,启动容器n-1
->等待容器n
准备就绪
在我的应用程序中,该服务需要几分钟才能接受流量(就绪)。因此,我想配置我的部署以遵循:
启动pod n
->启动pod 1
...->启动pod 2
启动所有Pod之后,请等待n
至1
的Pod准备就绪。
n
我该如何配置?
答案 0 :(得分:2)
您可以尝试在Deployment.yml中添加 .spec.strategy.rollingUpdate.maxSurge 字段(选中here)
我认为您需要设置 maxSurge:n
在您的示例中:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-webservice
spec:
replicas: n
strategy:
rollingUpdate:
maxSurge: n
selector:
matchLabels:
app.kubernetes.io/name: my-webservice
template:
metadata:
labels:
app: my-webservice
app.kubernetes.io/name: my-webservice
spec:
securityContext:
runAsNonRoot: true
containers:
- name: my-webservice
image: "my.docker.repo/my-webservice:latest"
ports:
- containerPort: 5000
readinessProbe:
httpGet:
path: /ready
port: 5000
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 360
因此,当您应用更新时,将同时创建n个新容器。
答案 1 :(得分:1)
一种方法是删除readinessProbe,仅使用livenessProbe,它的initialDelaySeconds适合您的用例。
如果使用readinessProbe,则根据设计,只有在第一个副本准备就绪时,部署才会移动到下一个副本。
因此,通过使用livenessProbe,它们都将立即启动,但是您可以利用initialDelaySeconds来确定何时开始检查pod是否还活着。