我正在尝试将 Traefik 部署为我的 GKE 集群上的入口控制器。 它是一个具有 3 个节点的基本群集。
我习惯于在 Kubespray 部署的 Kubernetes 集群上使用清单部署 Traefik,但我们正在将一些基础设施迁移到 GCP。
因此,我尝试使用以下配置使用社区掌舵图部署 Traefik:
image: traefik
imageTag: 1.6.2
serviceType: LoadBalancer
loadBalancerIP: X.X.X.X
kubernetes:
ingressClass: traefik
ssl:
enabled: false
enforced: false
insecureSkipVerify: false
acme:
enabled: false
email: hello@mydomain.com
staging: true
logging: false
challengeType: http-01
dashboard:
enabled: true
domain: traefik.mydomain.com
ingress:
annotations:
kubernetes.io/ingress.class: traefik
gzip:
enabled: true
accessLogs:
enabled: true
format: common
然后使用以下命令启动它:
helm install --namespace kube-system --name traefik --values values.yaml stable/traefik
在我的 K8S 集群上部署得很好,除了仪表板入口并出现以下错误:
kevin@MBP-de-Kevin ~/W/g/s/traefik> kubectl describe ingress traefik-dashboard -n kube-system
Name: traefik-dashboard
Namespace: kube-system
Address:
Default backend: default-http-backend:80 (10.20.2.6:8080)
Rules:
Host Path Backends
---- ---- --------
traefik.mydomain.com
traefik-dashboard:80 (10.20.1.14:8080)
Annotations:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning Sync 4m loadbalancer-controller googleapi: Error 400: Invalid value for field 'namedPorts[2].port': '0'. Must be greater than or equal to 1, invalid
知道我的错误在哪里吗?
多谢!
Invalid value for field 'namedPorts[0].port': '0'
当 GKE 入口使用的Service
属于类型ClusterIP
(而不是NodePort
(时,会发生此错误。GKE 入口要求后备服务的类型为 NodePort。
当入口控制器期望的服务不存在时,也会发生这种情况。(也许它被意外删除了(
gke 上的 nginx-ingress-controller 可与作为 clusterIP 公开的服务配合使用
您忘记启用RBAC。
样品波纹管工作正常
serviceType: LoadBalancer
rbac:
enabled: true
dashboard:
enabled: true
domain: dash.example.com
ingress:
annotations:
kubernetes.io/ingress.class: traefik
kubernetes:
ingressClass: traefik
namespaces:
- default
- kube-system