Actualmente estoy creando un backend que, entre otras cosas, implica enviar mensajes RabbitMQ desde localhost a un clúster K8s donde los contenedores pueden ejecutarse y recoger mensajes específicos.
Hasta ahora, he estado usando Minikube para llevar a cabo todo mi desarrollo de Docker y K8, pero me encontré con un problema al intentar instalar RabbitMQ.
He estado siguiendo la documentación oficial del operador de clúster de RabbitMQ ( instalación ) ( uso ). Llegué a la sección "Crear una instancia de RabbitMQ" y me encontré con este error:
1 pod has unbound immediate persistentVolumeClaims
Lo arreglé al continuar con el tutorial y agregar un PV y PVC en mi archivo RabbitMQCluster YAML. Intenté aplicarlo nuevamente y me encontré con mi siguiente problema:
1 insufficient cpu
Intenté jugar con los límites de recursos y las solicitudes en el archivo YAML, pero todavía no tuve éxito. Después de buscar en Google y hacer una investigación general, noté que mis problemas específicos y mi configuración (Minikube y RabbitMQ) no parecen ser muy populares. Mi pregunta es, ¿he superado el alcance o el caso de uso de Minikube al intentar instalar servicios externos como RabbitMQ? Si es así, ¿cuál debería ser mi próximo paso?
Si no es así, ¿existen tutoriales útiles para instalar RabbitMQ en Minikube?
Si ayuda, aquí está mi archivo YAML actual para RabbitMQCluster:
apiVersion: rabbitmq.com/v1beta1 kind: RabbitmqCluster metadata: name: rabbitmq-cluster spec: persistence: storageClassName: standard storage: 5Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: rabbimq-pvc spec: resources: requests: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteOnce --- apiVersion: v1 kind: PersistentVolume metadata: name: rabbitmq-pv spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Recycle storageClassName: standard hostPath: path: /mnt/app/rabbitmq type: DirectoryOrCreate
Editar:
Comando utilizado para iniciar Minikube:
minikube start
Producción:
😄 minikube v1.17.1 on Ubuntu 20.04 ✨ Using the docker driver based on existing profile 👍 Starting control plane node minikube in cluster minikube 🔄 Restarting existing docker container for "minikube" ... 🎉 minikube 1.18.1 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.18.1 💡 To disable this notice, run: 'minikube config set WantUpdateNotification false' 🐳 Preparing Kubernetes v1.20.2 on Docker 20.10.2 ... 🔎 Verifying Kubernetes components... 🌟 Enabled addons: storage-provisioner, default-storageclass, dashboard 🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
Según el comando que usó para iniciar minikube, el error se debe a que no tiene suficientes recursos asignados a su clúster.
Según el código fuente del operador de clúster de rabbitmq, parece que necesita 2 CPU.
Debe ajustar la cantidad de CPU (y probablemente también la memoria) cuando inicializa su clúster. A continuación se muestra un ejemplo para iniciar un clúster de kubernetes con 4 cpus y 8G de RAM:
minikube start --cpus=4 --memory 8192
Si desea verificar sus recursos asignados actuales, puede ejecutar kubectl describe node
.
Aumentar la CPU y la memoria definitivamente hace que las cosas se despeguen, pero si está ejecutando minikube en una máquina de desarrollo, que probablemente sea una computadora portátil, este es un requisito de recursos bastante grande. Entiendo que Rabbit se ejecuta en algunos escenarios realmente grandes, pero ¿no se puede configurar para que funcione en escenarios pequeños ?