同时部署副本

问题描述

认设置下,由script-src www.gstatic.com;个服务副本组成的部署将在部署期间遵循以下顺序:

启动容器n->等待容器1准备就绪
窗格1准备就绪后,启动窗格1->等待窗格2准备就绪
...
容器2准备就绪后,启动容器n-1->等待容器n准备就绪

在我的应用程序中,该服务需要几分钟才能接受流量(就绪)。因此,我想配置我的部署以遵循:
启动pod n->启动pod 1 ...->启动pod 2
启动所有Pod之后,请等待n1的Pod准备就绪。

n

我该如何配置?

解决方法

您可以尝试在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个新容器。

,

一种方法是删除readinessProbe,仅使用livenessProbe,它的initialDelaySeconds适合您的用例。

如果使用readinessProbe,则根据设计,只有在第一个副本准备就绪时,部署才会移动到下一个副本。

因此,通过使用livenessProbe,它们都将立即启动,但是您可以利用initialDelaySeconds来确定何时开始检查pod是否还活着。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...