惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Martin Fowler
Martin Fowler
Schneier on Security
Schneier on Security
S
Schneier on Security
A
Arctic Wolf
L
LangChain Blog
T
Threatpost
GbyAI
GbyAI
V2EX - 技术
V2EX - 技术
Jina AI
Jina AI
U
Unit 42
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
Spread Privacy
Spread Privacy
F
Fortinet All Blogs
Y
Y Combinator Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
F
Full Disclosure
博客园 - 【当耐特】
S
Secure Thoughts
美团技术团队
N
News | PayPal Newsroom
爱范儿
爱范儿
Latest news
Latest news
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
S
Security @ Cisco Blogs
V
V2EX
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
腾讯CDC
The Hacker News
The Hacker News
V
Vulnerabilities – Threatpost
Cyberwarzone
Cyberwarzone
Google Online Security Blog
Google Online Security Blog
N
Netflix TechBlog - Medium
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Last Watchdog
The Last Watchdog
N
News and Events Feed by Topic
T
Tor Project blog
博客园 - 三生石上(FineUI控件)
Security Archives - TechRepublic
Security Archives - TechRepublic
大猫的无限游戏
大猫的无限游戏
Security Latest
Security Latest

博客 on 打工人日志

k8s RKE2 cilium L2 + envoy gateway 安装配置 k8s RKE2 vSphere 存储配置 OpenClaw 全能指南:从安装到进阶自动化实战 (2026 最终版) Kubernetes — skywalking + banyanDB APM监控部署 Kubernetes — promtail + loki + grafana 日志系统部署 k8s master 节点 Unauthorized Kubernetes — metalLB + Traefik 部署 Kubernetes — SSL 证书自动更新 Kubernetes — RKE2 + kube-vip + cilium 部署 使用TLSv1.3 升级nginx和openssl Proxmox VE(PVE) 更新到最新版本 kindle 邮件发送失败,错误代码E999 metallb + ingress-nginx + argocd 本地部署 iStoreOS(旁路由)使用openclash实现dns劫持 异常流量分析:图片库服务黑客入侵 openwrt 硬盘扩容 搭建ip地址检索服务 Kubernetes — k8s 手动安装 1.17.9 SELinux 问题:导致端口无法创建,无法访问 【福利】免费!本地部署!去除视频中移动的物体 通知:《打工人日报》迁移到独立板块 KyBook 3 | calibre-web - IOS系统最佳图书伴侣 Tmux 安装和使用教程 DockerHub 加速镜像部署 - 使用cloudflare 代理 docker的零停机部署 SD-webui 批量处理图片 ubuntu 安装 ComfyUI ubuntu 安装 stable-diffusion-webui 测试策略:微服务架构 单元测试:测试单元质量提升 端到端测试:模拟用户体验 Kubernetes — containerd 安装和部署 CI/CD 可观察性-基于grafana Argo cd 安装和部署 linux服务器进程打开文件过多导致服务异常 使用 ElasticSearch Curator 7天定期删除日志 sonarqube docker安装和配置 SSH 通过 443 端口连接 GitHub iOS 17 「待机显示」适配普通 iPhone(非 Pro/Max),屏幕在充电时常亮 GNU/Linux 一键更换系统软件源脚本 解决Elasticsearch索引只读(read-only) 【福利】埃隆·马斯克传 [沃尔特·艾萨克森] 在线下载 【破解】小鹏P5和小鹏G9开启adb和网络adb Kubernetes — kubecost 分析 Kubernetes 成本 3D Gaussian Splatting:3D模型渲染 Linux 系统收包流程以及内核参数优化 2023亚运会电竞门票民购买指南(报名+抽签) Vue3 + vite + nginx项目部署后404问题 大麦抢票辅助软件(福利 TFBOYS十年之约演唱会 2023 全机位 视频) 黑群晖最新安装教程 Ansible部署ceph集群 最好的微信朋友圈集赞神器-福利推荐 推荐一下 容器云资源 2010年的天涯神贴聊房价 如何礼貌回绝不合理的需求 nginx 配置和编译 github 国内代理访问下载 使用scrapy-redis实现增量爬取 逆境和成长-2022年终总结 优雅的使用Conda管理python环境 Jenkins 编译Android apk 流水线 Kubernetes — 更新证书 shell功能脚本集合 Nexus3 使用和部署 githubAction set-output弃用错误 Kubernetes — Rook云存储介绍和部署 Kubernetes — 基于K8S搭建Ceph分布式存储 Kubernetes — 探针和生命周期 Kubernetes — 开放标准(OCI、CRI、CNI、CSI、SMI、CPI)概述 kubernetes 部署插件 (Flannel、Web UI、CoreDNS、Ingress Controller) Cloudflare Zero Trust 内网穿透 k8s CNI 问题 连接认证失效 k8s.gcr.io国内无法连接解决方法 headscale 部署使用 羊了个羊小程序 破解通关 K8S 问题排查:cgroup 内存泄露问题 docker 问题处理 kubernetes 存储 linux服务器 删除空间却未释放 kubernetes 从1.23.x 升级到 1.24.x 编写 kubernetes 资源描述文件 nginx ssh-key connection exception kubernetes manual expansion VSCode插件推荐=> Code Runner ant build.xml 编写 kubernetes 调度过程 记录一次上门打散工 k8s本地联调神器kt-connect Ant中如何添加第三方jar包依赖 OpenELB:让k8s私有环境对外暴露端口 linux 网络测速 安装 docker 出现 ERROR: Unsupported distribution 'ol' 问题 logrotate 日志滚动的使用 nginx 编译参数详解 nginx 重写规则 rewrite模块 nginx.conf 配置文件详解 rsync 文件同步 nginx 日志格式整理 163企业邮箱设置教程 2021年第50周记
RocketMQ k8s部署 4主4从集群
2022-08-29 · via 博客 on 打工人日志

RocketMQ k8s 部署 4 主 4 从集群

使用 NFS 配置 StatefulSet 的动态持久化存储

安装 NFS 服务端

1sudo apt update
2sudo apt install nfs-kernel-server nfs-common

安装 NFS 客户端

所有的节点都得执行

sudo apt install nfs-common -y

创建目录

1mkdir -p /data/storage/k8s/rocketmq

使用 NFS 作为StatefulSet持久化存储的操作记录,分别需要创建nfs-provisionerrbacstorageclassnfs-client-provisionerstatefulsetpod

创建 nfs 的 rbac

 1---
 2apiVersion: v1
 3kind: ServiceAccount
 4metadata:
 5  name: nfs-provisioner
 6  namespace: sanjiang
 7---
 8kind: ClusterRole
 9apiVersion: rbac.authorization.k8s.io/v1
10metadata:
11  name: nfs-provisioner-runner
12  namespace: sanjiang
13rules:
14  - apiGroups: [""]
15    resources: ["persistentvolumes"]
16    verbs: ["get", "list", "watch", "create", "delete"]
17  - apiGroups: [""]
18    resources: ["persistentvolumeclaims"]
19    verbs: ["get", "list", "watch", "update"]
20  - apiGroups: ["storage.k8s.io"]
21    resources: ["storageclasses"]
22    verbs: ["get", "list", "watch"]
23  - apiGroups: [""]
24    resources: ["events"]
25    verbs: ["list", "watch", "create", "update", "patch"]
26  - apiGroups: [""]
27    resources: ["services", "endpoints"]
28    verbs: ["get", "create", "list", "watch", "update"]
29  - apiGroups: ["extensions"]
30    resources: ["podsecuritypolicies"]
31    resourceNames: ["nfs-provisioner"]
32    verbs: ["use"]
33  - apiGroups: [""]
34    resources: ["endpoints"]
35    verbs: ["create", "delete", "get", "list", "watch", "patch", "update"]
36---
37kind: ClusterRoleBinding
38apiVersion: rbac.authorization.k8s.io/v1
39metadata:
40  name: run-nfs-provisioner
41subjects:
42  - kind: ServiceAccount
43    name: nfs-provisioner
44    namespace: sanjiang
45roleRef:
46  kind: ClusterRole
47  name: nfs-provisioner-runner
48  apiGroup: rbac.authorization.k8s.io

kubectl apply -f nfs-rbac.yaml

创建 rocketmq 集群的 storageclass

1apiVersion: storage.k8s.io/v1
2kind: StorageClass
3metadata:
4  name: rocketmq-nfs-storage
5  namespace: sanjiang
6provisioner: rocketmq/nfs
7reclaimPolicy: Retain

kubectl apply -f rocketmq-nfs-class.yaml
查看创建情况
kubectl get sc -n sanjiang

创建 rocketmq 集群的 nfs-client-provisioner

PROVISIONER_NAME的值一定要和StorageClass中的provisioner相等

 1apiVersion: apps/v1
 2kind: Deployment
 3metadata:
 4  name: rocketmq-nfs-client-provisioner
 5  namespace: sanjiang
 6spec:
 7  replicas: 1
 8  selector:
 9    matchLabels:
10      app: rocketmq-nfs-client-provisioner
11  strategy:
12    type: Recreate
13  template:
14    metadata:
15      labels:
16        app: rocketmq-nfs-client-provisioner
17    spec:
18      serviceAccount: nfs-provisioner
19      containers:
20        - name: rocketmq-nfs-client-provisioner
21          image: registry.cn-hangzhou.aliyuncs.com/open-ali/nfs-client-provisioner
22          imagePullPolicy: IfNotPresent
23          volumeMounts:
24            - name: nfs-client-root
25              mountPath: /persistentvolumes
26          env:
27            - name: PROVISIONER_NAME
28              value: rocketmq/nfs
29            - name: NFS_SERVER
30              value: 193.0.40.171 #nfs ip
31            - name: NFS_PATH
32              value: /data/storage/k8s/rocketmq
33      volumes:
34        - name: nfs-client-root
35          nfs:
36            server: 193.0.40.171 #nfs ip
37            path: /data/storage/k8s/rocketmq

kubectl apply -f rocketmq-nfs.yml

k8s 部署

生成文件

broker-a-s.properties

 1brokerClusterName=rocketmq-cluster
 2brokerName=broker-a
 3brokerId=1
 4namesrvAddr=rocketmq-0.rocketmq:9876
 5defaultTopicQueueNums=4
 6autoCreateTopicEnable=true
 7autoCreateSubscriptionGroup=true
 8listenPort=20911
 9deleteWhen=04
10fileReservedTime=120
11mapedFileSizeCommitLog=1073741824
12mapedFileSizeConsumeQueue=300000
13diskMaxUsedSpaceRatio=88
14storePathRootDir=/data/rocketmq/store
15maxMessageSize=65536
16brokerRole=SLAVE
17flushDiskType=SYNC_FLUSH

broker-a.properties

 1brokerClusterName=rocketmq-cluster
 2brokerName=broker-a
 3brokerId=0
 4namesrvAddr=rocketmq-0.rocketmq:9876
 5defaultTopicQueueNums=4
 6autoCreateTopicEnable=true
 7autoCreateSubscriptionGroup=true
 8listenPort=20911
 9deleteWhen=04
10fileReservedTime=120
11mapedFileSizeCommitLog=1073741824
12mapedFileSizeConsumeQueue=300000
13diskMaxUsedSpaceRatio=88
14storePathRootDir=/data/rocketmq/store
15maxMessageSize=65536
16brokerRole=MASTER

broker-b-s.properties

 1brokerClusterName=rocketmq-cluster
 2brokerName=broker-b
 3brokerId=1
 4namesrvAddr=rocketmq-0.rocketmq:9876
 5defaultTopicQueueNums=4
 6autoCreateTopicEnable=true
 7autoCreateSubscriptionGroup=true
 8listenPort=20911
 9deleteWhen=04
10fileReservedTime=120
11mapedFileSizeCommitLog=1073741824
12mapedFileSizeConsumeQueue=300000
13diskMaxUsedSpaceRatio=88
14storePathRootDir=/data/rocketmq/store
15maxMessageSize=65536
16brokerRole=SLAVE
17flushDiskType=SYNC_FLUSH

broker-b.properties

 1brokerClusterName=rocketmq-cluster
 2brokerName=broker-b
 3brokerId=0
 4namesrvAddr=rocketmq-0.rocketmq:9876
 5defaultTopicQueueNums=4
 6autoCreateTopicEnable=true
 7autoCreateSubscriptionGroup=true
 8listenPort=20911
 9deleteWhen=04
10fileReservedTime=120
11mapedFileSizeCommitLog=1073741824
12mapedFileSizeConsumeQueue=300000
13diskMaxUsedSpaceRatio=88
14storePathRootDir=/data/rocketmq/store
15maxMessageSize=65536
16brokerRole=MASTER
17flushDiskType=SYNC_FLUSH

broker-c-s.properties

 1brokerClusterName=rocketmq-cluster
 2brokerName=broker-c
 3brokerId=1
 4namesrvAddr=rocketmq-0.rocketmq:9876
 5defaultTopicQueueNums=4
 6autoCreateTopicEnable=true
 7autoCreateSubscriptionGroup=true
 8listenPort=20911
 9deleteWhen=04
10fileReservedTime=120
11mapedFileSizeCommitLog=1073741824
12mapedFileSizeConsumeQueue=300000
13diskMaxUsedSpaceRatio=88
14storePathRootDir=/data/rocketmq/store
15maxMessageSize=65536
16brokerRole=SLAVE
17flushDiskType=SYNC_FLUSH

broker-c.properties

 1brokerClusterName=rocketmq-cluster
 2brokerName=broker-c
 3brokerId=0
 4namesrvAddr=rocketmq-0.rocketmq:9876
 5defaultTopicQueueNums=4
 6autoCreateTopicEnable=true
 7autoCreateSubscriptionGroup=true
 8listenPort=20911
 9deleteWhen=04
10fileReservedTime=120
11mapedFileSizeCommitLog=1073741824
12mapedFileSizeConsumeQueue=300000
13diskMaxUsedSpaceRatio=88
14storePathRootDir=/data/rocketmq/store
15maxMessageSize=65536
16brokerRole=MASTER
17flushDiskType=SYNC_FLUSH

broker-d-s.properties

 1brokerClusterName=rocketmq-cluster
 2brokerName=broker-d
 3brokerId=1
 4namesrvAddr=rocketmq-0.rocketmq:9876
 5defaultTopicQueueNums=4
 6autoCreateTopicEnable=true
 7autoCreateSubscriptionGroup=true
 8listenPort=20911
 9deleteWhen=04
10fileReservedTime=120
11mapedFileSizeCommitLog=1073741824
12mapedFileSizeConsumeQueue=300000
13diskMaxUsedSpaceRatio=88
14storePathRootDir=/data/rocketmq/store
15maxMessageSize=65536
16brokerRole=SLAVE
17flushDiskType=SYNC_FLUSH

broker-d.properties

 1brokerClusterName=rocketmq-cluster
 2brokerName=broker-d
 3brokerId=0
 4namesrvAddr=rocketmq-0.rocketmq:9876
 5defaultTopicQueueNums=4
 6autoCreateTopicEnable=true
 7autoCreateSubscriptionGroup=true
 8listenPort=20911
 9deleteWhen=04
10fileReservedTime=120
11mapedFileSizeCommitLog=1073741824
12mapedFileSizeConsumeQueue=300000
13diskMaxUsedSpaceRatio=88
14storePathRootDir=/data/rocketmq/store
15maxMessageSize=65536
16brokerRole=MASTER
17flushDiskType=SYNC_FLUSH

运行命令

1kubectl create cm rocketmq-config --from-file=broker-a.properties --from-file=broker-a-s.properties --from-file=broker-b.properties --from-file=broker-b-s.properties --from-file=broker-c.properties --from-file=broker-c-s.properties --from-file=broker-d.properties --from-file=broker-d-s.properties -n sanjiang

kubectl get cm -n sanjiang|grep rocketmq

创建配置文件

broker-a-s.yaml

  1apiVersion: v1
  2kind: Service
  3metadata:
  4  labels:
  5    app: broker-a-s
  6  name: broker-a-s
  7  namespace: sanjiang
  8spec:
  9  ports:
 10    - port: 20911
 11      targetPort: 20911
 12      name: broker-port
 13  selector:
 14    app: broker-a-s
 15---
 16apiVersion: apps/v1
 17kind: StatefulSet
 18metadata:
 19  name: broker-a-s
 20  namespace: sanjiang
 21spec:
 22  serviceName: broker-a-s
 23  replicas: 1
 24  selector:
 25    matchLabels:
 26      app: broker-a-s
 27  template:
 28    metadata:
 29      labels:
 30        app: broker-a-s
 31    spec:
 32      affinity:
 33        podAntiAffinity:
 34          requiredDuringSchedulingIgnoredDuringExecution:
 35            - labelSelector:
 36                matchExpressions:
 37                  - key: "app"
 38                    operator: In
 39                    values:
 40                      - broker-a-s
 41              topologyKey: "kubernetes.io/hostname"
 42      containers:
 43        - name: broker-a-s
 44          image: liuyi71sinacom/rocketmq-4.8.0
 45          imagePullPolicy: IfNotPresent
 46          command:
 47            [
 48              "sh",
 49              "-c",
 50              "mqbroker  -c /usr/local/rocketmq-4.8.0/conf/broker-a-s.properties",
 51            ]
 52          env:
 53            - name: JAVA_OPT
 54              value: "-server -XX:ParallelGCThreads=1 -Xms1g -Xmx1g -Xmn512m"
 55              #value: "-XX:MaxRAMPercentage=80.0"
 56          volumeMounts:
 57            - mountPath: /root/logs
 58              name: rocketmq-data
 59              subPath: mq-brokeroptlogs
 60            - mountPath: /data/rocketmq
 61              name: rocketmq-data
 62              subPath: mq-brokeroptstore
 63            - name: broker-config
 64              mountPath: /usr/local/rocketmq-4.8.0/conf/broker-a-s.properties
 65              subPath: broker-a-s.properties
 66          lifecycle:
 67            postStart:
 68              exec:
 69                command: ["/bin/sh", "-c", "touch /tmp/health"]
 70          livenessProbe:
 71            exec:
 72              command: ["test", "-e", "/tmp/health"]
 73            initialDelaySeconds: 5
 74            timeoutSeconds: 5
 75            periodSeconds: 10
 76          readinessProbe:
 77            tcpSocket:
 78              port: 20911
 79            initialDelaySeconds: 15
 80            timeoutSeconds: 5
 81            periodSeconds: 20
 82      volumes:
 83        - name: broker-config
 84          configMap:
 85            name: rocketmq-config
 86            items:
 87              - key: broker-a-s.properties
 88                path: broker-a-s.properties
 89  volumeClaimTemplates:
 90    - metadata:
 91        name: rocketmq-data
 92        namespace: sanjiang
 93        annotations:
 94          volume.beta.kubernetes.io/storage-class: "rocketmq-nfs-storage"
 95      spec:
 96        accessModes:
 97          - ReadWriteMany
 98        resources:
 99          requests:
100            storage: 2Gi
101---
102apiVersion: v1
103kind: PersistentVolume
104metadata:
105  name: broker-a-s-pv
106  namespace: sanjiang
107spec:
108  accessModes:
109    - ReadWriteMany
110  capacity:
111    storage: 2Gi
112  persistentVolumeReclaimPolicy: Retain
113  storageClassName: rocketmq-nfs-storage
114  nfs:
115    path: /data/storage/k8s/rocketmq/broker-a-s
116    server: 193.0.40.171

broker-a.yaml

  1apiVersion: v1
  2kind: Service
  3metadata:
  4  labels:
  5    app: broker-a
  6  name: broker-a
  7  namespace: sanjiang
  8spec:
  9  ports:
 10    - port: 20911
 11      targetPort: 20911
 12      name: broker-port
 13  selector:
 14    app: broker-a
 15---
 16apiVersion: apps/v1
 17kind: StatefulSet
 18metadata:
 19  name: broker-a
 20  namespace: sanjiang
 21spec:
 22  serviceName: broker-a
 23  replicas: 1
 24  selector:
 25    matchLabels:
 26      app: broker-a
 27  template:
 28    metadata:
 29      labels:
 30        app: broker-a
 31    spec:
 32      affinity:
 33        podAntiAffinity:
 34          requiredDuringSchedulingIgnoredDuringExecution:
 35            - labelSelector:
 36                matchExpressions:
 37                  - key: "app"
 38                    operator: In
 39                    values:
 40                      - broker-a
 41              topologyKey: "kubernetes.io/hostname"
 42      containers:
 43        - name: broker-a
 44          image: liuyi71sinacom/rocketmq-4.8.0
 45          imagePullPolicy: IfNotPresent
 46          command:
 47            [
 48              "sh",
 49              "-c",
 50              "mqbroker  -c /usr/local/rocketmq-4.8.0/conf/broker-a.properties",
 51            ]
 52          env:
 53            - name: JAVA_OPT
 54              value: "-server -XX:ParallelGCThreads=1 -Xms1g -Xmx1g -Xmn512m"
 55              #value: "-XX:MaxRAMPercentage=80.0"
 56          volumeMounts:
 57            - mountPath: /root/logs
 58              name: rocketmq-data
 59              subPath: mq-brokeroptlogs
 60            - mountPath: /data/rocketmq
 61              name: rocketmq-data
 62              subPath: mq-brokeroptstore
 63            - name: broker-config
 64              mountPath: /usr/local/rocketmq-4.8.0/conf/broker-a.properties
 65              subPath: broker-a.properties
 66          lifecycle:
 67            postStart:
 68              exec:
 69                command: ["/bin/sh", "-c", "touch /tmp/health"]
 70          livenessProbe:
 71            exec:
 72              command: ["test", "-e", "/tmp/health"]
 73            initialDelaySeconds: 5
 74            timeoutSeconds: 5
 75            periodSeconds: 10
 76          readinessProbe:
 77            tcpSocket:
 78              port: 20911
 79            initialDelaySeconds: 15
 80            timeoutSeconds: 5
 81            periodSeconds: 20
 82      volumes:
 83        - name: broker-config
 84          configMap:
 85            name: rocketmq-config
 86  volumeClaimTemplates:
 87    - metadata:
 88        name: rocketmq-data
 89        namespace: sanjiang
 90        annotations:
 91          volume.beta.kubernetes.io/storage-class: "rocketmq-nfs-storage"
 92      spec:
 93        accessModes:
 94          - ReadWriteMany
 95        resources:
 96          requests:
 97            storage: 2Gi
 98---
 99apiVersion: v1
100kind: PersistentVolume
101metadata:
102  name: broker-a-pv
103  namespace: sanjiang
104spec:
105  accessModes:
106    - ReadWriteMany
107  capacity:
108    storage: 2Gi
109  persistentVolumeReclaimPolicy: Retain
110  storageClassName: rocketmq-nfs-storage
111  nfs:
112    path: /data/storage/k8s/rocketmq/broker-a
113    server: 193.0.40.171

broker-b-s.yaml

  1apiVersion: v1
  2kind: Service
  3metadata:
  4  labels:
  5    app: broker-b-s
  6  name: broker-b-s
  7  namespace: sanjiang
  8spec:
  9  ports:
 10    - port: 20911
 11      targetPort: 20911
 12      name: broker-port
 13  selector:
 14    app: broker-b-s
 15---
 16apiVersion: apps/v1
 17kind: StatefulSet
 18metadata:
 19  name: broker-b-s
 20  namespace: sanjiang
 21spec:
 22  serviceName: broker-b-s
 23  replicas: 1
 24  selector:
 25    matchLabels:
 26      app: broker-b-s
 27  template:
 28    metadata:
 29      labels:
 30        app: broker-b-s
 31    spec:
 32      affinity:
 33        podAntiAffinity:
 34          requiredDuringSchedulingIgnoredDuringExecution:
 35            - labelSelector:
 36                matchExpressions:
 37                  - key: "app"
 38                    operator: In
 39                    values:
 40                      - broker-b-s
 41              topologyKey: "kubernetes.io/hostname"
 42      containers:
 43        - name: broker-b-s
 44          image: liuyi71sinacom/rocketmq-4.8.0
 45          imagePullPolicy: IfNotPresent
 46          command:
 47            [
 48              "sh",
 49              "-c",
 50              "mqbroker -c /usr/local/rocketmq-4.8.0/conf/broker-b-s.properties",
 51            ]
 52          env:
 53            - name: JAVA_OPT
 54              value: "-server -XX:ParallelGCThreads=1 -Xms1g -Xmx1g -Xmn512m"
 55              #value: "-XX:MaxRAMPercentage=80.0"
 56          volumeMounts:
 57            - mountPath: /root/logs
 58              name: rocketmq-data
 59              subPath: mq-brokeroptlogs
 60            - mountPath: /data/rocketmq
 61              name: rocketmq-data
 62              subPath: mq-brokeroptstore
 63            - name: broker-config
 64              mountPath: /usr/local/rocketmq-4.8.0/conf/broker-b-s.properties
 65              subPath: broker-b-s.properties
 66          lifecycle:
 67            postStart:
 68              exec:
 69                command: ["/bin/sh", "-c", "touch /tmp/health"]
 70          livenessProbe:
 71            exec:
 72              command: ["test", "-e", "/tmp/health"]
 73            initialDelaySeconds: 5
 74            timeoutSeconds: 5
 75            periodSeconds: 10
 76          readinessProbe:
 77            tcpSocket:
 78              port: 20911
 79            initialDelaySeconds: 15
 80            timeoutSeconds: 5
 81            periodSeconds: 20
 82      volumes:
 83        - name: broker-config
 84          configMap:
 85            name: rocketmq-config
 86            items:
 87              - key: broker-b-s.properties
 88                path: broker-b-s.properties
 89  volumeClaimTemplates:
 90    - metadata:
 91        name: rocketmq-data
 92        namespace: sanjiang
 93        annotations:
 94          volume.beta.kubernetes.io/storage-class: "rocketmq-nfs-storage"
 95      spec:
 96        accessModes:
 97          - ReadWriteMany
 98        resources:
 99          requests:
100            storage: 2Gi
101---
102apiVersion: v1
103kind: PersistentVolume
104metadata:
105  name: broker-b-s-pv
106  namespace: sanjiang
107spec:
108  accessModes:
109    - ReadWriteMany
110  capacity:
111    storage: 2Gi
112  persistentVolumeReclaimPolicy: Retain
113  storageClassName: rocketmq-nfs-storage
114  nfs:
115    path: /data/storage/k8s/rocketmq/broker-b-s
116    server: 193.0.40.171

broker-b.yaml

  1apiVersion: v1
  2kind: Service
  3metadata:
  4  labels:
  5    app: broker-b
  6  name: broker-b
  7  namespace: sanjiang
  8spec:
  9  ports:
 10    - port: 20911
 11      targetPort: 20911
 12      name: broker-port
 13  selector:
 14    app: broker-b
 15---
 16apiVersion: apps/v1
 17kind: StatefulSet
 18metadata:
 19  name: broker-b
 20  namespace: sanjiang
 21spec:
 22  serviceName: broker-b
 23  replicas: 1
 24  selector:
 25    matchLabels:
 26      app: broker-b
 27  template:
 28    metadata:
 29      labels:
 30        app: broker-b
 31    spec:
 32      affinity:
 33        podAntiAffinity:
 34          requiredDuringSchedulingIgnoredDuringExecution:
 35            - labelSelector:
 36                matchExpressions:
 37                  - key: "app"
 38                    operator: In
 39                    values:
 40                      - broker-b
 41              topologyKey: "kubernetes.io/hostname"
 42      containers:
 43        - name: broker-b
 44          image: liuyi71sinacom/rocketmq-4.8.0
 45          imagePullPolicy: IfNotPresent
 46          command:
 47            [
 48              "sh",
 49              "-c",
 50              "mqbroker  -c /usr/local/rocketmq-4.8.0/conf/broker-b.properties",
 51            ]
 52          env:
 53            - name: JAVA_OPT
 54              value: "-server -XX:ParallelGCThreads=1 -Xms1g -Xmx1g -Xmn512m"
 55              #value: "-XX:MaxRAMPercentage=80.0"
 56          volumeMounts:
 57            - mountPath: /root/logs
 58              name: rocketmq-data
 59              subPath: mq-brokeroptlogs
 60            - mountPath: /data/rocketmq
 61              name: rocketmq-data
 62              subPath: mq-brokeroptstore
 63            - name: broker-config
 64              mountPath: /usr/local/rocketmq-4.8.0/conf/broker-b.properties
 65              subPath: broker-b.properties
 66          lifecycle:
 67            postStart:
 68              exec:
 69                command: ["/bin/sh", "-c", "touch /tmp/health"]
 70          livenessProbe:
 71            exec:
 72              command: ["test", "-e", "/tmp/health"]
 73            initialDelaySeconds: 5
 74            timeoutSeconds: 5
 75            periodSeconds: 10
 76          readinessProbe:
 77            tcpSocket:
 78              port: 20911
 79            initialDelaySeconds: 15
 80            timeoutSeconds: 5
 81            periodSeconds: 20
 82      volumes:
 83        - name: broker-config
 84          configMap:
 85            name: rocketmq-config
 86  volumeClaimTemplates:
 87    - metadata:
 88        name: rocketmq-data
 89        namespace: sanjiang
 90        annotations:
 91          volume.beta.kubernetes.io/storage-class: "rocketmq-nfs-storage"
 92      spec:
 93        accessModes:
 94          - ReadWriteMany
 95        resources:
 96          requests:
 97            storage: 2Gi
 98---
 99apiVersion: v1
100kind: PersistentVolume
101metadata:
102  name: broker-b-pv
103  namespace: sanjiang
104spec:
105  accessModes:
106    - ReadWriteMany
107  capacity:
108    storage: 2Gi
109  persistentVolumeReclaimPolicy: Retain
110  storageClassName: rocketmq-nfs-storage
111  nfs:
112    path: /data/storage/k8s/rocketmq/broker-b
113    server: 193.0.40.171

broker-c-s.yaml

  1apiVersion: v1
  2kind: Service
  3metadata:
  4  labels:
  5    app: broker-c-s
  6  name: broker-c-s
  7  namespace: sanjiang
  8spec:
  9  ports:
 10    - port: 20911
 11      targetPort: 20911
 12      name: broker-port
 13  selector:
 14    app: broker-c-s
 15---
 16apiVersion: apps/v1
 17kind: StatefulSet
 18metadata:
 19  name: broker-c-s
 20  namespace: sanjiang
 21spec:
 22  serviceName: broker-c-s
 23  replicas: 1
 24  selector:
 25    matchLabels:
 26      app: broker-c-s
 27  template:
 28    metadata:
 29      labels:
 30        app: broker-c-s
 31    spec:
 32      affinity:
 33        podAntiAffinity:
 34          requiredDuringSchedulingIgnoredDuringExecution:
 35            - labelSelector:
 36                matchExpressions:
 37                  - key: "app"
 38                    operator: In
 39                    values:
 40                      - broker-c-s
 41              topologyKey: "kubernetes.io/hostname"
 42      containers:
 43        - name: broker-c-s
 44          image: liuyi71sinacom/rocketmq-4.8.0
 45          imagePullPolicy: IfNotPresent
 46          command:
 47            [
 48              "sh",
 49              "-c",
 50              "mqbroker  -c /usr/local/rocketmq-4.8.0/conf/broker-c-s.properties",
 51            ]
 52          env:
 53            - name: JAVA_OPT
 54              value: "-server -XX:ParallelGCThreads=1 -Xms1g -Xmx1g -Xmn512m"
 55              #value: "-XX:MaxRAMPercentage=80.0"
 56          volumeMounts:
 57            - mountPath: /root/logs
 58              name: rocketmq-data
 59              subPath: mq-brokeroptlogs
 60            - mountPath: /data/rocketmq
 61              name: rocketmq-data
 62              subPath: mq-brokeroptstore
 63            - name: broker-config
 64              mountPath: /usr/local/rocketmq-4.8.0/conf/broker-c-s.properties
 65              subPath: broker-c-s.properties
 66          lifecycle:
 67            postStart:
 68              exec:
 69                command: ["/bin/sh", "-c", "touch /tmp/health"]
 70          livenessProbe:
 71            exec:
 72              command: ["test", "-e", "/tmp/health"]
 73            initialDelaySeconds: 5
 74            timeoutSeconds: 5
 75            periodSeconds: 10
 76          readinessProbe:
 77            tcpSocket:
 78              port: 20911
 79            initialDelaySeconds: 15
 80            timeoutSeconds: 5
 81            periodSeconds: 20
 82      volumes:
 83        - name: broker-config
 84          configMap:
 85            name: rocketmq-config
 86            items:
 87              - key: broker-c-s.properties
 88                path: broker-c-s.properties
 89  volumeClaimTemplates:
 90    - metadata:
 91        name: rocketmq-data
 92        namespace: sanjiang
 93        annotations:
 94          volume.beta.kubernetes.io/storage-class: "rocketmq-nfs-storage"
 95      spec:
 96        accessModes:
 97          - ReadWriteMany
 98        resources:
 99          requests:
100            storage: 2Gi
101---
102apiVersion: v1
103kind: PersistentVolume
104metadata:
105  name: broker-c-s-pv
106  namespace: sanjiang
107spec:
108  accessModes:
109    - ReadWriteMany
110  capacity:
111    storage: 2Gi
112  persistentVolumeReclaimPolicy: Retain
113  storageClassName: rocketmq-nfs-storage
114  nfs:
115    path: /data/storage/k8s/rocketmq/broker-c-s
116    server: 193.0.40.171

broker-c.yaml

  1apiVersion: v1
  2kind: Service
  3metadata:
  4  labels:
  5    app: broker-c
  6  name: broker-c
  7  namespace: sanjiang
  8spec:
  9  ports:
 10    - port: 20911
 11      targetPort: 20911
 12      name: broker-port
 13  selector:
 14    app: broker-c
 15---
 16apiVersion: apps/v1
 17kind: StatefulSet
 18metadata:
 19  name: broker-c
 20  namespace: sanjiang
 21spec:
 22  serviceName: broker-c
 23  replicas: 1
 24  selector:
 25    matchLabels:
 26      app: broker-c
 27  template:
 28    metadata:
 29      labels:
 30        app: broker-c
 31    spec:
 32      affinity:
 33        podAntiAffinity:
 34          requiredDuringSchedulingIgnoredDuringExecution:
 35            - labelSelector:
 36                matchExpressions:
 37                  - key: "app"
 38                    operator: In
 39                    values:
 40                      - broker-c
 41              topologyKey: "kubernetes.io/hostname"
 42      containers:
 43        - name: broker-c
 44          image: liuyi71sinacom/rocketmq-4.8.0
 45          imagePullPolicy: IfNotPresent
 46          command:
 47            [
 48              "sh",
 49              "-c",
 50              "mqbroker  -c /usr/local/rocketmq-4.8.0/conf/broker-c.properties",
 51            ]
 52          env:
 53            - name: JAVA_OPT
 54              value: "-server -XX:ParallelGCThreads=1 -Xms1g -Xmx1g -Xmn512m"
 55              #value: "-XX:MaxRAMPercentage=80.0"
 56          volumeMounts:
 57            - mountPath: /root/logs
 58              name: rocketmq-data
 59              subPath: mq-brokeroptlogs
 60            - mountPath: /data/rocketmq
 61              name: rocketmq-data
 62              subPath: mq-brokeroptstore
 63            - name: broker-config
 64              mountPath: /usr/local/rocketmq-4.8.0/conf/broker-c.properties
 65              subPath: broker-c.properties
 66          lifecycle:
 67            postStart:
 68              exec:
 69                command: ["/bin/sh", "-c", "touch /tmp/health"]
 70          livenessProbe:
 71            exec:
 72              command: ["test", "-e", "/tmp/health"]
 73            initialDelaySeconds: 5
 74            timeoutSeconds: 5
 75            periodSeconds: 10
 76          readinessProbe:
 77            tcpSocket:
 78              port: 20911
 79            initialDelaySeconds: 15
 80            timeoutSeconds: 5
 81            periodSeconds: 20
 82      volumes:
 83        - name: broker-config
 84          configMap:
 85            name: rocketmq-config
 86  volumeClaimTemplates:
 87    - metadata:
 88        name: rocketmq-data
 89        namespace: sanjiang
 90        annotations:
 91          volume.beta.kubernetes.io/storage-class: "rocketmq-nfs-storage"
 92      spec:
 93        accessModes:
 94          - ReadWriteMany
 95        resources:
 96          requests:
 97            storage: 2Gi
 98---
 99apiVersion: v1
100kind: PersistentVolume
101metadata:
102  name: broker-c-pv
103  namespace: sanjiang
104spec:
105  accessModes:
106    - ReadWriteMany
107  capacity:
108    storage: 2Gi
109  persistentVolumeReclaimPolicy: Retain
110  storageClassName: rocketmq-nfs-storage
111  nfs:
112    path: /data/storage/k8s/rocketmq/broker-c
113    server: 193.0.40.171

broker-d-s.yaml

  1apiVersion: v1
  2kind: Service
  3metadata:
  4  labels:
  5    app: broker-d-s
  6  name: broker-d-s
  7  namespace: sanjiang
  8spec:
  9  ports:
 10    - port: 20911
 11      targetPort: 20911
 12      name: broker-port
 13  selector:
 14    app: broker-d-s
 15---
 16apiVersion: apps/v1
 17kind: StatefulSet
 18metadata:
 19  name: broker-d-s
 20  namespace: sanjiang
 21spec:
 22  serviceName: broker-d-s
 23  replicas: 1
 24  selector:
 25    matchLabels:
 26      app: broker-d-s
 27  template:
 28    metadata:
 29      labels:
 30        app: broker-d-s
 31    spec:
 32      affinity:
 33        podAntiAffinity:
 34          requiredDuringSchedulingIgnoredDuringExecution:
 35            - labelSelector:
 36                matchExpressions:
 37                  - key: "app"
 38                    operator: In
 39                    values:
 40                      - broker-d-s
 41              topologyKey: "kubernetes.io/hostname"
 42      containers:
 43        - name: broker-d-s
 44          image: liuyi71sinacom/rocketmq-4.8.0
 45          imagePullPolicy: IfNotPresent
 46          command:
 47            [
 48              "sh",
 49              "-c",
 50              "mqbroker  -c /usr/local/rocketmq-4.8.0/conf/broker-d-s.properties",
 51            ]
 52          env:
 53            - name: JAVA_OPT
 54              value: "-server -XX:ParallelGCThreads=1 -Xms1g -Xmx1g -Xmn512m"
 55              #value: "-XX:MaxRAMPercentage=80.0"
 56          volumeMounts:
 57            - mountPath: /root/logs
 58              name: rocketmq-data
 59              subPath: mq-brokeroptlogs
 60            - mountPath: /data/rocketmq
 61              name: rocketmq-data
 62              subPath: mq-brokeroptstore
 63            - name: broker-config
 64              mountPath: /usr/local/rocketmq-4.8.0/conf/broker-d-s.properties
 65              subPath: broker-d-s.properties
 66          lifecycle:
 67            postStart:
 68              exec:
 69                command: ["/bin/sh", "-c", "touch /tmp/health"]
 70          livenessProbe:
 71            exec:
 72              command: ["test", "-e", "/tmp/health"]
 73            initialDelaySeconds: 5
 74            timeoutSeconds: 5
 75            periodSeconds: 10
 76          readinessProbe:
 77            tcpSocket:
 78              port: 20911
 79            initialDelaySeconds: 15
 80            timeoutSeconds: 5
 81            periodSeconds: 20
 82      volumes:
 83        - name: broker-config
 84          configMap:
 85            name: rocketmq-config
 86            items:
 87              - key: broker-d-s.properties
 88                path: broker-d-s.properties
 89  volumeClaimTemplates:
 90    - metadata:
 91        name: rocketmq-data
 92        namespace: sanjiang
 93        annotations:
 94          volume.beta.kubernetes.io/storage-class: "rocketmq-nfs-storage"
 95      spec:
 96        accessModes:
 97          - ReadWriteMany
 98        resources:
 99          requests:
100            storage: 2Gi
101---
102apiVersion: v1
103kind: PersistentVolume
104metadata:
105  name: broker-d-s-pv
106  namespace: sanjiang
107spec:
108  accessModes:
109    - ReadWriteMany
110  capacity:
111    storage: 2Gi
112  persistentVolumeReclaimPolicy: Retain
113  storageClassName: rocketmq-nfs-storage
114  nfs:
115    path: /data/storage/k8s/rocketmq/broker-d-s
116    server: 193.0.40.171

broker-d.yaml

  1apiVersion: v1
  2kind: Service
  3metadata:
  4  labels:
  5    app: broker-d
  6  name: broker-d
  7  namespace: sanjiang
  8spec:
  9  ports:
 10    - port: 20911
 11      targetPort: 20911
 12      name: broker-port
 13  selector:
 14    app: broker-d
 15---
 16apiVersion: apps/v1
 17kind: StatefulSet
 18metadata:
 19  name: broker-d
 20  namespace: sanjiang
 21spec:
 22  serviceName: broker-d
 23  replicas: 1
 24  selector:
 25    matchLabels:
 26      app: broker-d
 27  template:
 28    metadata:
 29      labels:
 30        app: broker-d
 31    spec:
 32      affinity:
 33        podAntiAffinity:
 34          requiredDuringSchedulingIgnoredDuringExecution:
 35            - labelSelector:
 36                matchExpressions:
 37                  - key: "app"
 38                    operator: In
 39                    values:
 40                      - broker-d
 41              topologyKey: "kubernetes.io/hostname"
 42      containers:
 43        - name: broker-d
 44          image: liuyi71sinacom/rocketmq-4.8.0
 45          imagePullPolicy: IfNotPresent
 46          command:
 47            [
 48              "sh",
 49              "-c",
 50              "mqbroker  -c /usr/local/rocketmq-4.8.0/conf/broker-d.properties",
 51            ]
 52          env:
 53            - name: JAVA_OPT
 54              value: "-server -XX:ParallelGCThreads=1 -Xms1g -Xmx1g -Xmn512m"
 55              #value: "-XX:MaxRAMPercentage=80.0"
 56          volumeMounts:
 57            - mountPath: /root/logs
 58              name: rocketmq-data
 59              subPath: mq-brokeroptlogs
 60            - mountPath: /data/rocketmq
 61              name: rocketmq-data
 62              subPath: mq-brokeroptstore
 63            - name: broker-config
 64              mountPath: /usr/local/rocketmq-4.8.0/conf/broker-d.properties
 65              subPath: broker-d.properties
 66          lifecycle:
 67            postStart:
 68              exec:
 69                command: ["/bin/sh", "-c", "touch /tmp/health"]
 70          livenessProbe:
 71            exec:
 72              command: ["test", "-e", "/tmp/health"]
 73            initialDelaySeconds: 5
 74            timeoutSeconds: 5
 75            periodSeconds: 10
 76          readinessProbe:
 77            tcpSocket:
 78              port: 20911
 79            initialDelaySeconds: 15
 80            timeoutSeconds: 5
 81            periodSeconds: 20
 82      volumes:
 83        - name: broker-config
 84          configMap:
 85            name: rocketmq-config
 86  volumeClaimTemplates:
 87    - metadata:
 88        name: rocketmq-data
 89        namespace: sanjiang
 90        annotations:
 91          volume.beta.kubernetes.io/storage-class: "rocketmq-nfs-storage"
 92      spec:
 93        accessModes:
 94          - ReadWriteMany
 95        resources:
 96          requests:
 97            storage: 2Gi
 98---
 99apiVersion: v1
100kind: PersistentVolume
101metadata:
102  name: broker-d-pv
103  namespace: sanjiang
104spec:
105  accessModes:
106    - ReadWriteMany
107  capacity:
108    storage: 2Gi
109  persistentVolumeReclaimPolicy: Retain
110  storageClassName: rocketmq-nfs-storage
111  nfs:
112    path: /data/storage/k8s/rocketmq/broker-d
113    server: 193.0.40.171

console.yaml

 1apiVersion: apps/v1
 2kind: Deployment
 3metadata:
 4  creationTimestamp: null
 5  labels:
 6    app: console
 7  name: console
 8  namespace: sanjiang
 9spec:
10  replicas: 1
11  selector:
12    matchLabels:
13      app: console
14  strategy: {}
15  template:
16    metadata:
17      creationTimestamp: null
18      labels:
19        app: console
20    spec:
21      containers:
22        - image: styletang/rocketmq-console-ng
23          name: rocketmq-console-ng
24          env:
25            - name: JAVA_OPTS
26              value: "-Drocketmq.namesrv.addr=rocketmq:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
27          resources: {}
28status: {}
29---
30apiVersion: v1
31kind: Service
32metadata:
33  creationTimestamp: null
34  labels:
35    app: console
36  name: console
37  namespace: sanjiang
38spec:
39  ports:
40    - port: 8080
41      protocol: TCP
42      targetPort: 8080
43      nodePort: 32080
44  selector:
45    app: console
46  type: NodePort

namesrv.yaml

 1apiVersion: v1
 2kind: Service
 3metadata:
 4  labels:
 5    app: mq-namesrv
 6  name: rocketmq
 7  namespace: sanjiang
 8spec:
 9  ports:
10    - port: 9876
11      targetPort: 9876
12      nodePort: 32076
13      name: namesrv-port
14  selector:
15    app: mq-namesrv
16  type: NodePort
17---
18apiVersion: apps/v1
19kind: StatefulSet
20metadata:
21  name: rocketmq
22  namespace: sanjiang
23spec:
24  serviceName: rocketmq
25  replicas: 1
26  selector:
27    matchLabels:
28      app: mq-namesrv
29  template:
30    metadata:
31      labels:
32        app: mq-namesrv
33    spec:
34      affinity:
35        podAntiAffinity:
36          requiredDuringSchedulingIgnoredDuringExecution:
37            - labelSelector:
38                matchExpressions:
39                  - key: "app"
40                    operator: In
41                    values:
42                      - mq-namesrv
43              topologyKey: "kubernetes.io/hostname"
44      containers:
45        - name: mq-namesrv
46          image: liuyi71sinacom/rocketmq-4.8.0
47          imagePullPolicy: IfNotPresent
48          command: ["sh", "/usr/local/rocketmq-4.8.0/bin/mqnamesrv"]
49          ports:
50            - containerPort: 9876
51              protocol: TCP
52          env:
53            - name: JAVA_OPT
54              value: "-server -XX:ParallelGCThreads=1 -Xms1g -Xmx1g -Xmn512m"
55              #value: "-XX:MaxRAMPercentage=80.0"
56          lifecycle:
57            postStart:
58              exec:
59                command: ["/bin/sh", "-c", "touch /tmp/health"]
60          livenessProbe:
61            exec:
62              command: ["test", "-e", "/tmp/health"]
63            initialDelaySeconds: 5
64            timeoutSeconds: 5
65            periodSeconds: 10
66          readinessProbe:
67            tcpSocket:
68              port: 9876
69            initialDelaySeconds: 15
70            timeoutSeconds: 5
71            periodSeconds: 20

ingress.yaml

 1apiVersion: extensions/v1beta1
 2kind: Ingress
 3metadata:
 4  name: rocketmq
 5  namespace: sanjiang
 6spec:
 7  ingressClassName: nginx
 8  rules:
 9    - host: mq.sj.com
10      http:
11        paths:
12          - path: /
13            backend:
14              serviceName: console
15              servicePort: 8080

部署服务