• rabbitmq k8s部署


    实操

    yaml获取地址:diy-kubernetes-examples/minikube/

    需要部分改动:将rbac的部署yaml中的"rbac.authorization.k8s.io/v1beta1" 改为 “rbac.authorization.k8s.io/v1”
    与k8s的版本支持情况有关

    1. 创建namespace

    测试验证用

    ## All resources will be created in this namespace
    ## To delete all resources created by this example, simply delete this namespace:
    ## kubectl delete -f rabbitmq_statefulsets
    apiVersion: v1
    kind: Namespace
    metadata:
     name: test-rabbitmq
    

    2. 创建configmap

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: rabbitmq-config
      namespace: test-rabbitmq
    data:
      enabled_plugins: |
          [rabbitmq_management,rabbitmq_peer_discovery_k8s].
    
      rabbitmq.conf: |
          ## Cluster formation. See https://www.rabbitmq.com/cluster-formation.html to learn more.
          cluster_formation.peer_discovery_backend  = rabbit_peer_discovery_k8s
          cluster_formation.k8s.host = kubernetes.default.svc.cluster.local
          ## Should RabbitMQ node name be computed from the pod's hostname or IP address?
          ## IP addresses are not stable, so using [stable] hostnames is recommended when possible.
          ## Set to "hostname" to use pod hostnames.
          ## When this value is changed, so should the variable used to set the RABBITMQ_NODENAME
          ## environment variable.
          cluster_formation.k8s.address_type = hostname
          ## How often should node cleanup checks run?
          cluster_formation.node_cleanup.interval = 30
          ## Set to false if automatic removal of unknown/absent nodes
          ## is desired. This can be dangerous, see
          ##  * https://www.rabbitmq.com/cluster-formation.html#node-health-checks-and-cleanup
          ##  * https://groups.google.com/forum/#!msg/rabbitmq-users/wuOfzEywHXo/k8z_HWIkBgAJ
          cluster_formation.node_cleanup.only_log_warning = true
          cluster_partition_handling = autoheal
          ## See https://www.rabbitmq.com/ha.html#master-migration-data-locality
          queue_master_locator=min-masters
          ## This is just an example.
          ## This enables remote access for the default user with well known credentials.
          ## Consider deleting the default user and creating a separate user with a set of generated
          ## credentials instead.
          ## Learn more at https://www.rabbitmq.com/access-control.html#loopback-users
          loopback_users.guest = false
    

    3. 创建service

    kind: Service
    apiVersion: v1
    metadata:
      namespace: test-rabbitmq
      name: rabbitmq
      labels:
        app: rabbitmq
        type: LoadBalancer
    spec:
      type: NodePort
      ports:
       - name: http
         protocol: TCP
         port: 15672
         targetPort: 15672  # 管理界面端口
         nodePort: 31672
       - name: amqp
         protocol: TCP
         port: 5672
         targetPort: 5672  # mq服务端口
         nodePort: 30672
      selector:
        app: rabbitmq
    

    4. 创建rbac授权

    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: rabbitmq
      namespace: test-rabbitmq
    ---
    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: rabbitmq-peer-discovery-rbac
      namespace: test-rabbitmq
    rules:
    - apiGroups: [""]
      resources: ["endpoints"]
      verbs: ["get"]
    - apiGroups: [""]
      resources: ["events"]
      verbs: ["create"]
    ---
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: rabbitmq-peer-discovery-rbac
      namespace: test-rabbitmq
    subjects:
    - kind: ServiceAccount
      name: rabbitmq
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: rabbitmq-peer-discovery-rbac
    

    5. 创建statefulset

    apiVersion: apps/v1
    # See the Prerequisites section of https://www.rabbitmq.com/cluster-formation.html#peer-discovery-k8s.
    kind: StatefulSet
    metadata:
      name: rabbitmq
      namespace: test-rabbitmq
    spec:
      serviceName: rabbitmq
      # Three nodes is the recommended minimum. Some features may require a majority of nodes
      # to be available.
      replicas: 3
      selector:
        matchLabels:
          app: rabbitmq
      template:
        metadata:
          labels:
            app: rabbitmq
        spec:
          serviceAccountName: rabbitmq
          terminationGracePeriodSeconds: 10
          nodeSelector:
            # Use Linux nodes in a mixed OS kubernetes cluster.
            # Learn more at https://kubernetes.io/docs/reference/kubernetes-api/labels-annotations-taints/#kubernetes-io-os
            kubernetes.io/os: linux
          containers:
          - name: rabbitmq-k8s
            image: rabbitmq:3.8
            volumeMounts:
              - name: config-volume
                mountPath: /etc/rabbitmq
            # Learn more about what ports various protocols use
            # at https://www.rabbitmq.com/networking.html#ports
            ports:
              - name: http
                protocol: TCP
                containerPort: 15672
              - name: amqp
                protocol: TCP
                containerPort: 5672
            livenessProbe:
              exec:
                # This is just an example. There is no "one true health check" but rather
                # several rabbitmq-diagnostics commands that can be combined to form increasingly comprehensive
                # and intrusive health checks.
                # Learn more at https://www.rabbitmq.com/monitoring.html#health-checks.
                #
                # Stage 2 check:
                command: ["rabbitmq-diagnostics", "status"]
              initialDelaySeconds: 60
              # See https://www.rabbitmq.com/monitoring.html for monitoring frequency recommendations.
              periodSeconds: 60
              timeoutSeconds: 15
            readinessProbe:
              exec:
                # This is just an example. There is no "one true health check" but rather
                # several rabbitmq-diagnostics commands that can be combined to form increasingly comprehensive
                # and intrusive health checks.
                # Learn more at https://www.rabbitmq.com/monitoring.html#health-checks.
                #
                # Stage 1 check:
                command: ["rabbitmq-diagnostics", "ping"]
              initialDelaySeconds: 20
              periodSeconds: 60
              timeoutSeconds: 10
            imagePullPolicy: Always
            env:
              - name: MY_POD_NAME
                valueFrom:
                  fieldRef:
                    apiVersion: v1
                    fieldPath: metadata.name
              - name: MY_POD_NAMESPACE
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.namespace
              - name: RABBITMQ_USE_LONGNAME
                value: "true"
              # See a note on cluster_formation.k8s.address_type in the config file section
              - name: K8S_SERVICE_NAME
                value: rabbitmq
              - name: RABBITMQ_NODENAME
                value: rabbit@$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local
              - name: K8S_HOSTNAME_SUFFIX
                value: .$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local
              - name: RABBITMQ_ERLANG_COOKIE
                value: "mycookie"
          volumes:
            - name: config-volume
              configMap:
                name: rabbitmq-config
                items:
                - key: rabbitmq.conf
                  path: rabbitmq.conf
                - key: enabled_plugins
                  path: enabled_plugins
    

    6. 验证

    本机登录mq的管理界面:http://localhost:31672/
    localhost也可以替换成相应的nodeIP
    默认的用户名:guest
    密码:guest
    在这里插入图片描述

    参考

  • 相关阅读:
    什么是埃及COC认证?埃及COC认证是什么意思?
    《工程伦理与学术道德》之《工程师的职业伦理》
    11.8代码
    关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM
    【MySQL】索引的作用及知识储备
    C++11的互斥量
    设计模式-状态模式(State)
    Java:升序数组插入一个元素,结果依旧是升序
    Vivado仿真数据出错
    [Gcexcel]GrapeCity Documents Excel for Java 5.2.2
  • 原文地址:https://blog.csdn.net/u010275850/article/details/126923827