Traefik Ingress用NodePort搭配已有DO负载均衡出现404错误
问题:Traefik搭配已有Digital Ocean负载均衡器返回404错误
我在Digital Ocean的Kubernetes集群中,用Terraform + Helm完成了集群、Traefik Ingress Controller以及cert-manager的搭建,所有功能原本运行正常。现在希望改用已有的Digital Ocean负载均衡器,替代Traefik以LoadBalancer类型服务运行时自动生成的负载均衡器。
我将Traefik Helm Chart的service.type设置为NodePort,指定节点端口为30080和30443,然后把已有DO负载均衡器指向这些端口,但Traefik返回404错误。请求确实能到达Traefik Ingress Controller,但无法路由到对应的服务。
我的Ingress资源配置如下:
resource "kubernetes_ingress_v1" "whoami" { metadata { name = "whoami" annotations = { "traefik.ingress.kubernetes.io/router.entrypoints" : "websecure" "traefik.ingress.kubernetes.io/router.tls" : "true" "cert-manager.io/cluster-issuer" : "letsencrypt-issuer" } } spec { rule { host = "my-domain.com" http { path { path = "/foo" path_type = "Prefix" backend { service { name = "whoami" port { number = 80 } } } } } } tls { secret_name = "my-domain.com-tls" hosts = [ "my-domain.com" ] } } }
如果保持Traefik为LoadBalancer类型服务,通过自动配置的负载均衡器可以正常访问https://my-domain.com/foo,但换用已有DO负载均衡器就出现问题,请问哪里操作有误或遗漏了配置?
更新1:
将Traefik日志级别调整为info后,Pod中出现以下警告日志:
11T17:31:21Z" level=warning msg="No domain found in rule PathPrefix(`/`), the TLS options applied for this router will depend on the SNI of each request" entryPointName=websecure routerName=whoami-whoami@kubernetes
更新2:
对比两种部署方式的访问日志:
- 使用LoadBalancer类型服务时的成功请求日志:
10.110.0.3 - - [12/Feb/2023:06:23:33 +0000] "GET / HTTP/2.0" 200 1005 "-" "-" 30 "whoami-whoami-limosa-online@kubernetes" "http://10.244.0.107:80" 1ms
- 使用NodePort搭配已有DO负载均衡器时的请求日志:
10.110.0.10 - - [12/Feb/2023:06:23:59 +0000] "GET / HTTP/2.0" - - "-" "-" 39 "-" "-" 0ms
内容的提问来源于stack exchange,提问作者Levissie
相关产品推荐
相关产品推荐

