延迟kubernetes pod的创建以实现零停机时间

时间:2018-10-29 18:26:30

标签: kubernetes kubectl kubernetes-deployment

我正在尝试在Kubernetes中实施部署的滚动更新。我关注了许多文章,说停机时间为零,但是当我连续运行curl时。我的几个请求都失败了,然后又没有回复。以下是部署文件。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-container
        image: my-image
        imagePullPolicy: Always
        ports:
          - containerPort: 80
            protocol: TCP
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 5
          successThreshold: 1

我做的下一件事是

  

MinReadySeconds:120

这可以解决此问题,但它不是最佳解决方案,因为我们希望在下一个容器开始服务请求并杀死旧容器时立即切换到下一个容器。我有两个问题-

  1. 当新的和旧的豆荚都出现时,会不会有条件 正在运行并且都开始为流量提供服务?那也不会 也是理想的。由于我们只希望一个Pod在一个 时间。
  2. Kubernetes是否提供其他任何现成的解决方案 进行滚动部署?

1 个答案:

答案 0 :(得分:0)

尝试一下。这应该为您工作。尝试更新您的图片。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-container
        image: nginx
        imagePullPolicy: Always
        ports:
          - containerPort: 80
            protocol: TCP
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 5
          successThreshold: 1

为使您更好地理解,请检查此link