跨 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负载均衡集群搭建