Можно ли настроить службы Kubernetes, развернутые с помощью helm, на перезапуск при удалении вручную с помощью kubectl?

Я пытаюсь понять природу развертывания руля в целом. У меня есть развертывание, управляемое helm, которое вызывает службу jdbc с использованием файла service.yaml.

После развертывания я ясно вижу, что служба работает, в соответствии с файлом service.yaml.

Если я вручную удаляю службу, служба остается мертвой.

Мой вопрос: если я вручную удалю службу с помощью kubectl delete, предполагается ли, что служба будет перезапущена, поскольку развертывание осуществляется под управлением Helm? Есть ли возможность настроить перезапуск службы даже при ручном удалении? Это стандартное и ожидаемое поведение.

Я перепробовал множество вариантов и просмотрел документы, я не могу найти spec / option / config, который вызывает перезапуск служб при удалении, в отличие от модулей, у которых есть параметр «Всегда перезапускать».

apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.exampleJDBCService.name }}
  namespace: {{ .Release.Namespace }}
spec:
  type: {{ .Values.exampleJDBCService.type }}
  sessionAffinity: "{{ .Values.sessionAffinity.type }}"
  {{- if (eq .Values.sessionAffinity.type "ClientIP") }}
  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: {{ .Values.sessionAffinity.timeoutSeconds }}
  {{- end }}
  selector:
    {{ template "spark-example.fullname" . }}: "true"
  ports:
    - protocol: TCP
      port: {{ .Values.exampleJDBCService.clusterNodePort }}
      targetPort: {{ .Values.exampleJDBCService.targetPort }}
      {{- if (and (eq .Values.exampleJDBCService.type "NodePort") (not (empty .Values.exampleJDBCService.clusterNodePort))) }}
      nodePort: {{ .Values.exampleJDBCService.clusterNodePort }}
      {{- end }}

person ashokashwin93    schedule 01.04.2019    source источник


Ответы (2)


Вы немного перемешиваете.

RestartAlways, который вы определяете для модуля, конфигурирует, что он всегда будет перезапускаться после завершения или сбоя.

Причина, по которой вы видите, что модуль воссоздается при удалении, заключается в том, что у него есть объект развертывания, который его создал, и он желает всегда иметь необходимое количество модулей.

Helm не взаимодействует с удалением объектов в кластере, как только он создал свои объекты, он больше не взаимодействует с ними до следующей команды helm.

Надеюсь, это поможет вам лучше понять термины.

person Shai Katz    schedule 01.04.2019

Удаленные / поврежденные объекты ресурсов Kubernetes (в вашем случае Service) не могут быть "перезапущены" автоматически с помощью tiller, но, к счастью, их можно восстановить до желаемого состояния конфигурации с помощью следующей команды helm:

helm upgrade <your-release-name> <repo-name>/<chart-name> --reuse-values --force

e.g.

helm upgrade my-ingress stable/nginx-ingress --reuse-values --force

Вы также можете использовать:

  helm history <release_name>

  helm rollback --force [RELEASE] [REVISION]

--force аргумент в обоих случаях принудительно обновляет ресурс через удаление / повторное создание, если необходимо

person Nepomucen    schedule 01.04.2019
comment
Я пробовал вышеуказанное, похоже, работает. Оба приведенных выше ответа сработали для меня. - person ashokashwin93; 02.04.2019