You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes Ingress问题:Ingress到ClusterIP Service路由失效

问题分析:WordPress访问域名被重定向到IP地址

核心问题点

1. Ingress配置存在语法错误

你的Ingress规则中,同一个backend服务下重复定义了port字段,Kubernetes会仅保留最后一个配置(即443端口)。但你的WordPress Service的443端口实际是转发到容器的80端口,且未配置TLS证书,这会导致Ingress处理请求时出现异常,进而触发重定向。

错误配置片段:

backend:
  service:
    name: wordpress-frontend-service
    port:
      number: 80
    port:
      number: 443

2. WordPress站点地址未强制指定

WordPress默认会根据首次访问的地址,自动将siteurl和home字段写入数据库的wp_options表。如果你的WordPress Pod首次启动后是通过IP(192.168.210.200)访问的,数据库中会留存这个IP地址,后续即使通过域名test.com访问,WordPress也会自动重定向到数据库中记录的IP。

另外,你没有在WordPress的环境变量中指定WORDPRESS_SITEURL和WORDPRESS_HOME,这两个变量可以强制WordPress使用指定域名作为站点地址,避免自动生成的IP导致重定向。


解决方案

步骤1:修复Ingress配置

修改Ingress规则,去掉重复的port字段,根据需求选择HTTP或HTTPS配置:

方案A:使用HTTP(快速验证)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: wordpress
  name: wordpress-ingress
  labels:
    app: wordpress
spec:
  rules:
  - host: test.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: wordpress-frontend-service
            port:
              number: 80

方案B:启用HTTPS(需提前创建证书Secret)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: wordpress
  name: wordpress-ingress
  labels:
    app: wordpress
spec:
  tls:
  - hosts:
    - test.com
    secretName: test-tls-secret # 替换为你的证书Secret名称
  rules:
  - host: test.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: wordpress-frontend-service
            port:
              number: 80

应用修改后的Ingress配置:

kubectl apply -f your-ingress-file.yaml -n wordpress

步骤2:配置WordPress站点地址

方法A:通过环境变量设置(推荐)

修改wordpress-creds Secret,添加WORDPRESS_SITEURL和WORDPRESS_HOME字段:

  1. 对http://test.com进行base64编码:
echo -n "http://test.com" | base64
  1. 更新Secret配置:
apiVersion: v1
kind: Secret
metadata:
  name: wordpress-creds
  namespace: wordpress
type: Opaque
data:
  WORDPRESS_DB_HOST: d29yZHByZXNzLW15c3FsLXNlcnZpY2U=
  WORDPRESS_DB_USER: ZXhhbXBsZWRhdGE=
  WORDPRESS_DB_PASSWORD: ZXhhbXBsZWRhdGE=
  WORDPRESS_DB_NAME: ZXhhbXBsZWRhdGE=
  WORDPRESS_SITEURL: aHR0cDovL3Rlc3QuY29t # 替换为上面生成的编码值
  WORDPRESS_HOME: aHR0cDovL3Rlc3QuY29t # 同上
  1. 应用更新并重启WordPress Pod:
kubectl apply -f your-wordpress-secret.yaml -n wordpress
kubectl rollout restart deployment wordpress-frontend-deployment -n wordpress

方法B:直接修改数据库

如果无法通过环境变量修改,可进入MySQL Pod调整记录:

  1. 进入MySQL Pod:
kubectl exec -it <mysql-pod-name> -n wordpress -- bash
  1. 登录MySQL并切换到目标数据库:
mysql -u root -p
# 输入密码(明文为example data)
USE example_data;
  1. 更新站点地址:
UPDATE wp_options SET option_value = 'http://test.com' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'http://test.com' WHERE option_name = 'home';
  1. 退出并重启WordPress Pod:
EXIT;
exit
kubectl rollout restart deployment wordpress-frontend-deployment -n wordpress

步骤3:验证结果

清除浏览器缓存后重新访问test.com,确认重定向问题已解决。


内容的提问来源于stack exchange,提问作者Adam Stiller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:30:01