в чем разница между различным значением стратегии тега в файле yaml k8s - PullRequest
0 голосов
/ 05 июля 2018

я тестирую с двумя файлами yaml, которые отличаются только в стратегии тегов

первый:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    test.k8s: test
  name: test
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        test.k8s: test
    spec:
      containers:
      - name: test
        image: alpine3.6
        imagePullPolicy: IfNotPresent
...

второй:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    test.k8s: test
  name: test
spec:
  replicas: 1
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  template:
    metadata:
      labels:
        test.k8s: test
    spec:
      containers:
      - name: test
        image: alpine3.6
        imagePullPolicy: IfNotPresent
...

затем я обновляю развертывание с помощью kubectl patch и команды kubectl replace. кажется, только новое время начала стручка отличается. и старый модуль будет завершен в конце при двух условиях, когда запуск нового модуля завершился неудачей с отсутствующим изображением.

кто-нибудь знает об этом?

большое спасибо ~

1 Ответ

0 голосов
/ 05 июля 2018

В основном, тег .spec.strategy указывает, как механизм кластера заменяет старые блоки новыми.

В вашем случае, тег .spec.strategy.type==Recreate указывает механизму кластера завершить (уничтожить) все существующие модули перед созданием новых.

Что касается второго примера, тег .spec.strategy.type==RollingUpdate описывает подход к обновлению службы без временного простоя, поскольку он касается обновления одного модуля за раз во избежание недоступности службы.

В вашем примере есть два параметра, которые определяют стратегию RollingUpdate:

.spec.strategy.rollingUpdate.maxUnavailable - указывает максимальное количество модулей, которое может быть недоступно в процессе обновления.

.spec.strategy.rollingUpdate.maxSurge - указывает максимальное количество модулей, которое может быть создано за желаемое количество модулей.

Есть несколько дополнительных параметров, которые вы можете использовать в RollingUpdate, для получения дополнительной информации см. Документация .

С помощью команды kubectl replace вы воссоздаете стратегию и перестраиваете объект, но не обновляете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...