Traveik on Kubernetes(GCE/GKE)背后的GCE Load Balancer

Mic*_*tte 4 google-compute-engine kubernetes google-kubernetes-engine traefik

我按照用户指南在Kubernetes上实现了Traefik .这给了我一个入口控制器,我能够在80和8080上创建一个入口和traefik-ingress服务.

我还设置了一个"gce"入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-ingress
  namespace: kube-system
  annotations:
    kubernetes.io/ingress.class: "gce"
spec:
  tls:
    - secretName: fasedge-tls
  backend:
    serviceName: traefik-ingress-service
    servicePort: 80
Run Code Online (Sandbox Code Playgroud)

这样做是创建一个GCE负载均衡器,它终止我的TLS并应将所有请求转发给类型为NodePort的traefik-ingress-service.

GCE负载均衡器需要进行健康检查.默认值为路径"/".我以为traefik有一个"/ ping"所以我把健康检查改为了.但无论我做什么,我都无法通过健康检查,因此,我的GCE负载均衡器不健康,不会将任何请求转发给traefik.

一些参考文献说要将Traefik lb服务从NodePort更改为LoadBalancer,但除了我的Ingress处理SSL终止之外,它应该与我上面的Ingress完全相同.

其他人这样做吗?

Mic*_*tte 6

获取运行状况检查以在gce负载均衡器上工作的方法是向traefik容器添加一个参数.在--ping--ping.entrypoint=http让我建立一个GCE健康检查的/ping路径.

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: traefik-ingress-controller
  namespace: kube-system
  labels:
    app: traefik-ingress-controller
spec:
  replicas: 1
  selector:
    matchLabels:
      app: traefik-ingress-controller
  template:
    metadata:
      labels:
        app: traefik-ingress-controller
        name: traefik-ingress-controller
    spec:
      serviceAccountName: traefik-ingress-controller
      terminationGracePeriodSeconds: 60
      containers:
        - name: traefik-ingress-controller
          image: "traefik:v1.5.2"
          args:
          - --api
          - --kubernetes
          - --ping
          - --ping.entrypoint=http
Run Code Online (Sandbox Code Playgroud)