接着上一篇的内容,我们已经部署了mysql服务,思考一个问题,当我们想修改配置文件如何修改?本节引入ConfigMap,ConfigMap顾名思义,是用于保存配置数据的键值对,可以用来保存单个属性,也可以保存配置文件。Secret可以为Pod提供密码、Token、私钥等敏感数据;对于一些非敏感数据,比如应用的配置信息,则可以使用ConfigMap。
1、使用ConfigMap配置mysql
创建mysql-svc.yml配置文件
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-open-config
data:
#这里是键值对数据
mysqld.cnf: |
[client]
port=3306
[mysql]
no-auto-rehash
[mysqld]
skip-host-cache
skip-name-resolve
default-authentication-plugin=mysql_native_password
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
explicit_defaults_for_timestamp=true
lower_case_table_names=1
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mysql-open
spec:
replicas: 1
template:
metadata:
labels:
name: mysql-open
spec:
containers:
- name: mysql-open
image: mysql:8.0.18
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "root"
#容器中的挂载目录
volumeMounts:
- name: cm-vol-open
mountPath: /etc/mysql/conf.d
- name: nfs-vol-open
mountPath: /var/lib/mysql
volumes:
#挂载到数据卷
- name: cm-vol-open
configMap:
name: mysql-open-config
items:
#configmap中的key
- key: mysqld.cnf
#configmap key中匹配的value 写入名为mysqld.cnf 的文件中
path: mysqld.cnf
- name: nfs-vol-open
persistentVolumeClaim:
claimName: nfs-pvc-mysql-open
---
apiVersion: v1
kind: Service
metadata:
name: mysql-open
spec:
ports:
- port: 3306
targetPort: 3306
type: LoadBalancer
selector:
name: mysql-open
如果之前部署了mysql数据卷挂载,需要删除之前的数据文件,然后启动mysql服务
[root@yn100-22 service]# kubectl get cm
NAME DATA AGE
mysql-open-config 1 3m8s
[root@yn100-22 service]# kubectl describe cm mysql-open-config
使用数据库连接工具连接mysql,使用命令kubectl get svc查看mysql的端口,此时mysql已能正常使用。