教你如何实现K8s Pod连接宿主机MySQL

在Kubernetes (K8s) 中,Pod 是运行容器的基本单元,本文将教你如何让K8s Pod 连接到宿主机上的 MySQL 数据库。整个流程可以分为几个步骤,以下是步骤概述,接下来会逐步展开每一步的具体操作。

流程概述

步骤 描述 命令/代码
1 确保宿主机上安装 MySQL sudo apt-get install mysql-server
2 配置 MySQL 允许外部连接 编辑 MySQL 配置文件,设置 bind-address
3 创建数据库用户并授权 使用 MySQL 语句创建用户并授权。
4 编写 Pod 的 YAML 文件 定义连接宿主机数据库的 K8s Pod。
5 部署 Pod 使用 kubectl apply 命令部署 Pod。

各步骤详细解说

步骤 1: 确保宿主机上安装 MySQL

首先,你需要在宿主机上安装 MySQL 服务。使用以下命令:

sudo apt-get update
sudo apt-get install mysql-server -y  # 更新库并安装 MySQL 服务器

步骤 2: 配置 MySQL 允许外部连接

编辑 MySQL 配置文件,以允许来自外部主机的连接。打开 MySQL 配置文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf  # 打开 MySQL 配置文件

找到以下行:

bind-address = 127.0.0.1

将其更改为:

bind-address = 0.0.0.0  # 允许所有 IP 连接

保存并退出。接着,重启 MySQL 服务以使配置生效:

sudo systemctl restart mysql  # 重启 MySQL 服务

步骤 3: 创建数据库用户并授权

创建一个可以从 Pod 连接的数据库用户。首先,登录到 MySQL:

mysql -u root -p  # 使用 root 用户登录 MySQL

在 MySQL 控制台中,执行以下 SQL 语句:

CREATE USER 'k8s-user'@'%' IDENTIFIED BY 'your_password';  -- 创建用户
GRANT ALL PRIVILEGES ON *.* TO 'k8s-user'@'%' WITH GRANT OPTION;  -- 授权用户
FLUSH PRIVILEGES;  -- 刷新权限

步骤 4: 编写 Pod 的 YAML 文件

接下来,我们需要创建一个 Pod 的配置文件。以下是一个示例 pod.yaml 文件:

apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
    - name: myapp-container
      image: your-app-image  # 这里换成你的应用镜像
      env:
        - name: MYSQL_HOST
          value: "宿主机的IP地址"  # 注意这里要替换成宿主机的实际IP
        - name: MYSQL_USER
          value: "k8s-user"  # 之前创建的用户
        - name: MYSQL_PASSWORD
          value: "your_password"  # 用户的密码

步骤 5: 部署 Pod

使用以下命令来部署你的 Pod:

kubectl apply -f pod.yaml  # 应用 YAML 配置文件

在 Pod 部署后,你可以使用以下命令检查 Pod 的状态:

kubectl get pods  # 检查 Pod 状态

饼状图展示权限分配

以下是一个饼状图,用于展示 MySQL 用户权限的分配情况。

pie
    title MySQL 用户权限分配
    "全权访问": 100
    "只读访问": 0
    "写入访问": 0

总结

通过以上五个步骤,你现在可以让 K8s Pod 连接到宿主机上的 MySQL 数据库。首先要确保宿主机上正确安装和配置 MySQL,并创建一个可用于连接的数据库用户。在 Pod 的 YAML 文件中设置正确的数据库连接信息后,再部署 Pod,便可顺利连接。

如有其他问题,欢迎随时交流!