【问题标题】:what is the default allocation when resources are not specified in kubernetes?Kubernetes 中未指定资源时,默认分配是什么?
【发布时间】:2021-11-15 05:50:33
【问题描述】:

下面是kubernetes POD的定义

apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP

由于我没有指定资源,会分配多少内存和CPU?是否有 kubectl 来查找为 POD 分配的内容?

【问题讨论】:

    标签: kubernetes azure-aks kubernetes-pod


    【解决方案1】:

    如果Pod没有指定资源,Pod会被调度到任意节点,选择节点时不考虑资源。

    如果 Pod 使用的内存多于可用内存或 CPU 时间很少,则 Pod 可能会被“终止”,因为具有指定资源的 Pod 将被优先考虑。为您的 Pod 设置资源是一种很好的做法。

    请参阅Configure Quality of Service for Pods - 您的 Pod 将被归类为“Best Effort”:

    要为 Pod 提供 BestEffort 的 QoS 类,Pod 中的容器不得有任何内存或 CPU 限制或请求。

    【讨论】:

    • Kubectl get po xx -o yaml 给我显示100M & 2Gi,是不是表示分配的资源是100M & 2Gi?
    • 表示你已经为 Pod 设置了资源,或者某些东西设置了一些默认资源。对于实际分配,您需要查看指标或kubectl top pod <podname>。这取决于这些是“请求”还是“限制”。
    【解决方案2】:

    在您的情况下,kubernetes 会将名为 BestEffortQoS 分配给您的 pod。 这意味着kube-scheduler 不知道如何调度您的 pod 并尽其所能。

    这也意味着你的 pod 可以消耗它想要的任何数量的资源(cpu/mem)(但是如果出现任何问题,kubelet 会驱逐它)。

    要查看 pod 的资源成本,您可以使用 kubectl top pod xxxx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 2023-03-05
      相关资源
      最近更新 更多