这是我的设置:
- 我在裸机上有多个 LAN。
- 每个 LAN 都有一个硬件路由器,并有一个静态 IP
- 每个 LAN 的地址范围为 192.168.1。*
- 外部流量通常会进入硬件路由器,然后需要由 LAN 内的一项服务提供服务
需要 :
- 有时(在少数用例中)保持 LAN 隔离:例如将应用程序部署到 LAN
选项 :
- 我应该有 1 个 kubernetes 还是每个 LAN 都有 1 个 kubernetes。每个集群 1 个 kubernetes 对我来说是一场噩梦,所以要管理许多集群;我认为 1 个 kubernetes 总体来说不错。
- 对于特定于 LAN 的部署,我应该为每个 LAN 创建 1 个命名空间,还是最好使用 kubernetes 标签,或者还有其他选择
- 外部流量通常通过硬件路由器上的静态 IP 进行,从那里我需要在 LAN 内路由流量(因此入口仅在 LAN 内)。LAN 内的入口将如何工作。
- 还想对整个集群进行监控、报警和健康检查、特定命名空间或标签过滤。
答案1
(至少)1 个 kubernetes 主节点。每个 LAN 上至少有 1 个工作节点,并按此标记。主机名本身就足够了。networkPolicy 可能有用。通过 Prometheus 进行集群健康监控/警报。
此策略将需要另一个 LAN 仅用于集群通信(至少 2 个接口/主机)。VPN 到该网络也可能是可以接受的...初始化集群时,请确保设置 IP--apiserver-advertise-address
和--control-plane-endpoint
运行时kubeadm init
。您可以在引导后修复它,但在启动时修复它更容易。
谨慎选择您的 CNI。我真的只熟悉 flannel(与 MetalLB 结合使用)...
参考:
- https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/
- https://ubuntu.com/kubernetes/docs/cni-overview
- https://itnext.io/benchmark-results-of-kubernetes-network-plugins-cni-over-10gbit-s-network-updated-august-2020-6e1b757b9e49
- https://phoenixnap.com/kb/prometheus-kubernetes-monitoring