【问题标题】:Specifying memory in Kubernetes pods for deployment of Docker image在 Kubernetes pod 中指定内存以部署 Docker 映像
【发布时间】:2019-01-08 23:43:24
【问题描述】:

我正在探索使用 Jenkins 通过 CI/CD 管道实现 Kubernetes 集群和部署到 Kubernetes 集群。在探索时,我发现我们不需要定义需要部署 Pod 的工作机器节点。 Kubernetes master 将负责在工作机器中部署/释放 pod 以进行部署。我们只需要在定义中定义该 pod 需要多少内存。

我的困惑是,我们已经为部署分配和配置了 Kubernetes 集群。根据 AWS EC2 的创建,所有节点都包含自己的内存(因为我计划使用 AWS Ec2 - Ubuntu 16.04 LTS)。

那么为什么我们又需要在 pod 中定义内存呢?这是正确的 pod 部署方式吗?

我只是从 CI/CD 管道世界开始。

【问题讨论】:

    标签: kubernetes memory


    【解决方案1】:

    在 pod 规范中指定内存和 cpu 是完全可选的。在 pod 级别指定内存和 CPU 仍有几个方面:

    • As explained here,如果您不指定 CPU/内存 - pod/容器会消耗该节点上的所有资源,并可能影响该节点上运行的其他 pod/容器。

    • 每个应用程序都应指定运行应用程序所需的内存和 CPU。 Kubernetes 在将 pod 调度到集群中有足够资源可用的节点之一时使用此信息。此信息可确保做出更好的调度决策。

    • 它启用 Horizo​​ntal Pod Autoscaler (HPA) 在资源消耗超过一定限制时缩放 Pod。详细说明in this doc。除非指定了内存/cpu 限制,否则您无法计算出 pod 正在运行该指标的 80%,并且应该将其扩展为两个副本。

    • 您还可以在命名空间级别启用某个默认值,然后仅覆盖特定应用程序,details here

    【讨论】:

    • 是的。我理解你的所有观点。完全清楚。谢谢@Vishal Biyani 先生。
    猜你喜欢
    • 2018-12-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 2019-03-29
    • 2020-08-01
    • 1970-01-01
    • 2019-11-11
    相关资源
    最近更新 更多