我们目前正在尝试使用traefik并考虑将其用作内部kubernetes集群的入口控制器 .
现在我想知道是否有可能使用traefik来 balancer kube-apiserver?我们有一个HA设置有3个主人 .
我该怎么办?
基本上我只想在3个主服务器之间对集群中所有节点的API请求进行负载均衡 .
我应该在集群外运行traefik吗?
我试图绕过这个......我很难理解这可以和traefik一起作为入口控制器 .
感谢您的任何意见,非常感谢!
实现此目的的一种方法是使用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 .
1 回答
实现此目的的一种方法是使用file provider并创建指向API服务器节点的静态设置;像这样的东西(未经测试)
(这假定只有一个简单的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 .