我的 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 时这似乎是必要的。
我还能够通过删除持久卷上的写入权限来重现该问题。然而,这只是因为我没有主意了 :)。