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 を起動するときに必要になるようです。

永続ボリュームの書き込み権限を削除することでも問題を再現できました。ただし、これは単にアイデアが尽きたためです :)。

関連情報