Trafuik在Google Kubernetes引擎上出错

时间:2018-05-26 11:39:07

标签: kubernetes google-cloud-platform traefik google-kubernetes-engine kubernetes-ingress

我正在尝试将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

知道我的错误在哪里?

非常感谢!

3 个答案:

答案 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