微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

同时部署副本

如何解决同时部署副本

认设置下,由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是否还活着。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。