【问题标题】:RabbitMQ cluster-operator does not work in KubernetesRabbitMQ cluster-operator 在 Kubernetes 中不起作用
【发布时间】:2021-02-12 12:05:08
【问题描述】:

RabbitMQ 集群算子在 Kubernetes 中不起作用。
我有一个 3 个节点的 Kubernetes 集群 1.17.17。我和牧场主一起部署了它。 根据这个指令,我安装了 RabbitMQ cluster-operator: https://www.rabbitmq.com/kubernetes/operator/quickstart-operator.html
kubectl apply -f "https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml"
没关系!但.. 我根据文档为实例创建了这个非常简单的配置:

apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
  name: rabbitmq
  namespace: test-rabbitmq

我有错误:运行 pod“rabbitmq-server-0”的“VolumeBinding”过滤器插件时出错:pod has unbound immediate PersistentVolumeClaims

之后我检查了:
kubectl get storageclasses
看到没有资源!我添加了以下 storegeclasses:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

创建 pv 和 pvc:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: rabbitmq-data-sigma
  labels:
    type: local
  namespace: test-rabbitmq
  annotations:
    volume.alpha.kubernetes.io/storage-class: rabbitmq-data-sigma
spec:
  storageClassName: local-storage
  capacity:
    storage: 3Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: "/opt/rabbitmq-data-sigma"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: rabbitmq-data
  namespace: test-rabbitmq
spec:
  storageClassName: local-storage
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 3Gi

我最终在卷中遇到错误 - 这是自动生成的:

FailedBinding   no persistent volumes available for this claim and no storage class is set  

请帮助理解这个问题!

【问题讨论】:

    标签: kubernetes rabbitmq


    【解决方案1】:

    您可以配置Dynamic Volume Provisioning 例如动态 NFS 配置,如 article 中所述,或者您可以手动创建 PersistentVolume(这是推荐的方法)。

    我真的建议您配置动态配置 - 这将允许您自动生成PersistentVolumes

    手动创建 PersistentVolume

    正如我所提到的,这不是推荐的方法,但当我们想要快速检查某些内容而不配置其他组件时它可能很有用。

    首先你需要创建PersistentVolume:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv
    spec:
      capacity:
        storage: 10Gi
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Recycle
      hostPath:
        path: /mnt/rabbitmq # data will be stored in the "/mnt/rabbitmq" directory on the worker node
        type: Directory
    

    然后在将运行rabbitmq-server-0Pod 的节点上创建/mnt/rabbitmq 目录。在您的情况下,您有 3 个工作节点,因此可能难以确定 Pod 将在哪里运行。

    结果你可以看到PersistentVolumeClaim绑定到了新创建的PersistentVolume,并且rabbitmq-server-0Pod创建成功:

    # kubectl get pv,pvc -A
    NAME                   CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                         STORAGECLASS   REASON   AGE
    persistentvolume/pv    10Gi       RWO            Recycle          Bound    test-rabbitmq/persistence-rabbitmq-server-0                           11m
    
    
    NAMESPACE       NAME                                                  STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    test-rabbitmq   persistentvolumeclaim/persistence-rabbitmq-server-0   Bound    pv       10Gi       RWO                           11m
    
    # kubectl get pod -n test-rabbitmq
    NAME                READY   STATUS    RESTARTS   AGE
    rabbitmq-server-0   1/1     Running   0          11m
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多