考虑在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 运行了以下部署:
- 使用 NGINX 的负载均衡器
- 使用Node的Web应用程序.js(通过REST调用与WordPress通信)
- example.com
- 在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/内存压力以调整参考。