演示示例使用的是3.4.1,各版本有名字差异 功能是一样的 由于mysql需要做数据持久化所以需要挂载数据
1.创建mysql基础配置
项目中-配置-配置字典
mysql-conf
添加键值对
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] init_connect='set collation_connection = utf8mb4_unicode_ci' init_connect='set names utf8mb4' character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci skip-character-set-client-handshake skip-name-resolve
贴一下yaml配置
kind: configmap apiversion: v1 metadata: name: mysql-conf namespace: gitee annotations: kubesphere.io/creator: admin data: my.cnf: | [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] init_connect='set collation_connection = utf8mb4_unicode_ci' init_connect='set names utf8mb4' character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci skip-character-set-client-handshake skip-name-resolve
2.创建pvc挂载
项目-存储-持久卷声明
mysql-pvc
方式就选择默认
访问模式:单节点读写
大小:根据自己需要的数值增加,这里选择的是1gb
然后直接下一步创建即可
yaml配置
kind: persistentvolumeclaim apiversion: v1 metadata: name: mysql-pvc namespace: gitee annotations: kubesphere.io/creator: admin finalizers: - kubernetes.io/pvc-protection spec: accessmodes: - readwriteonce resources: requests: storage: 1gi storageclassname: local volumemode: filesystem
3.创建工作负载
应用负载-工作负载
名称:
mysql
添加容器使用的是本地私有镜像(私有镜像使用的是harbor,也可以使用其他镜像配置比较简单这里不详细说)
使用默认镜像端口并且同步主机时区
添加环境变量
设置数据库密码
mysql_root_password
首先挂载pvc做数据持久化
选择我们一开始创建的pvc
模式:读写
路径:/var/lib/mysql
注意:路径要一致不能错!!!
挂载配置文件
选择本教程最开始创建的字典数值
模式:只读
路径:/etc/mysql/conf.d
注意:路径要一致不能错!!!
下一步直接创建即可(如果创建失败请检查镜像是否能正常拉取)
yaml配置
kind: deployment apiversion: apps/v1 metadata: name: mysql namespace: gitee labels: app: mysql annotations: deployment.kubernetes.io/revision: '1' kubesphere.io/creator: admin spec: replicas: 1 selector: matchlabels: app: mysql template: metadata: creationtimestamp: null labels: app: mysql annotations: kubesphere.io/creator: admin kubesphere.io/imagepullsecrets: '{"container-hrnhuh":"harbor"}' logging.kubesphere.io/logsidecar-config: '{}' spec: volumes: - name: host-time hostpath: path: /etc/localtime type: '' - name: volume-ve0oq2 persistentvolumeclaim: claimname: mysql-pvc - name: volume-lg3r9w configmap: name: mysql-conf defaultmode: 420 containers: - name: container-hrnhuh image: '192.168.21.234:81/tools/mysql:8.0.3' ports: - name: tcp-3306 containerport: 3306 protocol: tcp env: - name: mysql_root_password value: '123456' resources: limits: cpu: '1' memory: 1gi requests: cpu: '1' memory: 1gi volumemounts: - name: host-time readonly: true mountpath: /etc/localtime - name: volume-ve0oq2 mountpath: /var/lib/mysql - name: volume-lg3r9w readonly: true mountpath: /etc/mysql/conf.d terminationmessagepath: /dev/termination-log terminationmessagepolicy: file imagepullpolicy: ifnotpresent restartpolicy: always terminationgraceperiodseconds: 30 dnspolicy: clusterfirst serviceaccountname: default serviceaccount: default securitycontext: {} imagepullsecrets: - name: harbor schedulername: default-scheduler strategy: type: rollingupdate rollingupdate: maxunavailable: 25% maxsurge: 25% revisionhistorylimit: 10 progressdeadlineseconds: 600
4.创建服务(创建服务后才能进行外部访问)
工作负载-服务-指定工作负载
访问模式:虚拟ip地址
工作负载:选择刚刚创建的mysql
端口:名字自己填写 容器端口3306 服务端口3306
勾选外部访问并且选择nodeport模式
创建成功后这里的端口数据库连接的时候会用到
5.测试mysql是否能正常访问
服务器地址:集群ip
端口:刚刚创建成功后的对外端口
数据库:sys
用户名:root
密码:创建工作负载时设置的mysql_root_password值,当时设置的是123456 所以这里就用123456登录(如果忘记就去工作负载里找)
设置应用路由(ingress)然后用域名访问不知道为什么使用自定义域名:3306 连接不上数据库 所以直接用了nodeport
参考项目: