我正在尝试将Traefik部署为我的GKE集群上的入口控制器。 它是一个有3个节点的基本集群。
我习惯使用Kubespray部署的Kubernetes集群上的清单部署Traefik,但我们正在将部分基础架构迁移到GCP。
所以我尝试使用community helm chart使用以下配置部署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
知道我的错误在哪里?
非常感谢!
答案 0 :(得分:2)
Invalid value for field 'namedPorts[0].port': '0'
当GKE Ingress使用的Service
类型为ClusterIP
(而非NodePort
)时,会发生此错误。 GKE Ingress要求支持服务类型为NodePort。
答案 1 :(得分:0)
当入口控制器期望的服务不存在时,也会发生这种情况。 (也许是意外删除)
gke上的nginx-ingress-controller可与作为clusterIP公开的服务一起使用
答案 2 :(得分:0)
您忘记启用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