Kubernetes - 如何使用资源管理规划自动缩放?



考虑在Google Container Engine上运行以下集群:

tier:         g1-small
cpu cores:    2
memory:       1,7GB per cpu core (3,4GB total in this case)
autoscaling:  enabled, min=2, max=5

在此集群上,我通过 Kubernetes 运行了以下部署:

  1. 使用 NGINX 的负载均衡器
  2. 使用Node的Web应用程序.js(通过REST调用与WordPress通信)
    • example.com
  3. 在Apache上使用WordPress的CMS (wp.example.com)
    • wp.example.com

为清楚起见,每个请求首先通过NGINX负载均衡器,然后根据子域,发送到CMS或Web App。

我希望更好地控制每个部署消耗的资源量,以便通过将 Kubernetes 限制范围应用于我的 Pod/容器资源来更有效地消耗资源。

可以对 CPU 和内存设置限制。这些在文档中有很好的解释。目前为止,一切都好。

我遇到的问题是弄清楚每个部署要应用哪些限制。

WordPress 部署在deployment.yaml文件中包含两个容器。一个用于WordPress图像本身,一个用于WordPress连接到我的Cloud SQL数据库所需的Cloud SQL代理容器。我如何知道每个容器在 CPU/内存资源方面需要什么?

此外,考虑到所有HTTP/HTTPS流量首先到达我的NGINX负载均衡器,一个有根据的猜测是将相对更多的资源应用于NGINX部署,而不是我的CMS和Web应用程序部署,对吧?!.

那么有没有办法更好地估计每个部署需要多少资源呢?

任何帮助将不胜感激!

k8s 对 Pod 的默认值是 100m CPU 请求,没有 CPU 限制,也没有内存请求/限制。如果不设置限制,Pod/容器将根据需要消耗尽可能多的内容。这非常方便,因为通常您不会一一指定限制。

Nginx作为负载均衡器是非常轻量级的。所以很难说哪一个需要更多的资源。我会遵循开始时的默认值,然后使用kubectl top pod检查 CPU/内存压力以调整参考。

最新更新