1

我想在大型物理服务器(24 核)上部署 kubernetes,但我不确定很多事情。

除了在裸机上运行之外,为 k8s 集群创建虚拟机有哪些优缺点。

我有以下考虑:

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

安全:

  • 拥有 vm 将限制给予未来维护者的访问量,从而限制可能造成的损害。另一方面,任何未来维护者的主要任务都是添加/删除节点,他们需要裸机访问才能做到这一点。

验证:

  • 目前,开发人员只有在他们的代码通过 CI 管道运行并部署了他们正在运行的部署时才会接触服务器。但是查看日志呢?我们是否可以设置分层 kubectl 身份验证以允许开发人员仅访问已分配给他们的任何命名空间(我相信这应该可以通过 k8s 命名空间授权插件实现)。

服务器上已经存在许多虚拟机。这会是一个问题吗?

4

3 回答 3

1

I would separate dev and prod in the form of different vms. I once had a webapp inside docker which used too many threads so the docker daemon on the host crashed. It was limited to one host luckily. You can protect this by setting limits, but it's a risk: one mistake in dev could bring down prod as well.

于 2017-01-03T03:43:07.550 回答
1

128个核心和疑问....对于单个服务器来说,这是很多核心。

然而,对于 Kubernetes,这无关紧要:Kubernetes 可以使用不同大小的服务器并最大限度地利用它们。但是,如果您将主服务器进程和节点/工作进程合并到单个服务器上,则可能会产生不必要的资源问题。正如您已经提到的,您可以使用命名空间来管理它们。

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

于 2017-01-02T23:16:34.670 回答
0

我认为答案是“视情况而定!” 这不是一个真正的答案。就个人而言,我会使用 VM 拆分机器并以这种方式部署。您可以更灵活地分配多少服务器资源,并且可以轻松创建新环境,然后轻松销毁。

即使这些虚拟机真的很大,我认为它仍然更容易管理,因为你的机器上有现有的虚拟机。

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

我会查看您的环境对 HA 和正常运行时间的需求,以及您将如何部署 VM(如果您走那条路线),然后决定什么最适合您。

于 2017-01-05T01:36:32.990 回答