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

推荐订阅源

T
Tenable Blog
K
Kaspersky official blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
The Exploit Database - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog
P
Palo Alto Networks Blog
Latest news
Latest news
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy International News Feed
The Hacker News
The Hacker News
T
Tor Project blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园_首页
N
News and Events Feed by Topic
W
WeLiveSecurity
罗磊的独立博客
GbyAI
GbyAI
T
Troy Hunt's Blog
Y
Y Combinator Blog
Recorded Future
Recorded Future
The Cloudflare Blog
TaoSecurity Blog
TaoSecurity Blog
爱范儿
爱范儿
美团技术团队
Attack and Defense Labs
Attack and Defense Labs
C
Check Point Blog
Engineering at Meta
Engineering at Meta
Cyberwarzone
Cyberwarzone
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
Know Your Adversary
Know Your Adversary
AWS News Blog
AWS News Blog
D
DataBreaches.Net
Recent Announcements
Recent Announcements
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
Webroot Blog
Webroot Blog
Security Latest
Security Latest
T
Tailwind CSS Blog
V2EX - 技术
V2EX - 技术
aimingoo的专栏
aimingoo的专栏
S
Security @ Cisco Blogs
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed

jobcher on 打工人日志

2023-12-21 打工人日报 2023-12-20 打工人日报 2023-12-19 打工人日报 2023-12-18 打工人日报 2023-12-17 打工人日报 2023-12-16 打工人日报 2023-12-15 打工人日报 2023-12-14 打工人日报 2023-12-13 打工人日报 2023-12-12 打工人日报 2023-12-11 打工人日报 2023-12-10 打工人日报 2023-12-09 打工人日报 2023-12-08 打工人日报 2023-12-07 打工人日报 2023-12-06 打工人日报 2023-12-05 打工人日报 2023-12-04 打工人日报 2023-12-03 打工人日报 2023-12-02 打工人日报 2023-12-01 打工人日报 2023-11-30 打工人日报 2023-11-29 打工人日报 2023-11-28 打工人日报 2023-11-27 打工人日报 2023-11-26 打工人日报 2023-11-25 打工人日报 2023-11-24 打工人日报 2023-11-23 打工人日报 2023-11-22 打工人日报 2023-11-21 打工人日报 2023-11-20 打工人日报 2023-11-19 打工人日报 2023-11-17 打工人日报 2023-11-16 打工人日报 2023-11-15 打工人日报 2023-11-14 打工人日报 2023-11-13 打工人日报 2023-11-12 打工人日报 2023-11-11 打工人日报 2023-11-10 打工人日报 2023-11-09 打工人日报 2023-11-08 打工人日报 2023-11-07 打工人日报 2023-11-06 打工人日报 2023-11-05 打工人日报 2023-11-04 打工人日报 2023-11-03 打工人日报 2023-11-02 打工人日报 2023-11-01 打工人日报 2023-10-31 打工人日报 2023-10-30 打工人日报 2023-10-29 打工人日报 2023-10-28 打工人日报 2023-10-27 打工人日报 2023-10-26 打工人日报 2023-10-25 打工人日报 2023-10-24 打工人日报 2023-10-23 打工人日报 2023-10-22 打工人日报 2023-10-21 打工人日报 2023-10-20 打工人日报 2023-10-19 打工人日报 2023-10-18 打工人日报 2023-10-17 打工人日报 2023-10-16 打工人日报 2023-10-15 打工人日报 2023-10-14 打工人日报 2023-10-13 打工人日报 2023-10-12 打工人日报 2023-10-11 打工人日报 2023-10-10 打工人日报 2023-10-09 打工人日报 2023-10-07 打工人日报 2023-10-06 打工人日报 2023-10-05 打工人日报 2023-10-04 打工人日报 2023-10-03 打工人日报 2023-10-02 打工人日报 2023-10-01 打工人日报 2023-09-30 打工人日报 2023-09-29 打工人日报 2023-09-28 打工人日报 2023-09-27 打工人日报 2023-09-26 打工人日报 2023-09-25 打工人日报 2023-09-24 打工人日报 2023-09-23 打工人日报 2023-09-22 打工人日报 2023-09-21 打工人日报 2023-09-20 打工人日报 2023-09-19 打工人日报 2023-09-18 打工人日报 2023-09-17 打工人日报 2023-09-16 打工人日报 2023-09-15 打工人日报 2023-09-14 打工人日报 2023-09-13 打工人日报 2023-09-12 打工人日报 2023-09-11 打工人日报
RocketMQ k8s部署 4主4从集群
2022-08-29 · via jobcher 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

部署服务