美文网首页
MySQL InnodbCluster(Kubernetes部署

MySQL InnodbCluster(Kubernetes部署

作者: onmeiei | 来源:发表于2021-12-08 15:21 被阅读0次

    下载crd定义

    下载mysql innodbcluster crd定义 - deploy-crds.yaml

    下载mysql operator定义 - deploy-operator.yaml

    下载完毕后,执行

    $ kubectl apply -f deploy-crds.yaml
    $ kubectl apply -f deploy-operator.yaml
    

    创建本地PV存储

    本地PV存储需要创建多个,以一主二从为例,则需要创建三个,在pv目录中新建三个pv-xxxxx.yaml,以其中一个为例:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-mysql-lthpc
      labels:
        # 重要,innodb选择pv时使用
        pv: pv-mysql
    spec:
      capacity:
        storage: 10Gi
      volumeMode: Filesystem
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Delete
      storageClassName: local-storage
      local:
        # 实际存储路径
        path: /k8s-pv/mysql
      nodeAffinity:
        required:
          # 选择分配的节点
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - lthpc
    

    通过以下命令进行创建:

    $ kubectl apply -f pv/
    

    创建innodb cluster集群,一主二从

    innodbcluster集群定义文件mysql-cluster.yaml的内容如下:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: database
    ---
    apiVersion: v1
    data:
      # root授权的host,此处为“%”
      rootHost: JQ==
      # root的密码,此处为“mypass”
      rootPassword: bXlwYXNzCg==
      # root的用户名,此处为“root”
      rootUser: cm9vdA==
    kind: Secret
    metadata:
      name: mypwds
      namespace: database
    ---
    apiVersion: mysql.oracle.com/v2alpha1
    kind: InnoDBCluster
    metadata:
      name: mysql-cluster
      namespace: database
    spec:
      secretName: mypwds
      # mysql innodb 节点数目,3个,一个主节点,两个从节点
      instances: 3
      # router的个数,访问时访问router的service端口即可
      router:
        instances: 1
      datadirVolumeClaimTemplate:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
        storageClassName: 'local-storage'
        selector:
          # 和PV声明中的labels对应
          matchLabels:
            pv: pv-mysql
    

    执行如下命令:

    $ kubectl apply -f mysql-cluster.yaml
    

    总结

    operator真的让运维人员省去了很多部署麻烦,当然有些参数的优化还是比较复杂的。

    相关文章

      网友评论

          本文标题:MySQL InnodbCluster(Kubernetes部署

          本文链接:https://www.haomeiwen.com/subject/jojtfrtx.html