如何最好地在多台物理机上部署一个kubernetes集群?
How to deploy a kubernetes cluster on multiple physical machines in the best manner?
我最近完成了一个项目,我在其中创建了一个由多个 docker 容器组成的应用程序。该应用程序的目的是收集一些数据并将其安全地保存到数据库中,还允许用户通过简单的网络图形用户界面进行交互。该应用程序托管在四个不同的 Raspberry Pi 上,并且可以通过 api 从所有物理机器收集数据。此外,您可以执行一些简单的机器学习任务,例如计算 Pi 的传感器数据中的异常。
现在我正在尝试下一步并使用 kubernetes 进行一些负载平衡和远程更新。我的主要目标是从我的主节点远程更新所有树莓派。从理论上讲,这将是一个非常方便的功能。此外,我想共享集群内 Pi 的资源以进行计算。
我阅读了很多关于 Kubernets、Minikube、K3、Kind 和所有不同的设置 Kubernetes 集群的方法,但感觉我错过了 "a last puzzle piece"。
所以据我了解,我需要一种方法来设置本地(因为所有机器都放在我的桌子上/不需要云)多节点集群。我的主节点(理想情况下)是我的笔记本电脑,在虚拟机中 运行 Ubuntu。我的 rasberry 将是我的 slave/worker 节点。如果我想更新我的集群,我可以使用 kubernetes 远程更新功能。
所以我的问题是:在 kubernetes 集群中使用多个树莓作为节点并从一个主节点(笔记本电脑)管理它们是否有意义,你对实现的方式有什么建议吗这个设置。
我通常不喜欢那些不包含任何特定代码的问题或我自己提出的问题,但感觉一个简单的提示可以加速我的项目值得注意。如有不妥之处,请随时删除此问题。
此致
您没有提到您使用的是哪种 rpi 模型,但我假设您没有使用 rpi zeros。
My main goal is to remote update all raspberries from my master node.
假设您的意思是在安装在 rpi 上的 kubernetes 中更新您的应用程序 运行ning 然后继续阅读。否则请忽略我写的所有内容,您可能需要的是 ansible 或其他类似的 provisioning/configuration-management/application-deployment 工具。
现在回答你的问题:
Does it makes sense to use several rasberries as nodes in a kubernetes cluster
是的,这就是人们创建 k3s 的原因,所以这样的设置可以使用更少的资源。
and to manage them from one master node (laptop)
假设您将使用它来学习,那为什么不呢。这是可能的,但请注意,当主节点出现故障时(例如,当您关闭笔记本电脑时),所有集群都会出现故障(或至少 api-server 通信,因此您将无法更改集群的状态) .还要确保您正在为您的 VM 使用桥接网络接口,以便它在您的本地网络中作为独立实例可见。
and do you have any suggestions about the way to achieve this setup.
在您的情况下,在所有节点上安装 k3s 是最简单的。互联网上有大量资源解释如何实现它。
我想解释的最后一件事是更新。
说到 kubernetes 更新,您需要知道 kubernetes 不会自动更新。您需要明确更新它。新的 k8s 版本每 3 个月发布一次,有时 "breaks" 事情和向后兼容性是不可能的(所以在更新之前总是阅读 changelog 因为回滚可能是不可能的,除非你早些时候备份了 etcd 集群) .
说到更新应用程序 - 对于 运行 你的应用程序,你所做的就是将描述你的应用程序的 yaml 文件发送到 k8s,它会处理剩下的事情。因此,如果您想更新您的应用程序,只需将容器镜像上的标签更新为更新版本,k8s 将处理更新。 Read here 更多关于 k8s 中的更新策略。
我最近完成了一个项目,我在其中创建了一个由多个 docker 容器组成的应用程序。该应用程序的目的是收集一些数据并将其安全地保存到数据库中,还允许用户通过简单的网络图形用户界面进行交互。该应用程序托管在四个不同的 Raspberry Pi 上,并且可以通过 api 从所有物理机器收集数据。此外,您可以执行一些简单的机器学习任务,例如计算 Pi 的传感器数据中的异常。
现在我正在尝试下一步并使用 kubernetes 进行一些负载平衡和远程更新。我的主要目标是从我的主节点远程更新所有树莓派。从理论上讲,这将是一个非常方便的功能。此外,我想共享集群内 Pi 的资源以进行计算。
我阅读了很多关于 Kubernets、Minikube、K3、Kind 和所有不同的设置 Kubernetes 集群的方法,但感觉我错过了 "a last puzzle piece"。
所以据我了解,我需要一种方法来设置本地(因为所有机器都放在我的桌子上/不需要云)多节点集群。我的主节点(理想情况下)是我的笔记本电脑,在虚拟机中 运行 Ubuntu。我的 rasberry 将是我的 slave/worker 节点。如果我想更新我的集群,我可以使用 kubernetes 远程更新功能。
所以我的问题是:在 kubernetes 集群中使用多个树莓作为节点并从一个主节点(笔记本电脑)管理它们是否有意义,你对实现的方式有什么建议吗这个设置。
我通常不喜欢那些不包含任何特定代码的问题或我自己提出的问题,但感觉一个简单的提示可以加速我的项目值得注意。如有不妥之处,请随时删除此问题。
此致
您没有提到您使用的是哪种 rpi 模型,但我假设您没有使用 rpi zeros。
My main goal is to remote update all raspberries from my master node.
假设您的意思是在安装在 rpi 上的 kubernetes 中更新您的应用程序 运行ning 然后继续阅读。否则请忽略我写的所有内容,您可能需要的是 ansible 或其他类似的 provisioning/configuration-management/application-deployment 工具。
现在回答你的问题:
Does it makes sense to use several rasberries as nodes in a kubernetes cluster
是的,这就是人们创建 k3s 的原因,所以这样的设置可以使用更少的资源。
and to manage them from one master node (laptop)
假设您将使用它来学习,那为什么不呢。这是可能的,但请注意,当主节点出现故障时(例如,当您关闭笔记本电脑时),所有集群都会出现故障(或至少 api-server 通信,因此您将无法更改集群的状态) .还要确保您正在为您的 VM 使用桥接网络接口,以便它在您的本地网络中作为独立实例可见。
and do you have any suggestions about the way to achieve this setup.
在您的情况下,在所有节点上安装 k3s 是最简单的。互联网上有大量资源解释如何实现它。
我想解释的最后一件事是更新。
说到 kubernetes 更新,您需要知道 kubernetes 不会自动更新。您需要明确更新它。新的 k8s 版本每 3 个月发布一次,有时 "breaks" 事情和向后兼容性是不可能的(所以在更新之前总是阅读 changelog 因为回滚可能是不可能的,除非你早些时候备份了 etcd 集群) .
说到更新应用程序 - 对于 运行 你的应用程序,你所做的就是将描述你的应用程序的 yaml 文件发送到 k8s,它会处理剩下的事情。因此,如果您想更新您的应用程序,只需将容器镜像上的标签更新为更新版本,k8s 将处理更新。 Read here 更多关于 k8s 中的更新策略。