K3s service 负载不均衡,如何解决?

环境信息:
K3s 版本:

k3s version v1.20.12+k3s1
节点 CPU 架构、操作系统和版本::

Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
集群配置:

1 server 1 agent
问题描述:

k3s 中创建了service,用于集群内调用。请求为资源敏感型,压测发现,不同pod请求量偏差加大。

这个和 K3s 没什么关系,可以百度或 google 下 K8s service 负载不均衡的原因。

1 个赞

该问题是因为安装k3s的时候,没有指定kube-proxy的代理模式,默认是iptables,iptables模式下,是随机选择后端pod(更多kube-proxy代理模式可自行搜索)。需要改为ipvs,选择轮询(rr)算法,才能做到平均分配流量。
解决方案:
方案1. 创建集群时,指定「–kube-proxy-arg=proxy-mode=ipvs」

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \
    INSTALL_K3S_MIRROR=cn \
    INSTALL_K3S_EXEC='--kube-proxy-arg=proxy-mode=ipvs' \
    sh -

方案2. 已有集群,可以通过修改k3s的配置文件 /etc/systemd/system/k3s.service:

ExecStart=/usr/local/bin/k3s \
    server \
        '--kube-proxy-arg=proxy-mode=ipvs' \

systemctl daemon-reload
systemctl restart k3s

1 个赞