K3s Load Balancer(Rancher LB)

Posted catoop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K3s Load Balancer(Rancher LB)相关的知识,希望对你有一定的参考价值。

K8S中访问服务的4种方式中的原生的LB方式是需要依赖公有云LB服务支持的。
K3S设计了Service LB Controller,其专门为K3S集群而设计一个控制器。可以通过设置Service的type为LoadBalancer来使用,没有K8S那种对公有云LB服务支持的依赖要求了。

K3s - Service LB Controller


作用:创建iptables的转发规则对流量进行转发;限制:一个svclb独占一个port;操作:只需要将一个svc的type设置为LB,它就会自动处理相关工作。

[root@k3s-rancher2 ~]# kubectl get svc traefik -n kube-system
NAME      TYPE           CLUSTER-IP      EXTERNAL-IP                   PORT(S)                      AGE
traefik   LoadBalancer   10.43.198.245   <none>   80:32077/TCP,443:31575/TCP   6d12h
[root@k3s-rancher2 ~]# kubectl get ds -n kube-system
NAME            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
svclb-traefik   2         2         2       2            2           <none>          6d9h
[root@k3s-rancher2 ~]# kubectl get pod -n kube-system |grep svclb-traefik
svclb-traefik-wnw28                       2/2     Running   2          6d9h
svclb-traefik-vgfb5                       2/2     Running   6          6d9h
[root@k3s-rancher2 ~]# iptables -t nat -nvL |grep 80 |grep DNAT
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:10.42.1.30:80
[root@k3s-rancher2 ~]# kubectl get pod -n kube-system -owide -A |grep 10.42.1.30
kube-system                 svclb-traefik-wnw28                       2/2     Running   2          6d12h   10.42.1.30      k3s-rancher2   <none>           <none>
----------------------------------------------
# 命令行进入 svclb-traefik-wnw28 这个pod
----------------------------------------------
/ # iptables -t nat -nvL |grep 80
    0     0 DNAT       tcp  --  *      *      !10.43.198.245        0.0.0.0/0            tcp dpt:80 to:10.43.198.245:80
----------------------------------------------
# 退出pod命令行
----------------------------------------------
[root@k3s-rancher2 ~]# kubectl get svc -n kube-system -owide -A |grep 10.43.198.245
kube-system           traefik           LoadBalancer   10.43.198.245   <none>   80:32077/TCP,443:31575/TCP   6d12h   app.kubernetes.io/instance=traefik,app.kubernetes.io/name=traefik

----------------------------------------------
最后svc和pod之间通过 selector(instance、name)、port、targetPort 进行关联

网络转发拓扑图


(END)

以上是关于K3s Load Balancer(Rancher LB)的主要内容,如果未能解决你的问题,请参考以下文章

rancher2.x + k3s 单机搭建

-K3S 集群升级

rancher k3s 集群中Etcd 不适用?Etcd 是啥意思

Home Depot 使用 SUSE Rancher 和 K3s 升级 2300 个零售边缘位置

Home Depot 使用 SUSE Rancher 和 K3s 升级 2300 个零售边缘位置

如何使用 Rancher Desktop 访问 Traefik Proxy 仪表板