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)的主要内容,如果未能解决你的问题,请参考以下文章
rancher k3s 集群中Etcd 不适用?Etcd 是啥意思
Home Depot 使用 SUSE Rancher 和 K3s 升级 2300 个零售边缘位置