StatefulSet без поддержки сервиса и отката yaml

Мне нужно развернуть модуль с поддержкой постоянных требований к объему, и в то же время мне также нужна поддержка модификации модуля (редактирование любой конфигурации), а также откат к предыдущей версии предыдущей версии образа контейнера.

Я просмотрел документы, но везде они включали сервис в файл statefulset.yaml.

Мне не нужен здесь сервис, он должен просто развернуть модуль statefulset с поддержкой отката. Можете ли вы помочь мне предоставить любой образец файла YAML с полным набором состояний?

apiVersion: v1
kind: Service
metadata:
  name: redis
  namespace: default
......................
.................
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis
spec:

введите здесь описание изображения


person Jayashree Madanala    schedule 20.07.2020    source источник
comment
Услуга IS обязательна, как этого избежать, мне не нужна услуга   -  person Jayashree Madanala    schedule 20.07.2020


Ответы (3)


На самом деле, это одно из ограничений StatefulSet. безголовый сервис. ✅

В настоящее время для StatefulSets требуется, чтобы служба Headless Service отвечала за сетевую идентификацию модулей. Вы несете ответственность за создание этой Услуги.

Кроме того, если вы хотите, чтобы другие модули имели доступ к вашему экземпляру Redis из других модулей в вашем кластере Kubernetes или откуда-то за пределами кластера, это необходимо.

Если вы не хотите использовать службы, вы можете переключить ???? свой StatefulSet на обычное развертывание .

✌️

person Rico    schedule 20.07.2020

Сервис нужен только тогда, когда вы хотите выставить свое приложение. Без службы вы можете получить доступ к своему statefulSet только через IP в пределах кластера. Дополнительную информацию можно найти в официальной документации.

Ваши требования к PVC, редактированию и откату являются встроенными функциями statefulset (хотя вы можете редактировать только несколько полей statefulset), так что все готово.

person Ken Chen    schedule 20.07.2020
comment
Я не хочу раскрывать свое приложение. Мне не нужна служба, она должна создать модуль с изображением контейнера. Пожалуйста, найдите прикрепленное изображение для этого. Когда я пытаюсь его создать, он говорит, что имя службы является обязательным, C:\kubectl›kubectl apply -f statefulset.yaml error: ошибка проверки statefulset.yaml: ошибка проверки данных: ValidationError(StatefulSet.spec ): отсутствует обязательное поле serviceName в io.k8s.api.apps.v1.StatefulSetSpec; если вы решите игнорировать эти ошибки, отключите проверку с --validate=false - person Jayashree Madanala; 20.07.2020
comment
Это не обязательно должно соответствовать вашей реальной службе. Вы можете ввести для него случайное имя службы. - person Ken Chen; 20.07.2020

spec.serviceName в statefulset требуется в соответствии с API. Следовательно, вы должны иметь это.

kubectl explain statefulset.spec.serviceName
KIND:     StatefulSet
VERSION:  apps/v1

FIELD:    serviceName <string>

DESCRIPTION:
     serviceName is the name of the service that governs this StatefulSet. This
     service must exist before the StatefulSet, and is responsible for the
     network identity of the set. Pods get DNS/hostnames that follow the
     pattern: pod-specific-string.serviceName.default.svc.cluster.local where
     "pod-specific-string" is managed by the StatefulSet controller.

Как видно выше, эта служба должна существовать до StatefulSet.

person Arghya Sadhu    schedule 20.07.2020