Я пытаюсь создать простой кластер mon go набор реплик в kubernetes.
У меня есть StatefulSet экземпляров mongod, с
livenessProbe:
initialDelaySeconds: 60
exec:
command:
- mongo
- --eval
- "db.adminCommand('ping')"
readinessProbe:
initialDelaySeconds: 60
exec:
command:
- /usr/bin/mongo --quiet --eval 'rs.status()' | grep ok | cut -d ':' -f 2 | tr -dc '0-9' | awk '{ if($0=="0"){ exit 127 }else{ exit 0 } }'
, как вы можете видеть, Мой readinessProbe проверяет, работает ли mon go replicaSet правильно.
однако я получаю циклическую зависимость с (и существующим) отчетом кластера:
"lastHeartbeatMessage" : "Error connecting to mongo-2.mongo:27017 :: caused by :: Could not find address for mongo-2.mongo:27017: SocketException: Host not found (authoritative)",
(где mon go -2 подвергался непрерывному обновлению).
, глядя дальше:
$ kubectl run --generator=run-pod/v1 tmp-shell --rm -i --tty --image nicolaka/netshoot -- /bin/bash
bash-5.0# nslookup mongo-2.mongo
Server: 10.96.0.10
Address: 10.96.0.10#53
** server can't find mongo-2.mongo: NXDOMAIN
bash-5.0# nslookup mongo-0.mongo
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: mongo-0.mongo.cryoem-logbook-dev.svc.cluster.local
Address: 10.27.137.6
, поэтому вопрос заключается в том, существует ли способ заставить kubernetes всегда сохранять запись DNS для пн go стручки, чтобы всегда присутствовать? похоже, что у меня есть ситуация с курицей и яйцом, когда, если весь модуль не прошел проверку готовности и живучести, запись dns не создается, и, следовательно, другие экземпляры mongod не смогут получить к ней доступ.