初步使用篇
本文主要介绍Kubernetes安装之后如何使用Kuboard运行一个Mysql实例。
安装Kuboard不在本文介绍范围内,相对比较简单,找到对应的官网按照不同的环境进行安装即可。
场景描述
Mysql选用8.0版本,数据需要持久化,存储使用NFS服务,为了便于演示,NFS服务安装在Master节点上,对应的目录为/nfs,对应的pvc为nfs-pvc。
Mysql的配置文件使用mysqld.conf,使用K8s的ConfigMap进行描述;
Mysql的用户名和密码均为root,密码使用K8s的Secret进行描述。
名称空间:xiaohuolu。
配置步骤
配置Secret文件
apiVersion: v1
kind: Secret
metadata:
name: mysql-root-password
namespace: xiaohuolu
type: Opaque
data:
password: cm9vdA==上述password部分为root的Base64编码(echo -n 'root' | base64)。
配置ConfigMap文件
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-config
namespace: xiaohuolu
data:
mysqld.conf: |
[mysqld]
# 大小写不敏感配置(关键参数)
lower_case_table_names=1
# 其他常用配置(按需调整)
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-time-zone='+8:00'
max_connections=200
innodb_buffer_pool_size=1G配置Deployment文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
namespace: xiaohuolu
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:8.0
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-root-password
key: password
volumeMounts:
- name: mysql-storage
mountPath: /var/lib/mysql
subPath: mysql/var/lib/mysql
- name: mysql-config-volume
mountPath: /etc/mysql/conf.d
volumes:
- name: mysql-storage
persistentVolumeClaim:
claimName: nfs-pvc
- name: mysql-config-volume
configMap:
name: mysql-config
items:
- key: mysqld.conf
path: mysqld.conf配置Service文件
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: xiaohuolu
labels:
app: mysql
spec:
selector:
app: mysql
ports:
- protocol: TCP
port: 3306
targetPort: 3306
type: ClusterIP