KubeSphere部署mysql

演示示例使用的是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

参考项目:KubeSphere部署Mysql有状态副本集

相关推荐
阿里小阿希2 分钟前
Vue3 + Element Plus 项目中日期时间处理的最佳实践与数据库设计规范
数据库·设计规范
且行志悠1 小时前
Mysql的使用
mysql
白鹭1 小时前
MySQL源码部署(rhel7)
数据库·mysql
星期天要睡觉1 小时前
Linux 综合练习
linux·运维·服务器
666和7771 小时前
Struts2 工作总结
java·数据库
saynaihe1 小时前
proxmox8升级到proxmox9
linux·运维·服务器
还听珊瑚海吗1 小时前
SpringMVC(一)
数据库
Delphi菜鸟2 小时前
docker 部署RustDesk服务
运维·docker·容器
Orchestrator_me2 小时前
CentOS交换区处理
linux·运维·centos
FLS1682 小时前
VMwaer虚拟机安装完Centos后无法联网问题
linux·运维·centos