Golang Go语言中 给家庭 k8s 集群用的 External Load Balancer
Golang Go语言中 给家庭 k8s 集群用的 External Load Balancer
github: https://github.com/joesonw/homemade-external-load-balancer
一个动态 dns 解析 + 更新反向代理(traefik, etc) 配置的 controller.
使用起来就和在云上的 ELB, SLB 之类一样
欢迎 issue 和 PR
大家有什么其他的使用场景也可以提一提. 例如 nginx 之类
更多关于Golang Go语言中 给家庭 k8s 集群用的 External Load Balancer的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
1. 更新的是二级域名的 NS 解析
2. 解析来自公网 /内网的三级域名的 A 请求 到 traefik (watch apiserver)
3. 更新 traefik 配置 (watch apiserver)
这个是自己玩的时候方便. 现在自己公司里用的是阿里云的 k8s 集群+slb. baremetal 没有这样的待遇.
这个不错,下周末试试,正好家里的 k8s 准备迁移
#3 我去,你们都在家里玩 k8s 么… 我顶多弄几个虚拟机测试
单机也可以啊,方便规模化的时候上云,无缝。
最近有个 k3s,感觉更适合家里玩
#6 哥,你微信多少,我微信被 block 了,我重新加一下==
#6 那个一出来我就看了,ha 方案官方还没出来,而且看了下吧 storage plugin 精简了好多,最近在折腾 diy 键盘还没时间鼓捣这个,等鼓捣完了再鼓捣这个,2333
算是 DDNS+ingress 不能称为 Load Balancer 吧(杠一下
为了取得和在云上 External Load Balancer 一样的功效嘛.
当然 load balance, ssl/tls 这些慢慢加进来, 先放上来是看有没有需要这些功能, 看下大家的需求. 二一个, 如果有跟我一样, 想要云上 ELB 那种效果, MetalLB 又太麻烦的, 可以先用一用.
针对家庭k8s集群使用的External Load Balancer(外部负载均衡器),在Golang Go语言环境中,虽然Go语言本身不直接提供负载均衡器的实现,但你可以通过配置k8s服务(Service)来实现负载均衡功能。
在k8s中,Service是一种为一组功能相同的Pod提供单一不变的接入点的资源。对于External Load Balancer,k8s提供了LoadBalancer类型的Service,它通常用于公有云环境下的服务,并需要外部云环境的支持。然而,在家庭或私有集群环境中,可能无法直接使用这种类型的Service,因为缺乏外部云提供商的支持。
不过,你可以通过其他方式在家庭k8s集群中实现负载均衡,例如:
- 使用NodePort类型的Service:将Service暴露在每个节点的指定端口上,然后可以使用一个外部的负载均衡器(如硬件负载均衡器或开源软件如HAProxy、Nginx等)来分发流量到这些端口。
- 使用Ingress:Ingress可以提供比Service更灵活的路由和负载均衡功能。通过配置Ingress规则和Ingress Controller,你可以将外部HTTP/HTTPS流量路由到集群内的不同Service上。
在Go语言中,你可以编写程序来与k8s API交互,动态地创建和管理这些Service和Ingress资源,从而实现负载均衡的自动化配置和管理。