k3s部署mysql

之前一篇由于数据库大小写不匹配,被我误删了。。

k3s安装

安装

墙内服务器,最好添加阿里云镜像加速,否则镜像可能下载不下来:/etc/docker/daemon.json中增加如下内容

{
  "registry-mirrors": ["https://icl4chew.mirror.aliyuncs.com"]
}

然后重启docker服务

systemctl daemon-reload
systemctl restart docker

启动项

mysql我的端口需要映射,如果通过NodePort方式,需要指定NodePort范围。我将数据库服务制定在40000端口。

对于k3s,需要在启动项指定,修改/etc/systemd/system/k3s.service文件中的启动程序为:

ExecStart=/usr/local/bin/k3s server --kube-apiserver-arg service-node-port-range=40000-40200

mysql部署

Deploy

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deployment
  labels:
    app: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: password
        ports:
        - containerPort: 3306
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: mysql-data
        - name: mysql-config
          mountPath: /etc/mysql/mysql.conf.d
      volumes:
        - name: mysql-data
          hostPath:
            path: /root/data/mysql
            type: Directory
        - name: mysql-config
          hostPath:
            path: /root/data/mysql-config
            type: Directory

其中mysql-config挂载,是为了自定义mysql启动配置。
mysql-data是mysql的数据文件,挂载出来可以持久化,避免数据文件丢失。

service

apiVersion: v1
kind: Service
metadata:
  name: mysql-service
spec:
  type: NodePort
  selector:
    app: mysql
  ports:
  - protocol: TCP
    port: 3306
    targetPort: 3306
    nodePort: 40000

通过nodeport方式,将服务开启在了40000端口。

其实如果是Cluster内应用访问,可以直接使用Service的3306端口,但是由于Service的Ip并非固定,所以还需要域名解析的服务,会有点复杂,这里为了简单,使用NodePort。

config

这里指的是挂载出来的mysql.cnf配置文件。

我添加了

lower_case_table_names=1

这是因为linux默认的数据库是大小写敏感的,我的数据库是从windows环境迁移过来,默认都是小写。
导入linux后,我用的EF发出的sql,表名带有大小写,mysql会无法识别。所以开启小写表名的选项

posted @ 2020-03-31 21:41  mosakashaka  阅读(1623)  评论(0编辑  收藏  举报