【问题标题】:Any benefits from scaling up Deployment's Pods on same Node in Kuberenets在 Kubernetes 的同一节点上扩展 Deployments Pod 的任何好处
【发布时间】:2017-12-08 16:01:27
【问题描述】:

考虑一个运行 1 个 Pod 的部署,该 Pod 包含一个没有指定资源限制的 NodeJS 容器。我的 Kubernetes 集群由 3 个节点组成,并且正在运行不同的应用程序,其中 2 个运行 NodeJS 以外的其他应用程序的节点正在经历稳定的高负载(即 CPU 利用率 > 80%),认为将新 Pod 调度到这些节点中是无效的。

|  Pod:A |   |  Pod:A |  |  Pod:NodeJS   |
|  Pod:B |   |  Pod:B |  |               |
|--------|   |--------|  |---------------|
|CPU 85% |   |CPU 85% |  |    CPU 60%    |
|Mem:80% |   |Mem:85% |  |    Mem:70%    |
  Node 1       Node 2          Node 3

在 NodeJS 应用程序遇到高负载的情况下,考虑到没有定义资源限制,如果我扩大部署以使额外的 Pod 也可以在 Node 3 上运行,会有什么好处吗?

|  Pod:NodeJS   |
|  Pod:NodeJS   |
|---------------|
|    CPU 60%    |
|    Mem:70%    |
     Node 3

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    如您所知,Pod 是 kubernetes 中的短暂实体。他们在没有事先通知的情况下被杀。 在您的示例中,您的 nodeJS 应用程序只有一个 pod,因此,如果您的 pod 因任何原因被重新安排,您的服务最终会停机。 出于这个原因,恕我直言,扩大您的 pod 以便同时运行它的多个实例是有意义的。 显然,如果所有实例都在同一个节点上运行,那么该节点中的故障仍然会导致您停机,但这应该比 pod 重新调度发生的频率要低得多。

    【讨论】:

    • 对于我没有考虑过的问题,这是一个很好的看法。实际上,我已经进行了一些评估以更好地了解 Kuberenets 在这种情况下的行为,在我分享结果之前我还需要做更多的测试。然而简而言之,与在不同节点上调度这样的 Pod 相比,将相同部署的两个 NodeJS Pod 放置在单个节点上并不能真正显着提高性能(响应时间)。似乎对于网络密集型应用程序,每个节点都有一个上限。
    猜你喜欢
    • 2019-04-08
    • 2020-04-10
    • 2016-11-15
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    相关资源
    最近更新 更多