本地K8s集群Ingress未分配LoadBalancer IP问题排查咨询
问题分析与解决方案
首先,从你的kubectl get ingress输出能看到CLASS字段是<none>,这说明你的Ingress资源没有和Ingress Controller(这里是nginx-ingress)绑定,这是核心问题。另外你的Ingress配置里也有个小错误,我们一步步来解决:
1. 修正Ingress配置的核心错误
你把kubernetes.io/ingress.class: nginx直接放在了metadata根节点下,这是不对的——这个配置应该属于annotations字段。另外YAML里的路径转义"\/"也没必要,直接写"/"就行。修正后的配置如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: wp-ingress annotations: kubernetes.io/ingress.class: nginx # 移到annotations下才生效 labels: name: wp-ingress spec: # 如果你用的是K8s 1.18+版本,也可以用下面这行替代上面的annotation(二选一即可) # ingressClassName: nginx rules: - host: wordpress.pandora.local http: paths: - pathType: Prefix path: "/" backend: service: name: wp-svc port: number: 80 - host: phpmyadmin.pandora.local http: paths: - pathType: Prefix path: "/" backend: service: name: phpmyadmin-svc port: number: 80
应用修正后的配置:
kubectl apply -f <你的Ingress配置文件名>.yaml
2. 验证Ingress与Controller的绑定
再次执行kubectl get ingress wp-ingress,如果配置正确,CLASS字段应该会显示nginx,同时ADDRESS字段会填充为你的Ingress Controller的ExternalIP(也就是ingress-nginx-controller Service的EXTERNAL-IP:192.168.188.20)。
3. 后续验证步骤
如果绑定后还是有问题,可以做以下排查:
- 检查Ingress Controller日志,确认它正确加载了你的Ingress资源:
日志里应该能看到kubectl logs -n ingress-nginx deployment/ingress-nginx-controllerwp-ingress的加载记录,没有报错信息。 - 配置本地hosts解析:在你的本地机器的
hosts文件(Windows是C:\Windows\System32\drivers\etc\hosts,Linux/macOS是/etc/hosts)里添加两行:192.168.188.20 wordpress.pandora.local 192.168.188.20 phpmyadmin.pandora.local - 确认后端Service的可用性:检查
wp-svc和phpmyadmin-svc的Endpoint是否正常(有没有关联到运行中的Pod):
输出里的kubectl get endpoints wp-svc kubectl get endpoints phpmyadmin-svcADDRESSES列应该有Pod的IP,否则需要检查对应的Deployment/Pod是否正常运行。
补充说明
你提到Ingress没分配LoadBalancer IP——其实Ingress资源本身不会分配LB IP,LoadBalancer IP是属于Ingress Controller的Service的。你的Ingress只是负责将域名请求转发到对应的后端Service,流量先到Ingress Controller的LB IP,再由它根据Ingress规则路由。
内容的提问来源于stack exchange,提问作者thargalin
相关产品推荐
相关产品推荐

