k8s部署mysql 8.0.26
k8s部署
创建nas
阿里云,文件存储。使用通用性NAS(容量最大10P)

创建k8s volume
阿里云 k8s,先创建存储卷,选择NAS,配置挂载点,配置挂载路径
然后创建存储声明,使用刚才创建的存储卷
创建prod
使用无状态模式。
镜像使用mysql/mysql-server, Tag使用8.0.26
配置环境变量
| 1 | MYSQL_ROOT_PASSWORD | 
配置启动参数
| 1 | ["--default-authentication-plugin=mysql_native_password"] | 
使用挂载卷(挂载卷配置路径/var/lib/mysql),对应容器路径/var/lib/mysql
迁移
导出原来数据
可以使用export导出,或者使用client工具导出.
由于原数据库使用阿里云RDS,不区分大小写。自己部署的区分大小写。
注意导出的数据库表名为小写,需要手动修改表名为大小。
导入,使用source
| 1 | # 原数据库名称为 weixin-database; 8.0开始不能使用-作为表名 | 
账号
创建账号
| 1 | CREATE USER 'remote_user'@'%' IDENTIFIED BY 'remote_user@1234; | 
可以通过NAT外网访问,或者通过SLB配置公网访问
在k8s中,可以通过mysql.common:3306 访问
问题
大小写问题
在MySQL中,从版本 8.0.1 开始,引入了 lower_case_table_names 参数,该参数控制数据库对象名称的大小写敏感性。
默认情况下,lower_case_table_names 的值是 0,表示表名大小写敏感。在这种情况下,你需要确保在创建表和查询表时使用一致的大小写。
如果将 lower_case_table_names 设置为非零值,例如设置为 1,MySQL 将表名视为大小写不敏感。在这种情况下,不同大小写的表名将被视为相同的表名
| 1 | SHOW VARIABLES LIKE 'lower_case_table_names'; | 
尝试通过调整配置项,调整lower_case_table_names,无法生效。
卸载、挂载nas数据
- 挂载nas数据。可以将nas数据,点击挂载ECS,添加挂账点,从而导出数据。同一个路径不能有多个挂载点

点击卸载,可以查看挂载点,然后卸载对应数据。
可以挂载到ECS,然后导出对应的磁盘数据。
kebuctl 相关操作
秘钥, 从k8s中导出密钥到ECS,就可以在ECS上,使用kubectl命令操作k8s

常用命令
| 1 | # 卸载weixin namespace所有prod | 
- 查看正在运行的 Pod: - 1 - kubectl get pods - 这会列出所有正在运行的 Pod。 
- 查看 Pod 的详细信息: - 1 - kubectl describe pod <pod-name> - 用实际的 Pod 名称替换 - <pod-name>。
- 查看 Pod 内的容器: - 1 - kubectl get pods <pod-name> -o jsonpath='{.spec.containers[*].name}' - 替换 - <pod-name>为你想要查看的 Pod 的名称。
- 查看容器日志: - 1 - kubectl logs <pod-name> -c <container-name> - 替换 - <pod-name>为 Pod 名称,- <container-name>为容器名称。
外网访问
通过NAT,配置DNAT条码,将外网IP 306端口映射 10.0.0.6 3306端口,实现外网访问。

