MySQL InnodbCluster(Kubernetes部署)

下载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真的让运维人员省去了很多部署麻烦,当然有些参数的优化还是比较复杂的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容