1. 概述
这篇文章是使用k8s搭建MySQL的一个笔记,使用的是 Bitnami 的 helm chart 。
2. 准备工作
收集日志前先列出当前的服务器环境,规划下部署方案,K8s节点列表如下所示,计划将 MySQL 安装在 node1(label: usefulness=devops) 上。
节点 | 角色 | IP | 配置 | Label |
---|---|---|---|---|
master | master, etcd | 192.168.1.100 | 4核4G50G | usefulness=schedule |
node1 | worker | 192.168.1.101 | 16核32G100G | usefulness=devops |
node2 | worker | 192.168.1.102 | 8核8G100G | usefulness=business |
node3 | worker | 192.168.1.103 | 8核8G100G | usefulness=business |
3. 开始部署
这次部署我们使用的是 Bitnami 的 Charts 文件,因此需要先增加官方的仓库地址,如下:
helm repo add bitnami https://charts.bitnami.com/bitnami
3.1 域名
由于我的集群中,traefik 部署在 node1(192.168.1.101) 上,因此需要将网关的域名解析到 node1 上。
cat >> /etc/hosts <<EOF
192.168.1.101 es.local.com
192.168.1.101 kibana.local.com
EOF
3.2 命名空间
创建 devops 命名空间,包含 各种各样学习用的第三方服务或中间件。
apiVersion: v1
kind: Namespace
metadata:
name: devops
上述内容保存为 devops.yaml,执行以下命令部署:
kubectl apply -f devops.yaml
3.3 部署
Helm 安装
MySQL 8.0 之后去掉了 master/slave 的概念,改为了 primary/secondary 概念,这里 primary 部署一个服务,secondary 部署两个,另外为了方便集群外访问,开启了两个 NodePort,primary 使用 3306, secondary 使用 13306,详细的配置参见文档 。
architecture: replication
auth:
rootPassword: cJ72gt6loC0=
database: dev
username: dev
password: bE6aXlJNrz8=
primary:
nodeSelector:
usefulness: devops
service:
type: NodePort
nodePort: 3306
secondary:
replicaCount: 2
nodeSelector:
usefulness: devops
service:
type: NodePort
nodePort: 13306
安装命令:
helm install mysql bitnami/mysql -n devops -f values.yaml
4. 总结
这篇文章是使用k8s搭建MySQL的一个小记,内容简单就不过多阐述。