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 添加应用仓库
企业空间-应用管理-应用仓库
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 添加比特纳米仓库源
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账户进行数据库写操作