我正在尝试使用3 raspberry pi 4在家里创建一个k3s集群。我花了很多时间来设置nginx-ingress + letsencrypt pod。事实上,它似乎可以工作,但我现在无法检查。
现在我的问题是:
我使用ISP路由器(Livebox Orange)连接到互联网。
我的3个RPI连接到它,并有以下ip:
- Master: 192.168.1.20
- Node1: 192.168.1.21
- Node2: 192.168.1.22
我已经将我的域名链接到指向我的ISP盒子IP的动态DNS(是的,这个狗屎盒子不能处理持久的IP)。
负载均衡器的取值范围为192.168.1.240 ~ 192.168.1.250。
现在我的问题是如何将端口从ISP转发到负载均衡器?
我有一个配置UI上它允许我重定向端口到现有的设备IP,但作为loadbalancer IP不是一个真实的设备,我不能选择它。
对不起,我是kubernetes的新手。如果你需要更多的细节,尽管问,我会提供给你。
提前谢谢你。
对于当前情况:
你需要在你的网络中引入一个新的k3s独立组件,它可以是一个像HAProxy这样的反向代理,它可以设置为在3个ip之间平衡请求。
或者:
在没有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按照下面的设置,你就可以不用nginx了https://github.com/sleighzy/k3s-traefik-v2-kubernetes-crd作者使用了2个rpi
# 4从你的路由器,你应该转发端口80/443到有流量的节点。您可以不使用外部LoadBalancer,因为该设置中的服务流量被定义为LoadBalancer,并且只在一个节点上运行。它可能会在节点重启之间迁移——你必须调整你的路由器。