此项目采用单实例部署,切勿在生产环境使用! |
1. 说明
MariaDB 需要镜像 mariadb:10.5
。部署完成后,集群内部地址为:
1
svc-mariadb.core-middle.svc.cluster.local:3306
2. 创建 PVC
导入以下配置,创建PVC。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-mariadb-data
namespace: core-middle
labels:
app: mariadb
spec:
storageClassName: 'sc-nfs-share'
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
3. 管理员用户配置
将管理员用户配置导入到 Secret 中。
1
2
3
4
5
6
7
8
9
10
apiVersion: v1
kind: Secret
metadata:
name: secret-mariadb-root
namespace: core-middle
labels:
app: mariadb
type: Opaque
stringData:
password: 'mysql-root-password' (1)
其中
1 | 你需要将其配置成一个更安全的密码 |
4. 创建 MariaDB 服务器
使用以下配置创建 MariaDB 服务器。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: sts-mariadb
namespace: core-middle
labels:
app: mariadb
spec:
serviceName: mariadb-server
selector:
matchLabels:
app: mariadb
replicas: 1
template:
metadata:
labels:
app: mariadb
spec:
containers:
- name: mariadb
image: mariadb:10.8
volumeMounts:
- name: mariadb-data
mountPath: /var/lib/mysql
env:
- name: MARIADB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: secret-mariadb-root
key: password
- name: MARIADB_ROOT_HOST
value: "%"
livenessProbe:
exec:
command:
- bash
- "-c"
- |
mysqladmin -uroot -p$MARIADB_ROOT_PASSWORD ping &> /dev/null
initialDelaySeconds: 20
periodSeconds: 2
timeoutSeconds: 5
volumes:
- name: mariadb-data
persistentVolumeClaim:
claimName: pvc-mariadb-data
5. 关联Service
将 MariaDB 服务关联到 Service 下。
1
2
3
4
5
6
7
8
9
10
11
12
apiVersion: v1
kind: Service
metadata:
labels:
app: mariadb
name: svc-mariadb
namespace: core-middle
spec:
ports:
- port: 3306
selector:
app: mariadb
6. 测试
使用以下命令查看实例部署情况:
1
kubectl get pods,secrets,services,deployments,pvc -n core-middle -l app=mariadb
如果一切无误的话可使用以下命令测试 MariaDB ,输出结果如下所示。
测试命令
1
2
MYSQL_PASSWD=$(kubectl get secrets -n core-middle secret-mariadb-root -o jsonpath='{.data.password}' | base64 -d)
kubectl exec -it -n core-middle pods/sts-mariadb-0 -- mysql -h svc-mariadb.core-middle.svc.cluster.local -uroot -p$MYSQL_PASSWD -e "select 1;"
输出结果
1
2
3
4
5
+---+
| 1 |
+---+
| 1 |
+---+