[kubesphere平台搭建 part.2]单节点/集群部署中间件-PostgreSQL、Redis、MySQL

283 阅读3分钟

1 PostgreSQL

1.1 单节点部署

1.1.1 部署PostgreSQL的pvc

使用nfs类型存储,单节点读写

1.1.2 创建配置文件

保密字典 创建四个键值对

   POSTGRES_DB: postgres
   POSTGRES_USER: postgres
   POSTGRES_PASSWORD: postgres
   TZ: Asia/Shanghai

1.2 添加容器

postgres

1.3 创建存储

挂载创建好的nfs卷,挂载位置为 /var/lib/postgresql/data,读写模式

1.4 多节点部署

1.4.1 添加应用仓库

企业空间-应用管理-应用仓库

添加仓库源 charts.bitnami.com/bitnami

1.4.2 通过bitnami部署postgresql-ha

进入项目,应用-创建,选择bitnami仓库,搜索postgre-ha

修改配置文件 value.yaml

 global:
   imageRegistry: ""
   ## E.g.
   ## imagePullSecrets:
   ##   - myRegistryKeySecretName
   ##
   imagePullSecrets: []
   storageClass: "nfs-storage-class"
 postgresql:
   replicaCount: 3
 persistence:
   enabled: true
   existingClaim: ""
   storageClass: "nfs-storage-class"
   mountPath: /bitnami/postgresql
   accessModes:
     - ReadWriteOnce
   size: 10Gi
   annotations: {}
   labels: {}
   selector: {}
 service:
   type: NodePort
   ports:
     postgresql: 5432
   portName: postgresql
   nodePorts:
     postgresql: "30543"

1.3 常用命令

 # 查看密码
 sudo kubectl get secret --namespace [namespace] [secret_key_name] -o jsonpath="{.data.password}" | base64 -d  

2 Redis

2.1 手动创建单节点

2.1.1 创建配置文件

redis.conf

 appendonly yes
 port 6379
 bind 0.0.0.0
 #开启密码
 #requirepass myPwd

2.1.2 创建nfs挂载卷

同上

2.1.3 创建有状态副本集

  • 启动命令

    redis-server /etc/redis/redis.conf

  • 卷挂载

    /data

  • 配置文件挂载

    /etc/redis

2.2 配置多节点

部署默认是一主一从对应,最少主从共6个节点

通过bitnami部署redis-cluster

主要修改配置

 global:
   imageRegistry: ''
   imagePullSecrets: []
   storageClass: nfs-storage-class
   redis:
     password: esac12#$
 service:
   ports:
     redis: 6379
   nodePorts:
     redis: '31379'
   extraPorts: []
   annotations: {}
   labels: {}
   type: NodePort
 persistence:
   enabled: true
   path: /bitnami/redis/data
   subPath: ''
   storageClass: nfs-storage-class
   annotations: {}
   accessModes:
     - ReadWriteOnce
   size: 8Gi
 cluster:
   init: true
   nodes: 6
   replicas: 1
 metrics:
   enabled: true

3 MySQL

3.1 配置单节点数据库

3.1.1 创建配置文件

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

3.1.2 创建保密字典

初始密码

MYSQL_ROOT_PASSWORD [password]

3.1.3 镜像信息

mysql:8.0.33

3.1.4 创建nfs挂载卷

同上

3.1.5 创建有状态副本集

  • 环境变量MYSQL_ROOT_PASSWORD挂载保密字典
  • 挂载存储卷 /var/lib/mysql
  • 挂载配置文件 /etc/mysql/conf.d

3.2 配置主从数据库

3.2.1 添加比特纳米仓库源

charts.bitnami.com/bitnami

3.2.2 values.yaml

主要修改内容

 # 修改1.MySQL部署模式 (`standalone` or `replication`)此处为主从复制。
 architecture: replication
 
 # 修改2.数据库认证账号(root、普通用户、replication用户)相关密码以及创建的数据库设置,密码留空则会自动生成
 auth:
   rootPassword: "root"
   createDatabase: true
   database: "esac"
   username: "app"
   password: "app"
   replicationUser: replicator账户为同步账户,不建议使用其进行操作
  
  
   replicationPassword: "replicator"
 
 # 修改3.MySQL Primary 服务相关参数配置
 primary:
   name: primary
   # 修改4.主资源持久化配置,此处我已经搭建了动态逻辑卷。
   persistence:
     enabled: true
     storageClass: "nfs-storage-class"
     accessModes:
       - ReadWriteOnce
     size: 10Gi
   # 修改5.主服务持久化配置,注意此处与secondary服务节点配置不同
   service:
     type: NodePort
     ports:
       mysql: 3306
     nodePorts:
       mysql: "31006"
 
 # 修改6.MySQL Secondary 服务相关参数配置
 secondary:
   name: secondary
   replicaCount: 2
   # 修改7.从(节点)资源持久化配置,此处我已经搭建了动态逻辑卷。
   persistence:
     enabled: true
     storageClass: "nfs-storage-class"
     accessModes:
       - ReadWriteOnce
     size: 10Gi
   # 修改8.从(节点)持久化配置,注意此处与primary服务节点配置不同
   service:
     type: NodePort
     ports:
       mysql: 3306
     nodePorts:
       mysql: "31008"
 
 # 修改点9.启用 Promethues 的 mysqld-exporter
 metrics:
   enabled: true

3.2.3 进行部署

在kubesphere应用界面进行部署 或者使用kubectl正常部署

3.2.4 MySQL常用指令

 grant all privileges on *.* to root@'%' with grant option;
 create user '新用户名'@'%' IDENTIFIED BY 'password';
 grant all privileges on *.* to '新用户名'@'%' with grant option;
 #校验
 use mysql;
 select user,host from user;

3.2.5 注意事项

app账户仅有useage权限,进行各表读操作

replicator账户为同步账户,不建议使用其进行操作

建议新建dev账户进行数据库写操作