k8s启动单点mysql
前言
1)本文档使用k8s启动单点mysql,适用于开发/测试环境。
2)生产高可用集群: 《helm启动mysql-ha》
3)其他部署方式:《docker-compose启动mysql》、《helm启动单节点mysql》
4))web管理工具推荐 :《k8s启动phpmyadmin》
yml文件
创建mysql目录,下边创建mysql-test.yml文件如下:
说明:这是个开发测试用的单点MySQL,我们用的是Deployment也没所谓。由于MySQL是有状态的,下边副本只能是1,否则你需要用StatefulSet来管理pod。
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
namespace: mysql-test
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: harbocto.xxx.com.cn/public/mysql:5.7
imagePullPolicy: IfNotPresent
env:
# root用户密码
- name: MYSQL_ROOT_PASSWORD
value: liubei@2021
# 创建一个普通用户
- name: MYSQL_REPLICATION_USER
value: "liubei"
# 前边创建用户的密码
- name: MYSQLREPLICAITONPASSWO
value: "liubei@2021"
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
- mountPath: /etc/mysql/my.cnf
name: mysqlcnf
subPath: my.cnf
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: mysql
- name: mysqlcnf
configMap:
name: mysqlcnf
---
apiVersion: v1
kind: ConfigMap
metadata:
name: mysqlcnf
namespace: mysql-test
data:
my.cnf: |
# 这里是mysql的配置文件
# 虽然主公这个懒家伙什么也没有留下,但是不影响mysql启动
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
---
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: mysql-test
spec:
type: NodePort
ports:
- port: 3306
targetPort: 3306
nodePort: 30200
selector:
app: mysql
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql
namespace: mysql-test
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
启动
kubectl create -f mysql-test.yml