kubernetes 部署 rocketmq 集群

以下所用到的文件皆在: https://gitee.com/glnp/docker-case.git

介绍

详细介绍查看rocketmq 介绍和容器部署

本案例部署的是RocketMQ的"双主双从+同步模式",涉及6个pod:

  • broker-a 主1
  • broker-b 主2
  • broker-a-s 从1
  • broker-a-s 从2
  • NameServer(注册中心)
  • rocketmq-externals(可视化web界面)

部署过程记录

准备nfs-client-provisioner

编写脚本安装nfs

#! /usr/bin/env python3
import platform
import os
import stat

def init_nfs():
    '''
    :param nfs_str: nfs 中共享挂载路径参数
    '''
    nfs_str="/data/nfs   *(rw,sync,no_root_squash,no_subtree_check)"
    with open('/etc/exports','w',encoding='utf8') as n:
        n.write(nfs_str)

    if not os.path.exists('/data/nfs'):
        '''
        :param exisk_ok: 如果为真执行 -p 操作
        '''
        os.makedirs('/data/nfs',exist_ok=True)    # 如果指定的路径不存在,新建

    # 授权,相当于执行 --> chmod 777 /data/nfs
    os.chmod('/data/nfs',stat.S_IRWXU+stat.S_IRWXG+stat.S_IRWXO)

def main():
    '''
    :param system_type: 操作系统类型 例: ubuntu | centos 
    '''
    system_type=platform.uname().version.lower()
    if 'ubuntu' in system_type:
        #安装nfs
        os.system('apt install -y nfs-kernel-server rpcbind')
        init_nfs()
        # 启动&开机自启
        os.system('systemctl start rpcbind && systemctl start nfs-kernel-server.service')
        #如果未启动成功,请手动执行: /etc/init.d/nfs-kernel-server restart
        os.system('systemctl enable rpcbind && systemctl enable nfs-kernel-server.service')
    elif 'centos' in system_type:
        #安装nfs
        os.system('yum install -y nfs-utils rpcbind')
        init_nfs()
        # 启动&开机自启
        os.system('systemctl start rpcbind && systemctl start nfs-server')
        os.system('systemctl enable rpcbind && systemctl enable nfs-server')

if __name__=='__main__':
    main()

安装

python3 init_nfs.py

创建 rbac

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-provisioner
  namespace: default
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
   name: nfs-provisioner-runner
   namespace: default
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: ["watch", "create", "update", "patch"]
   -  apiGroups: [""]
      resources: ["services", "endpoints"]
      verbs: ["get","create","list", "watch","update"]
   -  apiGroups: ["extensions"]
      resources: ["podsecuritypolicies"]
      resourceNames: ["nfs-provisioner"]
      verbs: ["use"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-provisioner
    namespace: default
roleRef:
  kind: ClusterRole
  name: nfs-provisioner-runner
  apiGroup: rbac.authorization.k8s.io

部署,查看

kubetcl nfs-rbac.yaml
#查看
kubectl get sa
NAME              SECRETS   AGE
default           1         37d
nfs-provisioner   1         19s

创建storageclass

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-storage
  namespace: default
  annotations:
    storageclass.kubernetes.io/is-default-class: "false"  ## 是否设置为默认的storageclass
provisioner: nfs-client                                   ## 动态卷分配者名称,必须和上面创建的"provisioner"变量中设置的Name一致
reclaimPolicy: Retain                                     ## 指定回收政策,storage 默认为 Delete

部署,查看

kubectl apply  -f  nfs-storageclass.yaml 
#查看
kubectl get sc
NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path (default)   rancher.io/local-path   Delete          WaitForFirstConsumer   false                  37d
nfs-storage            nfs-client              Retain          Immediate              false                  14s

创建nfs-client-provisioner

项目仓库地址: https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值