
我的 RabbitMQ 叢集沒有切換到就緒狀態(就緒探測失敗),因為它在啟動時遇到問題。
該集群是使用官方 RabbitMQ Operator 部署的。不幸的是,日誌不包含任何有價值的資訊。
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進行某種日誌記錄,因為目前缺少這種日誌記錄。
就我而言,它是一個無法存取的 core-dns(由於無效的 K8s 路由配置),這在啟動rabbitmq 時似乎是必要的。
我也可以透過刪除持久性磁碟區上的寫入權限來重現問題。然而,這只是因為我沒有想法了:)。