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에 대한 일종의 로깅이 있었으면 좋았을 것입니다.

제 경우에는 (잘못된 K8s 라우팅 구성으로 인해) 연결할 수 없는 core-dns였는데, 이는 Rabbitmq를 시작할 때 필요한 것 같습니다.

또한 영구 볼륨에 대한 쓰기 권한을 제거하여 문제를 재현할 수 있었습니다. 그러나 이것은 아이디어가 부족했기 때문이었습니다 :).

관련 정보