0

我想在大型物理服务器(24个内核)上部署kubernetes,但我对某些事情并不确定。要虚拟化或不虚拟化裸机部署的裸机服务器

除了在裸机上运行,​​为k8s集群创建虚拟机有什么优点和缺点。

我有以下几点考虑:

  • 创建VM将允许工作负载隔离。新的虚拟实验可以创建并分配给开发者。
  • 另一方面,在裸机上运行的k8s可以为每个开发人员创建一个新的NAMESPACE进行实验,他们可以在其中运行代码。毕竟他们的代码应该在Docker容器中运行。

安全:

  • 拥有的虚拟机将限制给将来的维护访问量,限制了可以做的伤害量。另一方面,对于任何未来的维护者来说,主要任务是添加/删除节点,并且他们需要裸机访问才能做到这一点。

认证:

  • 目前开发者在他们的代码贯穿CI管道及其运行部署的部署将只接触服务器。但是查看日志呢?我们可以设置分层kubectl身份验证,以允许开发人员只访问分配给他们的任何名称空间(我相信这应该可以通过k8s名称空间授权插件来实现)。

服务器上已存在多个vms。这会成为一个问题吗?

回答

1

128核心和怀疑....这是一个单一的服务器很多核心。

对于kubernetes然而,这是不相关的: Kubernetes可以使用不同大小的服务器并将其利用到最大。但是,如果将主服务器进程和节点/辅助进程组合在一台服务器上,则可能会产生不必要的资源问题。正如您已经提到的那样,您可以使用名称空间来管理它们。

我们所做的是在单个dev/qa kubernetes环境中使用与命名空间的持续集成,其中更改具有自己的命名空间(因此我们运行许多许多命名空间),并在这些命名空间中运行完整的环境部署。一堆shell脚本用于管理这个。这既适用于您的大型服务器,也适用于小型(或虚拟)盒子。虚拟化对你的好处主要在于将较大的盒子分成较小的盒子,这样你就可以将它用于其他目的,然后只用kubernetes(是的,kubernetes除了MS Windows以外,没有桌面,没有用于VPN目的的内核模块等等)。

+0

纠错24核心128GB内存:) – Jonathan

1

我会以不同vms的形式分离dev和prod。我曾经在Docker中有过一个webapp,它使用了太多的线程,所以主机上的docker守护进程崩溃了。幸运的是它仅限于一个主机。你可以通过设定限制来保护这一点,但这是一个风险:开发中的一个错误也可能会降低产品质量。

0

我想答案是“这要看情况了!”这不是一个真正的答案。就我个人而言,我会使用虚拟机来分割机器并以这种方式进行部署。您拥有更多灵活性,您可以轻松创建新环境,然后轻松销毁多少服务器资源。

即使这些虚拟磁盘真的很大,我认为它还是更容易管理,同时考虑到您在机器上存在虚拟机。

也就是说,您不能运行单个节点服务器的技术原因,但是您可能遇到因升级而导致的停机时间问题(如果这是个问题),以及该服务器需要修补或重新启动,那么你的整个群集就会关闭。

我会考虑您的环境需求以获得高可用性和正常运行时间,以及您将如何部署虚拟机(如果走这条路),并决定哪种方法最适合您。