我和几个朋友正在考虑建立一个 kubernetes 集群,其中我们的家庭服务器将充当节点。
由于我们的节点将分散在我们的公寓之间,我担心这会在以下方面产生问题:
向外公开服务,因为节点的公共 IP 会有所不同。
分布式存储服务之间的网络速度和延迟,因为我们依靠 ISP 网络连接在节点之间进行通信。
我们的上传/下载速度都在 100 到 250Mbit/s 左右,但处理大存储量可能仍然是一个问题。
当我们以这种方式扩展我们的节点时,我们面临哪些挑战?
是否有任何特定的功能、教程或指南可供我阅读,以了解有关如何解决此问题的更多信息?
我们的想法是否可行?
我个人对 kubermetes 还很陌生,但我对它感到非常兴奋。
我很感谢任何答复。
答案1
将此答案发布为社区维基,因为问题中所描述的主题如果没有确切说明,可能会很广泛并且不会有明确的答案。
首先,您需要了解集群的确切要求。您想要构建哪种控制平面。有多个选项(单主控、多主控)。您可以参考官方文档:
如果您想解决一项特定的任务,最好将其包含在问题中,因为不同工作负载的潜在问题可能有所不同。
首先,您可以看看kubeadm
Kubernetes 集群的要求:
您可能会遇到的一些潜在问题:
控制器和服务旨在在 Pod 之间均匀分布流量。当流量跨越所有节点时,您可能会遇到网络延迟问题。
Kubernetes 组件已为其操作预定义超时。对于分布式集群,您需要对其进行大量调整,以实现可预测的工作,而不会在集群操作期间出现超时。
下一个潜在问题:NAT。所有 Kubernetes 节点都应该与其他节点连接无需任何地址转换。您可能会遇到需要在站点之间建立可靠的 VPN 连接的情况。
在构建高可用性 Kubernetes 集群时,您可能会遇到问题
ETCD
。特别是成员之间的同步ETCD
。任何连接丢失都可能导致仲裁丢失。没有仲裁,对集群的任何更改都是不可能的,并且可能会破坏集群。
至于存储,我认为站点之间的数据复制可能会存在问题(站点之间的延迟、站点之间发送的数据量、使用的存储解决方案类型、确保所有 pod 都能同时访问相同的数据)。您可以查看 Kubernetes 中存储概念的官方文档: