首页 文章

使用traefik来加载kubernetes apiserver

提问于
浏览
0

我们目前正在尝试使用traefik并考虑将其用作内部kubernetes集群的入口控制器 .

现在我想知道是否有可能使用traefik来 balancer kube-apiserver?我们有一个HA设置有3个主人 .

我该怎么办?

基本上我只想在3个主服务器之间对集群中所有节点的API请求进行负载均衡 .

我应该在集群外运行traefik吗?

我试图绕过这个......我很难理解这可以和traefik一起作为入口控制器 .

感谢您的任何意见,非常感谢!

1 回答

  • 0

    实现此目的的一种方法是使用file provider并创建指向API服务器节点的静态设置;像这样的东西(未经测试)

    [file]
    [backends]
      [backends.backend1]
        [backends.backend1.servers]
          [backends.backend1.servers.server1]
            url = "http://apiserver1:80"
            weight = 1
          [backends.backend1.servers.server2]
            url = "http://apiserver2:80"
            weight = 1
          [backends.backend1.servers.server3]
            url = "http://apiserver3:80"
            weight = 1
    
    [frontends]
      [frontends.frontend1]
        entryPoints = ["http"]
        backend = "backend1"
        passHostHeader = true
    
        [frontends.frontend1.routes]
          [frontends.frontend1.routes.route1]
            rule = "Host:apiserver"
    

    (这假定只有一个简单的HTTP设置; HTTPS需要一些额外的设置 . )

    当Traefik获得此配置时(以及通过TOML文件或CLI参数需要执行的任何其他操作),它将使用跨三个节点的apiserver Host头进行循环请求 .

    另一个至少可能的选择是创建一个捕获API服务器节点的Service对象和另一个引用该Service的Ingress对象,并将所需的URL路径和主机映射到您的API服务器 . 这将为您提供更大的灵活性,因为服务应该自动适应您对API服务器的更改,这在滚动升级之类的事情发挥作用时可能会很有趣 . 然而,一个加重点可能是Traefik需要与API服务器通信以处理Ingress和服务(以及 endpoints ,就此而言),如果API服务器不可用则不能 . 您可能需要某种HA设置或愿意维持某种不可用性 . (FWIW,Traefik应该从自己的临时停机时间中恢复过来 . )

    无论您是想在集群中运行Traefik还是在集群外运行都取决于您 . 如果您想要处理API对象,前者肯定更容易设置,因为您不必传递API服务器配置参数,但如果您想要进入Ingress / Service路由,则需要应用与API服务器连接相同的限制 . 使用文件提供程序方法,您无需担心 - 完全可以在不使用Kubernetes提供程序的情况下在Kubernetes中运行Traefik .

相关问题