20 条回复  ·  275 次点击
smilingsun 小成 2024-7-26 22:27:14
如果不使用云的负载均衡的话,也许可以参考这个使用 haproxy ?
https://docs.k3s.io/datastore/cluster-loadbalancer
kennylam777 小成 2024-7-26 23:36:23
@mightybruce 其實在正式的 LoadBalancer 上, 也是用 NodePort 的, 不然雲服務商的 LoadBalancer 如何連接到服務上?  LoadBalancer 的實作會幫你把 NodePort 至雲上的對應都處理好, 可以看看 aws-load-balancer-controller 的實作。


只是在生產環境上, Node Group 的端口不能直接全開到公網。

@lingerr 自己玩的就直接用 HostPort 吧, 一般 ingress controller 都支持, 這樣最簡單了。
moonlight010 小成 2024-7-26 23:55:24
使用 ingress controller 去访问 service,然后 service 去访问 pod ,这比较好吧
nodeport 是对 k8s 集群每个机器上指定特定的端口提供对外暴露,测试的时候使用
ingress 其实就是一个 nginx ,这个 ingress 比如使用的是 80 端口,然后可以配置二级域名解析到对应的 service ,比如 a.xx.com 解析到 tomcat 服务。b.xx.com 解析到 wordpress 服务,c.xx.com 解析到 springboot 服务等等,这样以来只暴露了 80 端口,而且这个端口是复用的,当然因为你是三台机器,可以配置 ingress nginx 是 nodeport 方式暴露 80 服务,然后可以使用 haproxy 配置一个配置云服务器 VIP(虚拟 ip),真正访问的域名,解析到这个 vip
liuhai233 小成 2024-7-27 03:15:13
这个月刚把云  k8s 的服务迁移到自建 k3s 了,成本省了不少,可以参考我的迁移过程: https://dreamhunter2333.com/posts/k8s/install-k3s.html
ysicing 小成 2024-7-27 06:18:24
可以看看我写的 k3s 集群私有负载均衡的另一种选择 Tailscale ,k8s 跑也是可以的
https://ysicing.me/k3s-tailscale-loadbalancer
caicaiwoshishui 小成 2024-7-27 10:05:58
你还需要一个服务器,做 nginx 代理转发,
1. 你的域名代理到这个服务器,这个服务的 nginx 的 upstram 设置为你的 k8s 对外的 ingress ip ,可以多个 ip 。
2. 再通过 ingress 实现代理到具体 pod service
wuoty 初学 2024-7-27 10:32:50
如果不使用负载均衡的情况下使用 Ingress ,那么可以用 MetalLB 的 Layer2 模式,把用户的所有 443 和 80 的流量集中到一个节点上,再通过这个节点转发到其他节点上

这个是 Nginx Ingress 提供的一种解决方案 https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#a-pure-software-solution-metallb

https://i.imgur.com/DrPv5vR.png
123
返回顶部