本文档主要提供k8s部署的mysql yaml文件,这个只用于自己想要在k8s上部署mysql玩玩的朋友,别拿去生产作孽。下面顺序是先创建config-map,再创建deployment,最后才是service。

deployment文件
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deployment
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
      version: v1
  template:
    metadata:
      labels:
        app: mysql
        version: v1
    spec:
      containers:
        - name: mysql
          image: 你的镜像仓库/mysql:5.7
          volumeMounts: #指定挂载目录
            - name: config-map
              mountPath: "/etc/mysql/my.cnf"
              subPath: my.cnf
          imagePullPolicy: IfNotPresent
          args:
            - --character-set-server=utf8mb4
            - --collation-server=utf8mb4_unicode_ci
          ports:
            - containerPort: 3306
              hostPort: 3306
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: 你的密码
      volumes:
        - name: config-map
          configMap:
            name: mysql-cm
              items:
              - key: my.cnf
                path: my.cnf
service文件

如果集群内其他服务要访问mysql的话,只要配置mysql-service:3306就可以,如果是集群外的话得用IP:30006

apiVersion: v1
kind: Service
metadata:
  name: mysql-service
  namespace: default
  labels:
    app: mysql-service
spec:
  type: NodePort
  ports:
  - port: 3306        #服务监听端口号
    name: http
    targetPort: 3306  #转发到Pod的端口号
    nodePort: 30006   #宿主机对外端口
    protocol: TCP 
  selector:
    app: mysql
    version: v1
config-map文件

这里的配置文件是我自己使用的,要改什么可以自己再去修改

apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-cm
data:
  my.cnf: |
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
    [mysqld]
    ## 同一局域网内注意要唯一
    server-id=001
    ## 开启二进制日志功能,可以随便取(关键)
    log-bin=mysql-bin
    
    gtid_mode=on
    enforce_gtid_consistency=on
    
    relay-log=relay-log.log
    binlog_format=ROW
    #MySQL5.7可以不启用此参数,5.7版本使用了gtid_executed表记录同步复制的信息,避免两次写入relay-log和binlog,降低了从库磁盘I/O
    #log_slave_updates=true
    master_info_repository=TABLE
    relay_log_info_repository=TABLE
    sync_master_info=1
    slave_parallel_workers=2
    binlog_checksum=CRC32
    master_verify_checksum=1
    slave_sql_verify_checksum=1
    binlog_rows_query_log_events=1
    #replicate_do_db=tt
    #MySQL5.7新增加的值,配置基于表的组提交并行复制,默认值为database(基于库进行多线程复制,MySQL5.6是基于库的方式进行多线程方式复制)建议改为logical_clock,基于表的组方式复制,提高复制的效率
    slave_parallel_type=logical_clock
    #开启通用查询日志
    general_log=1
    #设置通用日志的输出格式为文件和表
    log_output=FILE,TABLE

通过kubectl get deployment | grep msyql可以看到创建的mysql deployment

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐