K8s构建的mysql无法远程连接

作者在完成老师布置的大作业时遇到MySQL远程连接问题,虽然构建过程无误,但通过排查发现Kubernetes三台虚拟机组成的集群中,可能是由于IP地址输入错误导致连接失败。解决方法是通过`kubectlgetpods`找到MySQL所在的节点,然后使用正确的IP进行连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在写一个老师布置的大作业,都是老师写好的yaml文件,都是没问题的,但是构建的mysql无法远程连接。

尝试了网上的很多方法,都失败了,我的构建过程应该是没什么错误的,所以网上的方法并不奏效,这里提供一个很容易被忽视的思路。

我的k8s是三台虚拟机构成的集群,如果远程连接失败很可能是你的ip地址输入错误,mysql可能构建在了其他节点上。

查看节点

kubectl get pods -n dev -o wide

image-20231209105026878

知道了mysql被部署在d-node1后,再输入其ip,连接成功

image-20231209104616529

### 部署 MySQL 8 到 Kubernetes 的指南 #### 准备工作 为了确保数据库部署顺利,在开始之前应创建测试环境并充分试点,观察其在开发和质量保证负载下的表现情况,确认存储配置无误,这包括但不限于负载均衡、ID持久性和卷的持续维护[^3]。 #### 创建命名空间 建议为MySQL实例创建独立的命名空间来管理资源。可以使用如下命令: ```bash kubectl create namespace mysql ``` #### 使用 Helm 安装 MySQL Helm 是 Kubernetes 上最常用的包管理工具之一,能够简化应用程序及其依赖项的安装过程。对于 MySQL 来说,官方提供了稳定版 chart 可供选用。 首先添加 Bitnami 存储库(Bitnami 提供了高质量的开源项目图表): ```bash helm repo add bitnami https://charts.bitnami.com/bitnami ``` 更新本地 helm 库索引以获取最新版本的信息: ```bash helm repo update ``` 执行下面这条命令完成 MySQL 8.x 版本的具体安装操作,并指定名称 `my-mysql` 和目标命名空间 `mysql` : ```bash helm install my-mysql \ --set architecture=replication \ --set primary.persistence.enabled=true \ bitnami/mysql --namespace=mysql ``` 这里设置了架构模式为复制(replication), 同时开启了主节点的数据持久化功能。 #### 访问 MySQL 实例 一旦 Pod 处于运行状态就可以连接至新建立的服务端口访问 MySQL 数据库了。可以通过 Port-forward 方式临时暴露服务给本地机器上的客户端程序调用: ```bash kubectl port-forward svc/my-mysql-master 3306:3306 -n mysql & ``` 此时可以在本地计算机上利用标准 MySQL 工具集像 phpMyAdmin 或者命令行界面登录远程服务器进行管理和查询作业。 #### 自动构建与推送镜像 为了让每次提交都能触发 Docker 构建流程并将生成好的容器映像推送到仓库中保存起来以便后续快速拉取使用,应该考虑将其集成到 CI/CD 流水线当中去。例如 GitLab 用户可以根据官方文档指导设置自动化脚本;而对于 Google Cloud 平台而言,则可参照特定说明实施相应步骤[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值