K3S Helm 高可用安装 rancher 修改80和443端口

K3S Helm 高可用安装 rancher 修改80和443端口(k8s同理)

请注意,本文是基于默认K3S安装了Traefik的基础上来写的。如果是使用自定义的IngressController,仅作参考,不过也具备参考意义。

某些时候,我们需要修改rancher的默认端口。

如果是单机安装,直接docker的-p就可以解决,因为这个时候,docker容器直接接管了流量。
但是高可用部署,由于是部署在K3S环境中,因此,不能简单的处理。必须通过修改K3S集群的流量控制入口(说白了,就是Ingress和LoadBanlencer)来处理。这个时候rancher是集群内部的一个POD而已,因此它自己不用修改端口。

这里,必须先搞清楚(我花了很多时间搞清楚)K3S的流量控制艺术,在搞清楚艺术之前,还得了解Ingress和IngressController,针对Ingress和IngressController,写的最好的文章是我认为写的最好的一篇。

有了Ingress和IngressController的认知之后,我们来看K3S的流量艺术。

  1. K3S默认会安装Traefik作为IngressController,接管集群内80和443的流量。如果看到写的最好的文章,我们就知道,一般情况下,其实IngressController本身并不会(除非特殊的启用hostPort)并不会在主机上监听端口,它依然属于集群内部。
  2. 写的最好的文章我们知道,让IngressController能够对外服务,可以有三种做法:1)给IngressController开一个NodePort服务;2)IngressController作为DaemonSet部署,暴露hostPort;3)给IngressController暴露一个LoadBalancer服务;
    其实说白了,就是想办法让IngressController这个容器,能够对外暴露服务端口。
    不过,K3S没有采用上面三种做法,它使用了一个特别的办法,在官网我们可以得知(官网中文翻译根本看不懂,难啃),它采用了DaemonSet部署特殊的Klipper Load Balancer进程的方式,来给Traefik Ingress Controller提供流量导入
  3. 2所述的流量导入,可以简单图解为:
    [client]-->(主机port)<--iptables监听-->[DaemonSet-Klipper]--iptables转发-->[集群内Traefik]
    也就是说,K3S通过在每个节点部署Klipper,然后以iptables路由的方式,将节点流量转发到内部的IngressController。
  4. 我们可以在节点中通过
    k3s kubectl get svc -n kube-system
    k3s kubectl get pods -n kube-system
    k3s kubectl get daemonset -n kube-system
    k3s kubectl edit daemonset svclb-traefik -n kube-system
    逐一验证2中所述的官网描述以及通过写的最好的文章所了解到的信息

有了上面的艺术刨析,我们就知道,端口的改造,重点是修改 Daemonset:svclb-traefik,我们从Klipper的github核心文件可以了解到,它是通过iptables来处理流量的。里面使用了一些环境变量来设置入口端口和转发信息
于是:

  1. k3s kubectl edit daemonset svclb-traefik -n kube-system
  2. 修改里面的环境变量端口以及容器端口,其中DEST_IP和DEST_PORT代表的是集群内部的Traefik的ServiceIP和端口。其他的就不用细讲了。
  3. 等待相关POD自动更新

或者,因为了解了刚才的艺术过程。
同样是在官网-ServiceLB如何工作这一节,我们可以得知——由于它使用了
Klipper Load Balancer,因此,你在K3S上创建一个L4负载均衡(即type: LoadBalancer服务),K3S会自动启动一个Klipper Load Balancer,在主机上打开L4负载均衡中设置的服务端口,通过iptables转发你的请求到这个L4负载均衡上面,然后由L4负载均衡再转发到配置的内部端口上。基于这个信息,那么

  1. 打开服务发现,创建一个L4负载均衡,其目标选择POD:traefik
  2. 设置L4负载均衡的服务端口为需要的端口
  3. 保存,等待K3S自动构建svclb-traefik-xxxx
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值