当前位置: 首页 > 知识库问答 >
问题:

GCE负载平衡器后面的Kubernetes(GCE/GKE)上的Traefik

贾成天
2023-03-14

我已经按照用户指南在库伯内特斯上实现了Traefik。这给了我一个入口控制器,我能够在80和8080上创建一个入口和traefik-ingress-service监听。

我还设置了“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负载平衡器,它终止我的TLS,并将所有请求转发给NodePort类型的traefik入口服务。

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

一些参考文献表示要将Traefik lb服务从NodePort更改为LoadBalancer,但这应该与我的上述入口做完全相同的事情,只是我的入口处理SSL终止。

还有人这样做吗?

共有2个答案

阚小云
2023-03-14

使用:

  • traefik:2.6.3
  • traefik舵图:10.19.4

我必须在我的头盔安装中添加以覆盖以下内容:

ports:
  traefik:
    healthchecksPort: 8000

service:
  type: NodePort

additionalArguments:
- "--ping.entrypoint=web"
百里意智
2023-03-14

让运行状况检查在gce负载平衡器上工作的方法是向traefik容器添加一个参数。--ping和--ping。entrypoint=http允许我在路径中设置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

 类似资料:
  • 通过GKE进入kubernetes,目前正在裸机上通过kubeadm进行尝试。 在以后的环境中,不需要任何特定的负载平衡器;通过使用nginx入口和入口,可以为www提供服务。 相反,在gke上,使用相同的nginx入口,或者使用gke提供的l7,最终总是得到一个计费负载平衡器。 这似乎不是最终需要的,原因是什么?

  • 我有一个非常简单的Spring Boot应用程序,具有社交单点登录功能。 看起来是这样的: 它在应用程序中有必需的条目。yml: 它在我的本地机器上运行得很好,并且只启动了一个实例。 当有多个实例隐藏在负载平衡器后面时,就会出现问题。 即使用户在第一个请求中进行身份验证,向负载均衡器发出的后续请求也会因401而被阻止。 与第一个应用程序实例相比,请求被路由到不同的应用程序实例。 我正在试图弄清楚,

  • 试图自学如何使用库伯内特斯,但有一些问题。 我的下一步是尝试使用LoadBalancer类型的服务来访问nginx。 我建立了一个新的集群并部署了nginx映像。 然后,我为LoadBalancer设置服务 设置完成后,我尝试使用LoadBalancer入口(我在描述LoadBalancer服务时发现)访问nginx。我收到一个此页面无法工作的错误。 不太确定我哪里出错了。 kubectl获得sv

  • 我正在尝试运行一个连接到部署pod的简单负载平衡服务器。 我安装了Docker for Mac edge版本。 问题是,当我尝试向公开的负载均衡器urlhttp://localhost:8081/api/v1/posts/health发出GET请求时,出现的错误是: org.apache.http.localhost:8081响应失败 做的时候: 我得到: 很明显,服务正在运行,但localhos

  • 我在GKE上有两个kubernetes集群:一个是处理与外部世界交互的公共集群,另一个是仅供内部使用的私有集群。 公共集群需要访问私有集群上的一些服务,我已经通过内部负载平衡器向公共集群的pod公开了这些服务。目前,我正在为负载平衡器指定要使用的内部IP地址,并将这些IP传递给公共POD,但我更希望负载平衡器可以选择任何可用的内部IP地址,并且我可以将其DNS名称传递给公共POD。 内部负载均衡器

  • 我正在DigitalOcean上使用CoreOs和库伯内特斯构建一个容器集群,我已经看到,为了向世界公开Pod,您必须使用Type: LoadBalancer创建一个服务。我认为这是最佳解决方案,因此您不需要在nginx或haagent等kubernetes之外添加外部负载均衡器。我想知道是否可以使用DO的浮动IP创建它。