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

时间:2018-02-20 18:53:44

标签: kubernetes traefik google-compute-engine google-kubernetes-engine

我在User Guide之后在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

这样做是为了创建一个GCE Load Balancer来终止我的TLS,并将所有请求转发给类型为NodePort的traefik-ingress-service。

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

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

其他人这样做了吗?

1 个答案:

答案 0 :(得分:6)

使用gce负载均衡器进行运行状况检查的方法是向traefik容器添加一个参数。 --ping--ping.entrypoint=http允许我为/ping路径设置gce运行状况检查。

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