引用: https://blog.csdn.net/miss1181248983/article/details/106440068/
版本信息:
k8s:1.18.6
rabbitmq:3.28-manager
存储:
使用nfs提供外部持久化存储
增加了延迟插件:部署时可以直接使用最新版本,测试有效
download: https://www.rabbitmq.com/community-plugins.html
[root@master01 rabbitmq]# cat rabbitmq.yaml --- apiVersion: v1 kind: ServiceAccount metadata: name: rmq-cluster namespace: cyl-middleware --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: Role metadata: name: rmq-cluster namespace: cyl-middleware rules: - apiGroups: - "" resources: - endpoints verbs: - get --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: RoleBinding metadata: name: rmq-cluster namespace: cyl-middleware roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: rmq-cluster subjects: - kind: ServiceAccount name: rmq-cluster namespace: cyl-middleware --- apiVersion: v1 kind: ConfigMap metadata: name: rmq-cluster-config namespace: cyl-middleware labels: addonmanager.kubernetes.io/mode: Reconcile data: enabled_plugins: | [rabbitmq_management,rabbitmq_peer_discovery_k8s]. rabbitmq.conf: | loopback_users.guest = false cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s cluster_formation.k8s.host = kubernetes.default.svc.cluster.local cluster_formation.k8s.address_type = hostname cluster_formation.k8s.hostname_suffix = .rmq-cluster.cyl-middleware.svc.cluster.local cluster_formation.node_cleanup.interval = 10 cluster_formation.node_cleanup.only_log_warning = true cluster_partition_handling = autoheal queue_master_locator=min-masters --- apiVersion: v1 kind: Secret metadata: name: rmq-cluster-secret namespace: cyl-middleware stringData: cookie: ERLANG_COOKIE username: admin password: admin123 type: Opaque --- apiVersion: apps/v1 kind: StatefulSet metadata: name: rmq-cluster namespace: cyl-middleware labels: app: rmq-cluster spec: replicas: 3 selector: matchLabels: app: rmq-cluster serviceName: rmq-cluster template: metadata: labels: app: rmq-cluster spec: serviceAccountName: rmq-cluster terminationGracePeriodSeconds: 30 containers: - name: rabbitmq image: rabbitmq:3.7.28-management imagePullPolicy: IfNotPresent ports: - containerPort: 15672 name: http protocol: TCP - containerPort: 5672 name: amqp protocol: TCP command: - sh args: - -c - cp -v /etc/rabbitmq/rabbitmq.conf ${RABBITMQ_CONFIG_FILE}; exec docker-entrypoint.sh rabbitmq-server env: - name: RABBITMQ_DEFAULT_USER valueFrom: secretKeyRef: key: username name: rmq-cluster-secret - name: RABBITMQ_DEFAULT_PASS valueFrom: secretKeyRef: key: password name: rmq-cluster-secret - name: RABBITMQ_ERLANG_COOKIE valueFrom: secretKeyRef: key: cookie name: rmq-cluster-secret - name: K8S_SERVICE_NAME value: rmq-cluster - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: RABBITMQ_USE_LONGNAME value: "true" - name: RABBITMQ_NODENAME value: rabbit@$(POD_NAME).rmq-cluster.$(POD_NAMESPACE).svc.cluster.local - name: RABBITMQ_CONFIG_FILE value: /var/lib/rabbitmq/rabbitmq.conf livenessProbe: exec: command: - rabbitmqctl - status initialDelaySeconds: 30 timeoutSeconds: 10 readinessProbe: exec: command: - rabbitmqctl - status initialDelaySeconds: 10 timeoutSeconds: 10 volumeMounts: - name: config-volume mountPath: /etc/rabbitmq readOnly: false - name: mq mountPath: /var/lib/rabbitmq readOnly: false - name: mq-cm mountPath: /plugins/rabbitmq_delayed_message_exchange-3.8.9-0199d11c.ez #增加配置项rabbitMQ延时队列插件,按需设置对应configmap:mq-cm subPath: rabbitmq_delayed_message_exchange-3.8.9-0199d11c.ez volumes: - name: config-volume configMap: items: - key: rabbitmq.conf path: rabbitmq.conf - key: enabled_plugins path: enabled_plugins name: rmq-cluster-config - name: mq nfs: server: 10.0.40.11 #定义外部存储nfs path: "/home/k8s/mq" #nfs目录 - name: mq-cm configMap: name: mq-cm --- apiVersion: v1 kind: Service metadata: name: rmq-cluster namespace: cyl-middleware labels: app: rmq-cluster spec: selector: app: rmq-cluster ports: - name: http port: 15672 protocol: TCP targetPort: 15672 - name: amqp port: 5672 protocol: TCP targetPort: 5672 type: ClusterIP --- #不涉及外部访问的ingress配置可以删除 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: rabbitmq namespace: cyl-middleware spec: rules: - host: zlws.rabbitmq.com http: paths: - path: / backend: serviceName: rmq-cluster servicePort: 15672
原文:https://www.cnblogs.com/hanshengli/p/14721204.html