翼度科技»论坛 编程开发 mysql 查看内容

KubeSphere部署mysql的详细步骤

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
演示示例使用的是3.4.1,各版本有名字差异 功能是一样的 由于mysql需要做数据持久化所以需要挂载数据

1.创建mysql基础配置

项目中-配置-配置字典
  1. mysql-conf
复制代码

添加键值对
  1. [client]
  2. default-character-set=utf8mb4
  3. [mysql]
  4. default-character-set=utf8mb4
  5. [mysqld]
  6. init_connect='SET collation_connection = utf8mb4_unicode_ci'
  7. init_connect='SET NAMES utf8mb4'
  8. character-set-server=utf8mb4
  9. collation-server=utf8mb4_unicode_ci
  10. skip-character-set-client-handshake
  11. skip-name-resolve
复制代码

贴一下yaml配置
  1. kind: ConfigMap
  2. apiVersion: v1
  3. metadata:
  4.   name: mysql-conf
  5.   namespace: gitee
  6.   annotations:
  7.     kubesphere.io/creator: admin
  8. data:
  9.   my.cnf: |
  10.     [client]
  11.     default-character-set=utf8mb4
  12.     [mysql]
  13.     default-character-set=utf8mb4
  14.     [mysqld]
  15.     init_connect='SET collation_connection = utf8mb4_unicode_ci'
  16.     init_connect='SET NAMES utf8mb4'
  17.     character-set-server=utf8mb4
  18.     collation-server=utf8mb4_unicode_ci
  19.     skip-character-set-client-handshake
  20.     skip-name-resolve
复制代码
2.创建pvc挂载

项目-存储-持久卷声明
  1. mysql-pvc
复制代码

方式就选择默认
访问模式:单节点读写
大小:根据自己需要的数值增加,这里选择的是1Gb
然后直接下一步创建即可

yaml配置
  1. kind: PersistentVolumeClaim
  2. apiVersion: v1
  3. metadata:
  4.   name: mysql-pvc
  5.   namespace: gitee
  6.   annotations:
  7.     kubesphere.io/creator: admin
  8.   finalizers:
  9.     - kubernetes.io/pvc-protection
  10. spec:
  11.   accessModes:
  12.     - ReadWriteOnce
  13.   resources:
  14.     requests:
  15.       storage: 1Gi
  16.   storageClassName: local
  17.   volumeMode: Filesystem
复制代码
3.创建工作负载

应用负载-工作负载
名称:
  1. mysql
复制代码

添加容器使用的是本地私有镜像(私有镜像使用的是harbor,也可以使用其他镜像配置比较简单这里不详细说)

使用默认镜像端口并且同步主机时区

添加环境变量
设置数据库密码
MYSQL_ROOT_PASSWORD


首先挂载pvc做数据持久化
选择我们一开始创建的pvc
模式:读写
路径:/var/lib/mysql
注意:路径要一致不能错!!!

挂载配置文件
选择本教程最开始创建的字典数值
模式:只读
路径:/etc/mysql/conf.d
注意:路径要一致不能错!!!

下一步直接创建即可(如果创建失败请检查镜像是否能正常拉取)
yaml配置
  1. kind: Deployment
  2. apiVersion: apps/v1
  3. metadata:
  4.   name: mysql
  5.   namespace: gitee
  6.   labels:
  7.     app: mysql
  8.   annotations:
  9.     deployment.kubernetes.io/revision: '1'
  10.     kubesphere.io/creator: admin
  11. spec:
  12.   replicas: 1
  13.   selector:
  14.     matchLabels:
  15.       app: mysql
  16.   template:
  17.     metadata:
  18.       creationTimestamp: null
  19.       labels:
  20.         app: mysql
  21.       annotations:
  22.         kubesphere.io/creator: admin
  23.         kubesphere.io/imagepullsecrets: '{"container-hrnhuh":"harbor"}'
  24.         logging.kubesphere.io/logsidecar-config: '{}'
  25.     spec:
  26.       volumes:
  27.         - name: host-time
  28.           hostPath:
  29.             path: /etc/localtime
  30.             type: ''
  31.         - name: volume-ve0oq2
  32.           persistentVolumeClaim:
  33.             claimName: mysql-pvc
  34.         - name: volume-lg3r9w
  35.           configMap:
  36.             name: mysql-conf
  37.             defaultMode: 420
  38.       containers:
  39.         - name: container-hrnhuh
  40.           image: '192.168.21.234:81/tools/mysql:8.0.3'
  41.           ports:
  42.             - name: tcp-3306
  43.               containerPort: 3306
  44.               protocol: TCP
  45.           env:
  46.             - name: MYSQL_ROOT_PASSWORD
  47.               value: '123456'
  48.           resources:
  49.             limits:
  50.               cpu: '1'
  51.               memory: 1Gi
  52.             requests:
  53.               cpu: '1'
  54.               memory: 1Gi
  55.           volumeMounts:
  56.             - name: host-time
  57.               readOnly: true
  58.               mountPath: /etc/localtime
  59.             - name: volume-ve0oq2
  60.               mountPath: /var/lib/mysql
  61.             - name: volume-lg3r9w
  62.               readOnly: true
  63.               mountPath: /etc/mysql/conf.d
  64.           terminationMessagePath: /dev/termination-log
  65.           terminationMessagePolicy: File
  66.           imagePullPolicy: IfNotPresent
  67.       restartPolicy: Always
  68.       terminationGracePeriodSeconds: 30
  69.       dnsPolicy: ClusterFirst
  70.       serviceAccountName: default
  71.       serviceAccount: default
  72.       securityContext: {}
  73.       imagePullSecrets:
  74.         - name: harbor
  75.       schedulerName: default-scheduler
  76.   strategy:
  77.     type: RollingUpdate
  78.     rollingUpdate:
  79.       maxUnavailable: 25%
  80.       maxSurge: 25%
  81.   revisionHistoryLimit: 10
  82.   progressDeadlineSeconds: 600
复制代码
4.创建服务(创建服务后才能进行外部访问)

工作负载-服务-指定工作负载


访问模式:虚拟ip地址
工作负载:选择刚刚创建的mysql
端口:名字自己填写 容器端口3306 服务端口3306

勾选外部访问并且选择NodePort模式

创建成功后这里的端口数据库连接的时候会用到


5.测试mysql是否能正常访问

服务器地址:集群ip
端口:刚刚创建成功后的对外端口
数据库:sys
用户名:root
密码:创建工作负载时设置的MYSQL_ROOT_PASSWORD值,当时设置的是123456 所以这里就用123456登录(如果忘记就去工作负载里找)

设置应用路由(ingress)然后用域名访问不知道为什么使用自定义域名:3306 连接不上数据库 所以直接用了NodePort
参考项目:KubeSphere部署Mysql有状态副本集
到此这篇关于KubeSphere部署mysql的文章就介绍到这了,更多相关KubeSphere部署mysql内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/database/328725btg.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具