kubernetes - haproxy 作为 kube-apiserver 的负载均衡器

标签 kubernetes haproxy

我已经建立了一个具有三个主节点的 kubernetes 集群。 kube-apiserver 应该是无状态的。为了从工作节点正确访问它们,我配置了一个 haproxy,它被配置为提供 apiserver 的端口 (8080)。

frontend http_front_8080
    bind *:8080
    stats uri /haproxy?stats
    default_backend http_back_8080

backend http_back_8080
    balance roundrobin
    server m01 192.168.33.21:8080 check
    server m02 192.168.33.22:8080 check
    server m03 192.168.33.23:8080 check

但是当我使用负载均衡器 ip 作为 apiserver 地址运行节点时,我会收到以下错误:

Apr 20 12:35:07 n01 kubelet[3383]: E0420 12:35:07.308337    3383 reflector.go:271] pkg/kubelet/kubelet.go:240: Failed to watch *api.Service: too old resource version: 4001 (4041)
Apr 20 12:36:48 n01 kubelet[3383]: E0420 12:36:48.321021    3383 reflector.go:271] pkg/kubelet/kubelet.go:240: Failed to watch *api.Service: too old resource version: 4011 (4041)
Apr 20 12:37:31 n01 kube-proxy[3408]: E0420 12:37:31.381042    3408 reflector.go:271] pkg/proxy/config/api.go:47: Failed to watch *api.Service: too old resource version: 4011 (4041)
Apr 20 12:41:42 n01 kube-proxy[3408]: E0420 12:41:42.409604    3408 reflector.go:271] pkg/proxy/config/api.go:47: Failed to watch *api.Service: too old resource version: 4011 (4041)

如果我将负载均衡器 IP 更改为主节点之一,它会按预期工作(没有上面的这些错误消息)。

我的 haproxy 配置中是否缺少某些对于运行此配置至关重要的内容?

最佳答案

我也遇到了和你一样的问题。我认为 watch 需要 api 服务器端的某种状态。 解决方案是更改配置,以便来自客户端的所有请求都使用平衡源发送到同一服务器。我假设您只有多个 api 服务器,因此 kubernetes 具有高可用性(而不是负载平衡)。

frontend http_front_8080
  bind *:8080
  stats uri /haproxy?stats
  default_backend http_back_8080

backend http_back_8080
  balance source
  server m01 192.168.33.21:8080 check
  server m02 192.168.33.22:8080 check
  server m03 192.168.33.23:8080 check

关于kubernetes - haproxy 作为 kube-apiserver 的负载均衡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36743805/

相关文章:

kubernetes - K8s PersistentVolume-查看数据的智能方式

kubernetes - 永久卷是否保留本地磁盘空间?

node.js - nginx、node.js 和 socket.io - 有工作婚姻吗?

logging - HAProxy 只会记录启动消息

kubernetes - 总是收到错误 : You must be logged in to the server (Unauthorized) EKS

elasticsearch - 如何扩展有状态集的 PVC?

nginx - 反向代理锁定功能

http - 如何在 HAProxy 上启用 HTTP/2?

docker - 如何从命令行重置 docker-for-mac v2.1.0.0 kubernetes?

ssl - DigitalOcean 负载均衡器 : Slow TCP connections when traffic is higher