Проблемы при развертывании Weaviate на AKS (служба Azure Kubernetes)

Я пытаюсь развернуть Weaviate в службе Azure Kubernetes. Во время развертывания Helm возникла проблема, при которой я получаю следующее сообщение об ошибке:

Multi-Attach error for volume "pvc-69db6155-4f28-11ea-b829-b2b3d6f12b6f" Volume is already exclusively attached to one node and can't be attached to another
Unable to mount volumes for pod "esvector-master-0_weaviate(20dafc44-4f58-11ea-b829-b2b3d6f12b6f)": timeout expired waiting for volumes to attach or mount for pod "weaviate"/"esvector-master-0". list of unmounted volumes=[esvector-master]. list of unattached volumes=[esvector-master default-token-ckf7v]

Единственное, что я изменил в values.yaml, - это имя класса хранилища:

pvc:
  size: 2Gi
  storageClassName: default

Я внес это изменение, поскольку в Azure не установлен класс NFS. Вместо этого я использовал класс kubernetes по умолчанию, который использует управляемые диски Azure.

У кого-нибудь есть идеи, как решить эту проблему? Благодарность!

1 ответ

Мы обновили наши документы, так как они не были полными по теме аварийного восстановления etcd в таблице управления. Имея в виду обновленную документацию, позвольте мне попытаться объяснить, что здесь происходит:

Нет nfs объемы требуемые по умолчанию

По умолчанию Weaviate использует постоянные тома для своих баз данных. Классы хранения для тех, которые используют значения по умолчанию, т.е. неnfs. Поэтому при использовании значения по умолчаниюvalues.yaml нет nfs на кластере требуется поддержка.

etcd аварийное восстановление

На момент написания этого ответа одним из бэкэндов хранилища для Weaviate является etcd. Мы используем диаграмму bitnami etcd, которая упоминается в Weaviate Chart как дополнительная диаграмма. Etcd не выдерживает отказа кворума узлов (Источник). Регулярное обслуживание Kubernetes может легко привести к катастрофическому сбою etcd, особенно при небольшом развертывании (например, 3 или меньше модулей etcd). Для борьбы с этим в приведенной выше диаграмме от Bitnami есть режим аварийного восстановления.

Обратите внимание, что etcd.disasterRecovery.enabled по умолчанию false, но мы рекомендуем установить его на true в производстве.

Развернуть nfs Provider, если требуется аварийное восстановление etcd.

Для функции аварийного восстановления etcd, которая является частью диаграммы управления bitnami etcd, требуетсяReadWriteManyдоступ к томам моментальных снимков. Рекомендуется использоватьnfs Provider, как указано в документации Weaviate Helm.

Почему nfs-provisioner не входит в диаграмму Weaviate?

Может показаться нелогичным, что аварийное восстановление является важной частью стабильной производственной установки, но провайдер не включен в составную диаграмму в качестве дополнительной диаграммы. На это есть несколько причин:

  • Сочетание проблем: диаграмма Weaviate устанавливает Weaviate с целью изолировать все эффекты в одном пространстве имен. Вnfs-provisioner вносит изменения в кластер, которые могут быть не совсем очевидными
  • Мультитенантность: мы не можем делать предположений, что ваш кластер Kubernetes работает только с одним экземпляром Weaviate или даже только с экземплярами Weaviate. Это может быть большой общий кластер с несколькими арендаторами. В этом случае объединение инициатора приведет к установке нескольких провайдеров, когда в кластере может и должен быть только один.
  • Различные жизненные циклы приводят к циклическим зависимостям: если бы провайдер был связан с Weaviate, было бы невозможно удалить диаграмму Weaviate. Это связано с тем, что при удалении диаграммы Weaviate также удаляютсяetcdподграфик. Последний снимаетnfsтома, используемые для создания снимков. Однако, если бы сборщик был частью диаграммы, он уже был бы удален, в результате чего кластер не мог удалитьnfs тома.

tl; dr: Разверните инициатор в другом пространстве имен, разверните столько экземпляров Weaviate, сколько хотите, в отдельных пространствах имен. Это позволяет избежать различий в жизненном цикле, проблем с мультитенантностью и циклических зависимостей.

Другие вопросы по тегам