ydb-platform/ydb-kubernetes-operator

после применения скрипта storage-mirror-3dc.yaml в k8s-кластере, подсистема хранения не создается и в журнале любого из Pod'ов с названием storage-sample-* имеется ошибка: ":BS_PDISK CRIT: PDiskId# 1 BlockDevice initialization error! Can't open file "/dev/kikimr_ssd_00": not enough rights. Marker# BPD39 :BS_PDISK CRIT: PDiskId# 1 bootstrapped to the StateError, reason# Can't open file "/dev/kikimr_ssd_00": not enough rights. Can not be initialized Config: {TPDiskConfg Path# "/dev/kikimr_ssd_00" Expected......"

Closed this issue · 1 comments

Bug Report

YDB Kubernetes Operator version: 0.5.19

Environment

ОС: RED OS MUROM (7.3.2)
Kernel: 5.15.72-1.el7.3.x86_64
k8s: 1.29.3
Container runtime: 1.7.14
helm: v3.11.3-rancher2
Go: go1.21.0
longhorn: v103.2.1+up1.5.3

Current behavior:

после применения скрипта storage-mirror-3dc.yaml в k8s-кластере, подсистема хранения не создается и в журнале любого из Pod'ов с названием storage-sample-* имеется ошибка: ":BS_PDISK CRIT: PDiskId# 1 BlockDevice initialization error! Can't open file "/dev/kikimr_ssd_00": not enough rights. Marker# BPD39
:BS_PDISK CRIT: PDiskId# 1 bootstrapped to the StateError, reason# Can't open file "/dev/kikimr_ssd_00": not enough rights. Can not be initialized Config: {TPDiskConfg Path# "/dev/kikimr_ssd_00" Expected......"

в группу disk пользователь ydb входит. Ошибку удалось преодолеть переделав Docker-образ на пользователя root:

FROM cr.yandex/crptqonuodf51kdj7a7d/ydb:23.4.11
USER root

в качестве хранилища для k8s-кластера используется LongHorn.

Такая ошибка наблюдалась и на других версиях YDB-оператора (0.5.14, 0.5.16)

Expected behavior:

успешное применение storage-mirror-3dc.yaml от пользователя ydb в Docker-образе

Steps to reproduce:

устанавливаю согласно инструкции: https://ydb.tech/docs/ru/devops/kubernetes/initial-deployment
YDB-оператор устанавливается успешно. Контейнер в режиме READY без перезапусков.
Далее применяю storage-mirror-3dc.yaml командой:

kubectl apply -f samples/storage-mirror-3dc.yaml

в результате:

...
STATUS: deployed
...

затем Pod'ы storage-sample-* переходят в состояние Pending, а storage-sample-blobstorage-init-* в состояние CrashLoopBackOff с постоянным перезапуском. В результате изучения проблемы журнал storage-sample-blobstorage-init-* содержит ошибку "MB-0001 failed to connect to all addresses", из которой явно не следует в чем дело.
Далее опытным путем поняли, что не для Worker-узлов кластера не хватает меток.

Присвоили метки:

topology.kubernetes.io/zone=az-1
topology.kubernetes.io/zone=az-2
topology.kubernetes.io/zone=az-3

после этого Pod'ы storage-sample-* стали разворачиваться (перешли из состояния Pending), но в итоге вываливались с ошибкой:

":BS_PDISK CRIT: PDiskId# 1 BlockDevice initialization error! Can't open file "/dev/kikimr_ssd_00": not enough rights. Marker# BPD39
:BS_PDISK CRIT: PDiskId# 1 bootstrapped to the StateError, reason# Can't open file "/dev/kikimr_ssd_00": not enough rights. Can not be initialized Config: {TPDiskConfg Path# "/dev/kikimr_ssd_00" Expected......"

далее поправили официальный образ:

FROM cr.yandex/crptqonuodf51kdj7a7d/ydb:23.4.11
USER root

и после этого заново установили YDB-оператор и применили storage-mirror-3dc.yaml. В результате storage-sample-* успешно развернулись.

@avpco
Thank you for your interest in YDB Operator. I think this duplicate of #226 issue. Please try to update Longhorn component to use PVC with non-root user mount