Данные постоянного тома Kubernetes повреждены после нескольких удалений подов

Я борюсь с простым развертыванием одной реплики официального образа магазина событий на Кластер Kubernetes. Я использую постоянный том для хранения данных.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-eventstore
spec:
  strategy:
    type: Recreate
  replicas: 1
  template:
    metadata:
      labels:
        app: my-eventstore
    spec:
      imagePullSecrets:
        - name: runner-gitlab-account
      containers:
        - name: eventstore
          image: eventstore/eventstore
      env:
        - name: EVENTSTORE_DB
          value: "/usr/data/eventstore/data"
        - name: EVENTSTORE_LOG
          value: "/usr/data/eventstore/log"
      ports:
        - containerPort: 2113
        - containerPort: 2114
        - containerPort: 1111
        - containerPort: 1112
      volumeMounts:
        - name: eventstore-storage
          mountPath: /usr/data/eventstore
  volumes:
    - name: eventstore-storage
      persistentVolumeClaim:
        claimName: eventstore-pv-claim

И это ямл для моего постоянного требования тома:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: eventstore-pv-claim
spec:
  accessModes:
    - ReadWriteOnce
 resources:
    requests:
      storage: 1Gi

Развертывания работают нормально. Когда я проверил на прочность, я начал сталкиваться с проблемой. Я удаляю под, чтобы заставить фактическое состояние перейти в желаемое, и смотрю, как отреагирует Kubernetes.

Он немедленно запустил новый модуль на замену удаленному. И пользовательский интерфейс администратора по-прежнему показывал те же данные. Но после удаления стручка во второй раз новый под не подошел. Я получил сообщение об ошибке, в котором говорилось, что «запись слишком велика», что указывает на поврежденные данные в соответствии с этим обсуждением. https://groups.google.com/forum/#!topic/event-store/gUKLaxZj4gw

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

Однако при развертывании новых версий образа или масштабировании модулей в развертывании до нуля и обратно к единице повреждения данных не происходит. После нескольких попыток все в порядке. Что странно, так как это также полностью заменяет модули (я проверил идентификаторы модулей, и они изменились).

Это заставляет меня задуматься, является ли удаление модуля с помощью kubectl delete более действенным способом завершения работы модуля. Есть ли у кого-нибудь из вас подобный опыт? Понимания того, если / чем отличается удаление? Спасибо заранее за ваш вклад.

С уважением,

Оскар


person Oskar    schedule 07.08.2018    source источник


Ответы (1)


Меня сослались на этот запрос на перенос на Github, в котором говорилось, что процесс не был остановлен должным образом: https://github.com/EventStore/eventstore-docker/pull/52

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

Надеюсь, это поможет кому-то столкнуться с той же проблемой.

person Oskar    schedule 07.08.2018