当前位置: 首页 > article >正文

k8s部署rabbitmq

1. 创建provisioner制备器(如果已存在,则不需要)

1.1 编写nfs-provisioner-rbac.yaml配置文件
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner
  namespace: wms
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: nfs-client-provisioner-runner
rules:
  - apiGroups: [""]
    resources: ["persistentvolumes"]
    verbs: ["get", "list", "watch", "create", "delete"]
  - apiGroups: [""]
    resources: ["persistentvolumeclaims"]
    verbs: ["get", "list", "watch", "update"]
  - apiGroups: ["storage.k8s.io"]
    resources: ["storageclasses"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    namespace: wms
roleRef:
  kind: ClusterRole
  name: nfs-client-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  namespace: wms
rules:
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    namespace: wms
roleRef:
  kind: Role
  name: leader-locking-nfs-client-provisioner
  apiGroup: rbac.authorization.k8s.io
1.2 在wms命名空间下,导入nfs-provisioner-rbac.yaml配置文件,或者执行以下命令
$ kubectl apply -f nfs-provisioner-rbac.yaml

1.3 创建wms-nfs-provisioner.yaml配置文件
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wms-nfs-provisioner
  namespace: wms #与RBAC文件中的namespace保持一致
  labels:
    app: wms-nfs-provisioner
spec:
  replicas: 1
  strategy:
    type: Recreate # 不滚动更新,直接停止旧版本,更新新版本
  selector:
    matchLabels:
      app: wms-nfs-provisioner
  template:
    metadata:
      labels:
        app: wms-nfs-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner # 要与nfs-client-provisioner-rabc.yaml中的名称一致
      containers:
        - name: wms-nfs-provisioner
          image: harbor.cool.team/k8s/provisioner/provisioner:v4.0.2
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: wms-nfs-provisioner  # provisioner制备器名称,请确保该名称与 StorageClass.yaml文件中的provisioner名称保持一致
            - name: NFS_SERVER
              value: 192.168.10.5   # NFS Server IP地址
            - name: NFS_PATH
              value: "/data/wms"    # NFS挂载卷
      volumes:
        - name: nfs-client-root
          nfs:
            server: 192.168.10.5  # NFS Server IP地址
            path: "/data/wms"     # NFS挂载卷
1.4 在wms命名空间下,导入wms-nfs-provisioner.yaml配置文件,或者执行以下命令

注意:需要先在服务器上面创建/data/wms这个文件夹,否则会构建失败

$ kubectl apply -f nfs-client-provisioner.yaml

2. 编写wms-rabbitmq-data-sc.yaml配置文件

apiVersion: storage.k8s.io/v1
kind: StorageClass # 描述资源对象为SC类型
metadata:
  name: wms-rabbitmq-data # SC的名称,在集群范围内需要保证唯一
provisioner: wms-nfs-provisioner # 外部制备器提供者,编写为提供者的名称
parameters:
  archiveOnDelete: "true" # 是否存档,false表示不存档,会删除oldPath下面的数据,true表示存档,会重命名路径
reclaimPolicy: Delete # 回收策略
volumeBindingMode: Immediate # 默认为Immediate,表示创建PVC立即进行绑定

3. 导入wms-rabbitmq-data-sc.yaml配置文件(创建StorageClass资源)

4. 查看StorageClass资源

$ kubectl get sc

5. 编写rabbitmq.yaml文件

---
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  labels: rabbitmq
spec:
  type: ClusterIP
  clusterIP: None
  selector:
    app: rabbitmq
  ports:
  - name: rabbitmq
    port: 5762
    targetPort: 5672
  - name: rabbitmq-web
    port: 15762
    targetPort: 15672
  - name: rabbitmq-stomp
    port: 61613
    targetPort: 61613
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rabbitmq
spec:
  serviceName: rabbitmq
  replicas: 1
  selector:
    matchLabels:
      app: rabbitmq
  template:
    metadata:
      labels:
        app: rabbitmq
    spec:
      containers:
      - name: rabbitmq
        image: harbor.cool.team/common/rabbitmq:3-management
        imagePullPolicy: IfNotPresent
        ports:
        - name: rabbitmq
          containerPort: 5672
          protocol: "TCP"
        - name: rabbitmq-web
          containerPort: 15672
          protocol: "TCP"
        - name: rabbitmq-stomp
          containerPort: 61613
          protocol: "TCP"
        env:
        - name: RABBITMQ_DEFAULT_USER  
          value: "guest"  # 默认用户名  
        - name: RABBITMQ_DEFAULT_PASS 
          value: "guest"  # 默认密码
        volumeMounts:
        - name: rabbitmq-data
          mountPath: /var/lib/rabbitmq
          subPath: data/rabbitmq
        # 定义钩子函数,在RabbitMQ容器启动后,自动启用RabbitMQ的STOMP插件
        lifecycle:
          postStart:
            exec:
              command: ["rabbitmq-plugins", "enable", "rabbitmq_stomp"]
      restartPolicy: Always
  volumeClaimTemplates:
  - metadata:
      name: rabbitmq-data
    spec:
      accessModes: [ "ReadWriteMany" ]
      storageClassName: "wms-rabbitmq-data"
      resources:
        requests:
          storage: 1Gi

 

6. 在k8中,指定wms命名空间,导入rabbitmq.yaml文件

7. 查看部署结果

8. 查看PVC和PV信息

$ kubectl get pvc -n wms
$ kubectl get pv -n wms

9. 查看rabbitmq启动日志

10. 使用ip访问rabbitmq页面

192.168.10.1:15672

11. 添加Ingress

12. 本地修改host文件

192.168.10.1 wmsrabbitmq.dev.cool.team

13. 使用域名访问rabbitmq页面

wmsrabbitmq.dev.cool.team


http://www.kler.cn/a/534697.html

相关文章:

  • 2.3.3 数据类型的转换与强制类型转换
  • langchain教程-5.DocumentLoader/多种文档加载器
  • axios如何利用promise无痛刷新token
  • JavaScript前后端交互-AJAX/fetch
  • 日期选择控件,时间跨度最大一年。
  • 6 [新一代Github投毒针对网络安全人员钓鱼]
  • PCL 最小包围圆(二维)
  • IEEE 802.3/802.2 | LLC / SNAP
  • 配置Apache本地服务支持PHP8--易错点
  • [创业之路-285]:《产品开发管理-方法.流程.工具 》-1- IPD的功能列表以及导入步骤
  • 【Elasticsearch】Global 聚合
  • 项目练习:SpringSecurity+OAuth2接入gitee的第三方登陆(授权码模式)
  • 二进制/源码编译安装httpd 2.4,提供系统服务管理脚本并测试
  • 简单说一下CAP理论和Base理论
  • 办理CE-notify-body资质流程详细讲解
  • 细说机器学习数学优化之梯度下降
  • Pytorch与大模型有什么关系
  • 当孤独遇上AI:“爱陪伴”如何治愈孤独缓解压力?
  • 如何用hooks实现redux?
  • Java面试题(11) 整理Java面试题及参考答案
  • hot100-day1
  • InDraw绘制的结构式,一键复制到Word里
  • aliyun 的 ip 设置方法
  • Tomcat 的几种部署方式
  • Unity UI Default Shader分析
  • CSS盒模型详解:从零开始理解margin、border、padding