【K8S系列】在k8s中如何设置资源配额和LimitRange

273 阅读2分钟

【K8S系列】在k8s中如何设置资源配额和LimitRange.png 在Kubernetes集群中,资源配额(Resource Quotas)和LimitRange是两种重要的资源管理机制。以下是设置这两种机制的详细步骤:

设置资源配额(Resource Quotas)

资源配额用于限制命名空间中资源使用的总量,包括Pod数量、CPU、内存等资源。以下是设置资源配额的步骤:

  1. 创建资源配额对象

    • 使用YAML文件定义资源配额对象。例如,创建一个名为my-resource-quota的资源配额对象,限制Pod数量为10个,CPU请求为4核,内存请求为8GiB,CPU限制为6核,内存限制为12GiB。
    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: my-resource-quota
    spec:
      hard:
        pods: "10"
        requests.cpu: "4"
        requests.memory: "8Gi"
        limits.cpu: "6"
        limits.memory: "12Gi"
    
    • 应用YAML文件到Kubernetes集群中。
    kubectl apply -f resource-quota.yaml
    
  2. 将资源配额绑定到指定的命名空间

    • 使用YAML文件创建一个命名空间,并通过annotations引用之前创建的资源配额。
    apiVersion: v1
    kind: Namespace
    metadata:
      name: my-namespace
      annotations:
        quota.kubernetes.io/my-resource-quota: "1"
    
    • 或者,对于已存在的命名空间,可以通过kubectl命令直接添加annotation来绑定资源配额。
    kubectl annotate namespace my-namespace quota.kubernetes.io/my-resource-quota="1"
    

设置LimitRange

LimitRange用于定义命名空间中Pod或容器的资源限制范围,包括最小和最大资源请求、限制以及默认资源值。以下是设置LimitRange的步骤:

  1. 创建LimitRange对象

    • 使用YAML文件定义LimitRange对象。例如,创建一个名为my-limit-range的LimitRange对象,设置容器的CPU和内存的最小和最大限制。
    apiVersion: v1
    kind: LimitRange
    metadata:
      name: my-limit-range
      namespace: my-namespace
    spec:
      limits:
      - type: Container
        min:
          cpu: "200m"
          memory: "100Mi"
        max:
          cpu: "2"
          memory: "4Gi"
        default:
          cpu: "500m"
          memory: "500Mi"
        defaultRequest:
          cpu: "200m"
          memory: "200Mi"
    
    • 应用YAML文件到Kubernetes集群中。
    kubectl apply -f limit-range.yaml
    
  2. 验证LimitRange

    • 在创建Pod时,如果没有指定资源请求和限制,Kubernetes将使用LimitRange中定义的默认请求和限制值。
    • 如果Pod的资源请求或限制超出了LimitRange中定义的最小或最大限制,Pod将创建失败,并返回相应的错误信息。

通过以上步骤,你可以在Kubernetes集群中设置资源配额和LimitRange来限制和管理资源的使用。这些机制有助于确保资源的公平分配和高效利用,同时提高集群的稳定性和性能。