Мы обновили наши документы, так как они не были заполнены вокруг топического c из etcd аварийного восстановления в таблице управления . Имея в виду обновленные документы, позвольте мне попытаться объяснить, что здесь происходит:
Нет nfs
томов, требуемых по умолчанию
По умолчанию Weaviate использует постоянные тома для своих баз данных. Классы хранения для них используют значения по умолчанию, т.е. не nfs
. Поэтому, когда с использованием по умолчанию values.yaml
поддержки кластера nfs
не требуется,
etcd Аварийное восстановление
Во время написания этого ответа один из внутренняя память для Weaviate - etcd
. Мы используем bitnami etcd chart , на который ссылается Weaviate Chart , в качестве подкарты . Etcd не переживает сбой кворума узлов ( Source ). Особенно в небольшом развертывании (например, 3 или меньше модулей etcd) регулярное обслуживание Kubernetes может легко привести к катастрофическому отказу etcd. Для борьбы с этим вышеупомянутая диаграмма от Bitnami содержит режим аварийного восстановления.
Обратите внимание, что etcd.disasterRecovery.enabled
по умолчанию равен false
, но мы рекомендуем установить его на true
в производстве ,
Развертывание поставщика nfs
, если требуется аварийное восстановление etcd.
Функция аварийного восстановления etcd , являющаяся частью схемы управления bitnami etcd , требует ReadWriteMany
доступ к томам снимков. Рекомендуется использовать поставщика nfs
, как указано в Документах Weaviate Helm .
Почему nfs-provisioner
не является частью диаграммы Weaviate?
It Может показаться нелогичным, что аварийное восстановление является критически важной частью стабильной производственной настройки, однако поставщик не включен в усилятную диаграмму в качестве дополнительной диаграммы. Это имеет несколько причин:
- Совокупность проблем : диаграмма Weaviate устанавливает Weaviate с целью изолировать все эффекты в одном пространстве имен.
nfs-provisioner
вносит изменения в кластер, которые могут быть не совсем очевидными - Мультитенантность : мы не можем предполагать, что в вашем кластере Kubernetes работает только один экземпляр Weaviate или даже только Weaviate экземпляров. Это может быть большой общий кластер с несколькими арендаторами. В этом случае связывание провайдера приведет к установке нескольких провайдеров, когда кластер может и должен иметь только один
- Различные жизненные циклы приводят к циклическим зависимостям : если поставщик был связан с Weaviate стало бы невозможно удалить график Weaviate. Это связано с тем, что при удалении диаграммы Weaviate также удаляется вложенная диаграмма
etcd
. Последний удаляет тома nfs
, используемые для моментального снимка. Однако, если бы упаковщик был частью диаграммы, он бы уже удалил, что делало кластер неспособным удалить nfs
тома.
tl; dr: один раз развернуть поставщик в другом пространстве имен, разверните столько экземпляров Weaviate, сколько вам нужно, в отдельных пространствах имен. Это позволяет избежать различий в жизненном цикле, проблем с несколькими арендаторами и циклическими зависимостями.