跨 Kubernetes 主节点的负载均衡

Posted

技术标签:

【中文标题】跨 Kubernetes 主节点的负载均衡【英文标题】:Loadblance across kubernetes master nodes 【发布时间】:2019-12-07 21:16:23 【问题描述】:

是否有任何文档如何使用外部负载平衡器来负载平衡 kubernetes API 服务器上的流量。

用例:

我不喜欢在 kubeconfig 文件中使用单个主节点 ip/name,并且需要所有主节点的通用名称,这样如果一个主节点宕机,它就会向另一个主节点发送流量。

我的 DNS 名称已经连接到 loadbalancer ip ,并且 loadbalancer 配置了 SSL 证书和 kubernetes 主后端节点,但它会导致错误: "计划http请求已发送到https服务器"

负载均衡器以某种方式向 kubernetes API 服务器发送 http 请求而不是 https。

【问题讨论】:

这很可能是负载均衡器的问题,而不是 API 服务器的问题。答案将取决于您使用什么来进行负载平衡。您能否将该信息添加到您的问题中并为该负载均衡器技术标记它? 我们正在使用脉冲安全 vtm。我们为许多端点做 ssl,它可以正常工作,kubernetes API 服务器有一些特别之处,尽管我已将外部名称添加到集群 SANS。 听起来您的负载均衡器正在终止 SSL/TLS,您需要与后端的 api 服务器重新建立安全连接。 @switchboard.op 但负载均衡器应该自动正确地执行此操作,没有额外的配置 【参考方案1】:

事实证明它在 L7 http 上不工作,但在 L4 tcp 上工作正常。

HAProxy 配置如下:

frontend k8s-api
  bind 192.168.0.150:443
  bind 127.0.0.1:443
  mode tcp
  option tcplog
  default_backend k8s-api

backend k8s-api
  mode tcp
  option tcplog
  option tcp-check
  balance roundrobin
  default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
  server k8s-api-1 192.168.0.147:6443 check
  server k8s-api-2 192.168.0.148:6443 check
  server k8s-api-3 192.168.0.149:6443 check

【讨论】:

以上是关于跨 Kubernetes 主节点的负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes云原生实战03 搭建高可用负载均衡器(Keepalived 和 HAproxy)

Kubernetes云原生实战03 搭建高可用负载均衡器(Keepalived 和 HAproxy)

K8S------Kubernetes双Master负载均衡集群搭建

K8S------Kubernetes双Master负载均衡集群搭建

K8S------Kubernetes双Master负载均衡集群搭建

[K8s]Kubernetes-服务负载均衡联网(下)