Задержка создания модуля kubernetes для нулевого времени простоя - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь внедрить обновление Rolling для развертываний в 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. Может ли быть условие, когда оба стручка - новый и старый работает и оба начинают обслуживать трафик? Это также не будет идеал также. Поскольку мы хотим, чтобы только один модуль обслуживал запрос на время.
  2. Существует ли какое-либо другое готовое решение, которое Kubernetes предлагает сделать скользящее развертывание?

1 Ответ

0 голосов
/ 29 октября 2018

Попробуй это. это должно работать для вас. попробуйте обновить ваше изображение.

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

Для вашего лучшего понимания проверьте эту ссылку

...