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会无法识别。所以开启小写表名的选项