我创建了两个 yaml 文件。一种用于 WordPress,一种用于 Mysql。 我可以毫无问题地创建 Pod,并且可以在浏览器中使用终端端口转发来访问 WordPress。 但每当我这样做时,它都会说“建立数据库连接时出错”。我不知道为什么,我需要帮助
我使用 kubectl apply -f ."filename.yaml" 创建了这两个文件
我使用 kubectl port-forward wordpress 8080:80 来端口转发 WordPress
wordpress.yaml:
apiVersion: v1
kind: Pod
metadata:
name: wordpress
spec:
containers:
- name: app
image: wordpress:latest
env:
- name: "WORDPRESS_DB_HOST"
value: "mysql-service"
- name: "WORDPRESS_DB_NAME"
value: "MysqlDB"
- name: "WORDPRESS_DB_USER"
value: "admin"
- name: "WORDPRESS_DB_PASSWORD"
value: "Test"
ports:
- containerPort: 80
数据库.yaml:
apiVersion: v1
kind: Pod
metadata:
name: database
labels:
name: mysql-pod
spec:
containers:
- name: database
image: mysql:latest
env:
- name: "MYSQL_USER"
value: "admin"
- name: "MYSQL_PASSWORD"
value: "TFBern_3013"
- name: "MYSQL_DATABASE"
value: "MysqlDB"
- name: "MYSQL_ROOT_PASSWORD"
value: "TFBern_3013"
ports:
- containerPort: 3306
--- # Mysql Service definiert
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
ports:
- port: 3306
selector:
name: mysql-pod
我还尝试从 wordpress ping 到数据库,并且没有出现问题。我只是还没弄清楚如何从数据库 ping 到 wordpress,因为我不知道如何在 bash-5.1 上安装 ping 包
您的 MySQL pod 似乎缺少 Kubernetes 服务,这对于在 WordPress 和 MySQL pod 之间实现通信至关重要。设置服务的方法如下:
Kubernetes Service 为您的 Pod 提供稳定的 IP 地址并处理负载平衡。如果没有这个,您的 WordPress 配置中使用的主机名“数据库”将无法解析,从而导致连接错误。
更新 MySQL Pod 配置: 向您的 MySQL pod 添加标签,以便服务可以定位它:
# Add under metadata in your database.yaml
metadata
name: database
labels:
app: database
创建服务: 将其另存为
mysql-service.yaml
:
apiVersion: v1
kind: Service
metadata:
name: database
spec:
type: ClusterIP
ports:
- port: 3306
targetPort: 3306
selector:
app: database
应用配置: 运行这些命令:
kubectl apply -f database.yaml
kubectl apply -f mysql-service.yaml
然后再试一次,您应该不会再收到“无法建立数据库连接”错误了。
如果它仍然存在,请发布更多详细信息,我会分享我的想法。
刚刚看到你有一个 mysql-service,所以正如 David 提到的,设置 WORDPRESS_DB_HOST=mysql-service 你应该没问题。