Kubernetes RabbitMQ Operator:集群出现启动问题(readinessProbes 失败),如何进一步排除故障?

Kubernetes RabbitMQ Operator:集群出现启动问题(readinessProbes 失败),如何进一步排除故障?

我的 RabbitMQ 集群未切换到就绪状态(就绪探测失败),因为它在启动时遇到了问题。

该集群是使用官方 RabbitMQ 操作员部署的。不幸的是,日志不包含任何有价值的信息。

RabbitmqCluster 资源或多或少是默认的 hello world 示例:

cat <<EOF | kubectl apply -f -
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
  name: why-not-ready
spec:
  persistence:
    storageClassName: nfs-client
---
EOF

日志输出:

rabbitmq 09:06:44.95
rabbitmq 09:06:44.96 Welcome to the Bitnami rabbitmq container
rabbitmq 09:06:44.96 Subscribe to project updates by watching https://github.com/bitnami/containers
rabbitmq 09:06:44.96 Submit issues and feature requests at https://github.com/bitnami/containers/issues
rabbitmq 09:06:44.96
rabbitmq 09:06:44.96 INFO  ==> ** Starting RabbitMQ setup **
rabbitmq 09:06:44.98 INFO  ==> Validating settings in RABBITMQ_* env vars..
rabbitmq 09:06:44.99 INFO  ==> Initializing RabbitMQ...
rabbitmq 09:06:45.03 INFO  ==> Starting RabbitMQ in background...
rabbitmq 09:09:03.93 ERROR ==> Couldn't start RabbitMQ in background.

尝试启用额外的日志记录,但不幸的是没有更多可见的输出:

cat <<EOF | kubectl apply -n rabbitmq -f -
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
  name: why-not-ready
spec:
  persistence:
    storageClassName: nfs-client
  rabbitmq:
     additionalConfig: |
      log.default.level = debug
      log.file = false
      log.console = true
      log.console.stdio = stdout   
      log.console.level = debug
---
EOF

安装容器似乎运行良好>所有文件都正确复制到所需位置并具有有效内容:

> cat /var/lib/rabbitmq/.erlang.cookie
uxdvZFvkpHFMdAgXM5azu0LOCE283kzY

> cat /operator/enabled_plugins
[rabbitmq_peer_discovery_k8s,rabbitmq_prometheus,rabbitmq_management].

> cat /var/lib/rabbitmq/.rabbitmqadmin.conf
[default]
username = default_user_l4yC9XizAcUHQEIe3Ep
password = zjvyy5XYCss-kFxu2dCnH2vDrd3AUsbu

通过调试获得的一些额外见解:

  • /var/lib/rabbitmq/mnesia/ 可从容器内部写入,也可在持久卷上更新。
  • 然后我检查了 rabbitmq 如何启动应用程序。有一个安装脚本 /opt/bitnami/scripts/rabbitmq/setup.sh,它在启动时被调用。在内部调用 rabbitmq_initialize,这会导致INFO ==> Starting RabbitMQ in background...日志中出现以下 stdout 行。不幸的是,一旦我手动调用脚本,它就不会提供任何其他输出。

有人知道启动失败的原因是什么吗?或者如何启用额外的调试日志?任何帮助都将不胜感激!

谢谢,BR,

菲利普

答案1

我认为这个案例非常特殊> 我仍然希望对 rabbitmq_initialize 进行某种日志记录,因为目前缺少这种记录。

就我而言,它是一个无法访问的核心 DNS(由于无效的 K8s 路由配置),但在启动 rabbitmq 时这似乎是必要的。

我还能够通过删除持久卷上的写入权限来重现该问题。然而,这只是因为我没有主意了 :)。

相关内容