之前一篇由於數據庫大小寫不匹配,被我誤刪了。。
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會無法識別。所以開啟小寫表名的選項