【问题标题】:In a Kubernetes cluster. Does the Master Node need always to run alone in a cluster node?在 Kubernetes 集群中。主节点是否需要始终在集群节点中单独运行?
【发布时间】:2019-11-04 05:57:09
【问题描述】:

我知道可以启用主节点来执行 pod,这是我关心的问题。由于默认配置是不允许 master 运行 pod。我应该改变它吗?默认配置是什么原因?

如果在某些情况下可以执行更改。我想问一下我的集群是否在其中之一。它只有三个具有完全相同硬件的节点,并且在可预见的将来可能不会添加更多节点。在我看来,因为我有三个相等的节点,所以使用我集群 1/3 的计算能力来运行 kubernetes master 将是一种资源浪费。我说的对吗?

[编辑1]

我在 Kubernetes 文档中找到了以下原因。 这是,安全,唯一的原因?

【问题讨论】:

  • 真正的问题是什么比安全更重要?

标签: kubernetes microservices kubectl kubeadm


【解决方案1】:

从技术上讲,它不需要在专用节点上运行。但是要让你的 Kubernetes 集群运行,你需要你的 master 正常工作。确保其安全、稳定和性能良好的方法之一是使用仅运行主组件而不运行常规 pod 的单独节点。如果您与不同的 pod 共享节点,它可能会通过多种方式影响主节点。例如:

  • 其他 pod 会影响 master 的性能(网络或磁盘延迟、CPU 缓存等)
  • 它们可能存在安全风险(如果有人设法从其他 pod 侵入主节点)
  • 编写不当的应用程序可能会导致节点出现稳定性问题

虽然可以将其视为资源浪费,但您也可以将其视为为您的主 / Kubernetes 集群的稳定性付出的代价。但是,它不必浪费1/3的资源。根据您部署 Kubernetes 集群的方式,您可以为不同的节点使用不同的主机。因此,例如,您可以将小型主机用作主节点,将较大的节点用作工作节点。

【讨论】:

    【解决方案2】:

    不,这不是必需的,但强烈推荐。安全性是一个方面,但性能是另一个方面。 Etcd 通常在这些控制平面节点上运行,如果 IOPS 用完,它往往会突突突突。因此,运行应用程序代码的恶意 pod 可能会破坏控制平面的稳定性,从而降低您解决问题的能力。

    在为测试目的运行小型集群时,通常在单个节点上运行所有内容(控制平面和工作负载)以节省资金/复杂性。

    【讨论】:

      猜你喜欢
      • 2021-06-22
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 2014-12-03
      相关资源
      最近更新 更多