资源控制

推荐在 YAML 清单中针对所有 pod 设置 pod 请求和限制:

  • pod 请求定义 pod 所需的 CPU 和内存量。Kubernetes 基于这些请求量进行节点调度。
  • pod 限制是 pod 可以使用的最大 CPU 和内存量,用于防治失控 Pod 占用过多资源。

如果不包含这些值,Kubernetes 调度程序将不知道需要多少资源。 调度程序可能会在资源不足的节点上运行 pod,从而无法提供可接受的应用程序性能。

群集管理员也可以为需要设置资源请求和限制的命名空间设置资源配额。

使用 kube-advisor 检查应用程序问题

你可以定期运行 kube-advisor 工具,检查应用程序的配置是否存在问题。

运行 kube-advisor 示例:

  1. $ kubectl apply -f https://github.com/Azure/kube-advisor/raw/master/sa.yaml
  2. $ kubectl run --rm -i -t kube-advisor --image=mcr.microsoft.com/aks/kubeadvisor --restart=Never --overrides="{ \"apiVersion\": \"v1\", \"spec\": { \"serviceAccountName\": \"kube-advisor\" } }"
  3. If you don't see a command prompt, try pressing enter.
  4. +--------------+-------------------------+----------------+-------------+--------------------------------+
  5. | NAMESPACE | POD NAME | POD CPU/MEMORY | CONTAINER | ISSUE |
  6. +--------------+-------------------------+----------------+-------------+--------------------------------+
  7. | default | demo-58bcb96b46-9952m | 0 / 41272Ki | demo | CPU Resource Limits Missing |
  8. + + + + +--------------------------------+
  9. | | | | | Memory Resource Limits Missing |
  10. + + + + +--------------------------------+
  11. | | | | | CPU Request Limits Missing |
  12. + + + + +--------------------------------+
  13. | | | | | Memory Request Limits Missing |
  14. +--------------+-------------------------+----------------+-------------+--------------------------------+

参考文档