微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ISP 路由器后面的 Kubernetes 集群

如何解决ISP 路由器后面的 Kubernetes 集群

我正在尝试使用 3 raspBerry pi 4 在家里创建一个 k3s 集群。 我为设置 nginx-ingress +letsencrypt pod 付出了很多努力。 实际上,它似乎有效,但我现在无法检查。

现在我的问题如下:

我使用 ISP 路由器(LiveBox Orange)连接到互联网。

我的 3 个 RPI 已连接到它并具有以下 IP:

  • 大师:192.168.1.20
  • 节点 1:192.168.1.21
  • 节点 2:192.168.1.22

我已将我的域名链接到指向我的 ISP 盒 IP 的动态 DNS(是的,这个 sh*tty 盒无法处理永久 IP)。

负载均衡器的范围从 192.168.1.240 到 192.168.1.250。

现在我的问题是如何将端口从 ISP 转发到负载均衡器?

我有一个配置 UI,它允许我将端口重定向到现有设备 IP,但作为 负载均衡器 IP 不是真实设备,我无法选择它。

对不起,我是 kubernetes 的真正菜鸟。 如果您需要更多详细信息,请询问,我会提供。

提前致谢。

解决方法

对于您当前的情况:

你需要在你的网络中引入一个新的 k3s 独立组件,它可以是一个像 HAProxy 这样的反向代理,它可以设置为平衡 3 个 IP 之间的请求。

或:

#1 在没有 Traefik 和 Service LoadBalancer 的情况下重建您的 k3s 集群:

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC='server --no-deploy servicelb --no-deploy traefik --flannel-backend=host-gw --write-kubeconfig-mode 644' sh -

#2 部署 MetalLB

https://metallb.universe.tf/configuration/#layer-2-configuration 与配置:

---
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.1.20-192.168.1.22 

这将为集群添加一个功能,其中负载均衡器类型的任何服务都将绑定到节点的 IP。

我自己的例子:

NAME     STATUS   ROLES                  AGE     VERSION        INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
node02   Ready    <none>                 13d     v1.20.2+k3s1   192.168.1.202   <none>        Alpine Linux v3.13   5.10.12-0-virt   containerd://1.4.3-k3s1
node03   Ready    <none>                 2d11h   v1.20.2+k3s1   192.168.1.203   <none>        Alpine Linux v3.13   5.10.12-0-virt   containerd://1.4.3-k3s1
node01   Ready    control-plane,master   13d     v1.20.2+k3s1   192.168.1.201   <none>        Alpine Linux v3.13   5.10.12-0-virt   containerd://1.4.3-k3s1
NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                                     AGE   SELECTOR
kube-dns                    ClusterIP      10.43.0.10      <none>          53/UDP,53/TCP,9153/TCP                      13d   k8s-app=kube-dns
metrics-server              ClusterIP      10.43.254.20    <none>          443/TCP                                     13d   k8s-app=metrics-server
traefik                     LoadBalancer   10.43.130.1     192.168.1.201   80:31666/TCP,443:31194/TCP,8080:31199/TCP   13d   app=traefik

#3 按照这个设置让 traefik 运行而不是 nginx https://github.com/sleighzy/k3s-traefik-v2-kubernetes-crd 作者使用了 2 rpis。

#4 从您的路由器,您应该将端口 80/443 转发到有流量的节点。 您可以在没有外部 LoadBalancer 的情况下离开,因为该设置中的服务 traefik 被定义为 LoadBalancer 并且只会在一个节点上运行。可能是它在节点重新启动之间迁移 - 您必须调整路由器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。