k8s 部署单机rocketmq
参考:https://www.cnblogs.com/nuomm/p/17652344.html
1、创建rocketmq需要的pvc,sc根据实际修改。
pvc存储的是rocketmq的nameserver的日志、rocketmq的brocker的数据、dashboard的登录账号密码
vim rocketmq-pvc.yml
--- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: rocketmq-pvc
namespace: nmg-test spec: storageClassName: "nfs-client" accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
kubectl apply -f rocketmq-pvc.yml
2、部署rocketmq的nameserver
部署deployment
vim rocketmq-nameserver-deployment.yml
--- apiVersion: apps/v1 kind: Deployment metadata: labels: app: rocketmq-nameserver k8s.kuboard.cn/layer: cloud name: rocketmq-namesrv namespace: nmg-test spec:
replicas: 1 selector: matchLabels: app: rocketmq-nameserver template: metadata: labels: app: rocketmq-nameserver spec: # nodeName: tjgjc-ai13 containers: - command: - sh - /home/rocketmq/rocketmq-5.3.1/bin/mqnamesrv env: - name: TZ value: Asia/Shanghai - name: JAVA_OPT_EXT value: '-Duser.home=/home/rocketmq -Xms512M -Xmx512M -Xmn128m' - name: autoCreateTopicEnable value: 'true' image: 'apache/rocketmq:5.3.1' imagePullPolicy: IfNotPresent name: rocketmq-nameserver volumeMounts:
- mountPath: /home/rocketmq/logs name: rocketmq-pvc volumes: - name: rocketmq-pvc persistentVolumeClaim: claimName: rocketmq-pvc
kubectl apply -f rocketmq-nameserver-deployment.yml
Service部署
vim rocketmq-nameserver-svc.yml
--- apiVersion: v1 kind: Service metadata: name: rocketmq-nameserver namespace: nmg-test spec: ports: - name: nameserver-port port: 9876 protocol: TCP targetPort: 9876 selector: app: rocketmq-nameserver type: ClusterIP
kubectl apply -f rocketmq-nameserver-svc.yml
此时pv实际存储目录内容

3、部署rocketmq的broker
rocketmq的broker部署到K8s上,需要修改brockerIP1配置。 K8s 中,Broker 可能运行在 Pod 内,需明确指定 Service 或 NodePort 的访问地址。
configmap.yaml如下,需要修改brokerIP1 的值为broker的Service名称。
vim rocketmq-config.yml
--- apiVersion: v1 data: config: |- brokerClusterName = DefaultCluster brokerName = broker-c brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH brokerIP1 = rocketmq-broker kind: ConfigMap metadata: name: roketmq-config namespace: nmg-test
kubectl apply -f rocketmq-config.yml
rocketmq的broker部署的yaml文件如下:
/home/rocketmq/store是数据目录要挂载
vim rocketmq-broker-deployment.yml
--- apiVersion: apps/v1 kind: Deployment metadata: labels: app: rocketmq-broker k8s.kuboard.cn/layer: cloud name: rocketmq-broker namespace: nmg-test spec: selector: matchLabels: app: rocketmq-broker template: metadata: labels: app: rocketmq-broker spec: containers: - command: - sh - /home/rocketmq/rocketmq-5.3.1/bin/mqbroker - '-n' - 'rocketmq-nameserver:9876' - '-c' - /home/rocketmq/rocketmq-5.3.1/conf/broker.conf env: - name: TZ value: Asia/Shanghai - name: JAVA_OPT_EXT value: '-Xms512M -Xmx512M -Xmn128m' - name: NAMESRV_ADDR value: 'rocketmq-nameserver:9876' image: 'apache/rocketmq:5.3.1' imagePullPolicy: IfNotPresent name: rocketmqbroker volumeMounts: - mountPath: /home/rocketmq/rocketmq-5.3.1/conf/broker.conf name: rocketmq-config subPath: broker.conf - mountPath: /home/rocketmq/store name: rocketmq-pvc # nodeName: tjgjc-ai13 restartPolicy: Always volumes: - configMap: defaultMode: 420 items: - key: config path: broker.conf name: roketmq-config name: rocketmq-config - name: rocketmq-pvc persistentVolumeClaim: claimName: rocketmq-pvc
kubectl apply -f rocketmq-broker-deployment.yml
Service部署
vim rocketmq-broker-svc.yml
--- apiVersion: v1 kind: Service metadata: labels: app: rocketmq-broker name: rocketmq-broker namespace: nmg-test spec: ports: - name: broker-port port: 10911 protocol: TCP targetPort: 10911 - name: 7cpk4a port: 10912 protocol: TCP targetPort: 10912 - name: ykdmnd port: 10909 protocol: TCP targetPort: 10909 selector: app: rocketmq-broker sessionAffinity: None type: ClusterIP
kubectl apply -f rocketmq-broker-svc.yml
此时pv实际存储目录内容

4、部署rocketmq-dashboard
在pv的实际存储目录创建users.properties,创建登录账号密码

# 账号=密码,类型 0普通人员 1管理员 admin=sykj@2024,1
deployment部署
vim rocketmq-dashboard-deployment.yml
--- apiVersion: apps/v1 kind: Deployment metadata: labels: app: rocketmq-dashboard name: rocketmq-dashboard namespace: nmg-test spec: selector: matchLabels: app: rocketmq-dashboard template: metadata: labels: app: rocketmq-dashboard spec: containers: - env: - name: TZ value: Asia/Shanghai - name: JAVA_OPTS value: >- -Drocketmq.namesrv.addr=rocketmq-nameserver:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Drocketmq.config.loginRequired=true -Drocketmq.config.dataPath=/rocketmq-dashboard/config image: apacherocketmq/rocketmq-dashboard imagePullPolicy: IfNotPresent name: rocketmq-dashboard volumeMounts: - name: rocketmq-pvc mountPath: /rocketmq-dashboard/config livenessProbe: tcpSocket: port: 8080 volumes: - name: rocketmq-pvc persistentVolumeClaim: claimName: rocketmq-pvc dnsPolicy: ClusterFirst restartPolicy: Always
kubectl apply -f rocketmq-dashboard-deployment.yml
service部署
vim rocketmq-dashboard-svc.yml
--- apiVersion: v1 kind: Service metadata: annotations: k8s.kuboard.cn/workload: rocketmq-dashboard labels: app: rocketmq-dashboard name: rocketmq-dashboard namespace: nmg-test spec: ports: - name: port nodePort: 20880 port: 8080 protocol: TCP targetPort: 8080 selector: app: rocketmq-dashboard type: NodePort
kubectl apply -f rocketmq-dashboard-svc.yml
此时pv实际存储目录内容

5、运行上面的yml文件后访问http://ip:20880登录dashboar

浙公网安备 33010602011771号