Я установил кластер k8s на цифровых океанских каплях Ubuntu 18.04 LTS с использованием ситца поверх wireguard vpn, и смог настроить nginx-вход с traefik в качестве внешнего LB. Сейчас я нахожусь на этапе настройки распределенного хранилища с помощью rook ceph, следуя быстрому запуску на https://rook.io/docs/rook/master/ceph-quickstart.html,, но кажется, что мониторы никогда не достигают кворума (даже если он только один). На самом деле, контролируйте зону действия самостоятельно, но ни оператор, ни какие-либо другие мониторы, кажется, не знают этого, и оператор зависает при попытке проверить состояние.
Я пробовал устранять неполадки в сети, начиная с Wireguard, Calico и UFW. Я даже установил ufw, чтобы временно разрешить весь трафик по умолчанию, просто чтобы убедиться, что я не разрешил один порт, но трафик был на другом интерфейсе (у меня есть интерфейсы wg0, eth1, tunl0 и calico).
Я безуспешно следовал руководству по устранению неполадок ceph: http://docs.ceph.com/docs/master/rados/troubleshooting/troubleshooting-mon/#recovering-a-monitor-s-broken-monmap
Я уже 4 дня, и у меня нет решений.
Вот как я настраиваю кластер хранения
cd cluster/examples/kubernetes/ceph
kubectl apply -f common.yaml
kubectl apply -f operator.yaml
kubectl apply -f cluster-test.yaml
Бег kubectl get pods
возвращает
NAME READY STATUS RESTARTS AGE
pod/rook-ceph-agent-9ws2p 1/1 Running 0 24s
pod/rook-ceph-agent-v6v9n 1/1 Running 0 24s
pod/rook-ceph-agent-x2jv4 1/1 Running 0 24s
pod/rook-ceph-mon-a-74cc6db5c8-8s5l5 1/1 Running 0 9s
pod/rook-ceph-operator-7cd5d8bd4c-pclxp 1/1 Running 0 25s
pod/rook-discover-24cfj 1/1 Running 0 24s
pod/rook-discover-6xsnp 1/1 Running 0 24s
pod/rook-discover-hj4tc 1/1 Running 0 24s
Однако, когда я пытаюсь проверить состояние мониторов, из модуля оператора я получаю:
#This hangs forever
kubectl exec -it rook-ceph-operator-7cd5d8bd4c-pclxp ceph status
#This hangs foverer
kubectl exec -it rook-ceph-operator-7cd5d8bd4c-pclxp ceph ping mon.a
#This returns [errno 2] error calling ping_monitor
#Which I guess should, becasue mon.b does/should not exist
#But I expected a response such as mon.b does not exist
kubectl exec -it rook-ceph-operator-7cd5d8bd4c-pclxp ceph ping mon.b
Кстати, пинг монитора от оператора работает просто отлично
Операторские журналы
https://gist.github.com/figassis/0a3f499f5e3f79a430c9bd58718fd29f#file-operator-log
Мониторинг логов
https://gist.github.com/figassis/0a3f499f5e3f79a430c9bd58718fd29f#file-mon-a-log
Мониторинг состояния, получение напрямую от модуля монитора через сокет
https://gist.github.com/figassis/0a3f499f5e3f79a430c9bd58718fd29f#file-mon-a-status