zoukankan      html  css  js  c++  java
  • 阿里云kubernets部署rabbitMQ 集群

    创建阿里云NAS存储卷  (PV、PVC)

    public-service-pv.yaml

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/bound-by-controller: 'yes'
      finalizers:
        - kubernetes.io/pv-protection
      labels:
        alicloud-pvname: public-service-pvc-rabbitmq-cluster-storage
      name: public-service-pvc-rabbitmq-cluster-storage
      selfLink: /api/v1/persistentvolumes/public-service-pvc-rabbitmq-cluster-storage
    spec:
      accessModes:
        - ReadWriteMany
      capacity:
        storage: 20Gi
      claimRef:
        apiVersion: v1
        kind: PersistentVolumeClaim
        name: rabbitmq-cluster-storage
        namespace: public-service
      flexVolume:
        driver: alicloud/nas
        options:
          mode: '755'
          modeType: recursive
          path: /rabbitmq-cluster-storage
          server: xxxx.cn-hangzhou.nas.aliyuncs.com
          vers: '4.0'
      persistentVolumeReclaimPolicy: Retain
      storageClassName: nas
      volumeMode: Filesystem

    创建kubernets空间

    vi -b public-service-ns.yaml

    apiVersion: v1
    kind: Namespace
    metadata:
      name: public-service

    vi -b rabbitmq-configmap.yaml

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: rmq-cluster-config
      namespace: public-service
      labels:
        addonmanager.kubernetes.io/mode: Reconcile
    data:
        enabled_plugins: |
          [rabbitmq_management,rabbitmq_peer_discovery_k8s].
        rabbitmq.conf: |
          loopback_users.guest = false
    
          ## Clustering
          cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
          cluster_formation.k8s.host = kubernetes.default.svc.cluster.local
          cluster_formation.k8s.address_type = hostname
          #################################################
          # public-service is rabbitmq-cluster's namespace#
          #################################################
          cluster_formation.k8s.hostname_suffix = .rmq-cluster.public-service.svc.cluster.local
          cluster_formation.node_cleanup.interval = 10
          cluster_formation.node_cleanup.only_log_warning = true
          cluster_partition_handling = autoheal
          ## queue master locator
          queue_master_locator=min-masters

    vi -b  rabbitmq-rbac.yaml

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: rmq-cluster
      namespace: public-service
      
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: Role
    metadata:
      name: rmq-cluster
      namespace: public-service
    rules:
      - apiGroups:
          - ""
        resources:
          - endpoints
        verbs:
          - get
    
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: RoleBinding
    metadata:
      name: rmq-cluster
      namespace: public-service
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: rmq-cluster
    subjects:
    - kind: ServiceAccount
      name: rmq-cluster
      namespace: public-service

    vi -b rabbitmq-secret.yaml

    apiVersion: v1
    kind: Secret
    metadata:
      name: rmq-cluster-secret
      namespace: public-service
    stringData:
      cookie: ERLANG_COOKIE
      username: admin
      password: admin
    type: Opaque

    vi  -b  rabbitmq-svc.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: rmq-cluster
      namespace: public-service
      labels:
        app: rmq-cluster
    spec:
      selector:
        app: rmq-cluster
      clusterIP: 172.21.11.245
      ports:
      - name: http
        port: 15672
        protocol: TCP
        targetPort: 15672
      - name: amqp
        port: 5672
        protocol: TCP
        targetPort: 5672
      type: ClusterIP

    vi -b rabbitmq-StatefulSet.yaml

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: rmq-cluster
      namespace: public-service
      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.8-management
            imagePullPolicy: IfNotPresent
            resources:
              limits:
                memory: "3072Mi"
            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: rabbitmq-storage
              mountPath: /var/lib/rabbitmq
              readOnly: false
          volumes:
          - name: config-volume
            configMap:
              items:
              - key: rabbitmq.conf
                path: rabbitmq.conf
              - key: enabled_plugins
                path: enabled_plugins
              name: rmq-cluster-config
          - name: rabbitmq-storage
            persistentVolumeClaim:
              claimName: rabbitmq-cluster-storage
     #     nodeSelector:                    
     #       rabbit: rabbit
     #     tolerations:
     #      - effect: NoSchedule
     #         key: jason
     #         operator: Equal
     #         value: jason

    vi -b rabbitmq-ingress.yaml

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: rabbitmq
      namespace: public-service
    spec:
      rules:
        - host: rabbitmq.xxx.com
          http:
            paths:
              - path: /
                backend:
                  serviceName: rmq-cluster
                  servicePort: 15672

    kubectl apply -f .

    kubectl get all -n public-service

    默认账户、密码 guest

    参考:

    https://blog.csdn.net/miss1181248983/article/details/106440068?utm_medium=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-1.nonecas

    https://blog.csdn.net/coco3848/article/details/107708713

  • 相关阅读:
    VUE 多页面配置(二)
    VUE 多页面配置(一)
    VUE (vue-cli)脚手架项目说明
    CSS 三角形与圆形
    协同过滤算法之组合加权评分
    用户投票算法
    Android开发学习总结(一)——搭建最新版本的Android开发环境
    关于统计变换(CT/MCT/RMCT)算法的学习和实现
    SIFT 特征提取算法总结
    Android Listener侦听的N种写法
  • 原文地址:https://www.cnblogs.com/xiaoyou2018/p/14919995.html
Copyright © 2011-2022 走看看