未强制执行 AKS 容器 CPU 和内存限制

本文提供了在将 Azure Policy 加载项用于Azure Kubernetes 服务(AKS)时不会对容器强制实施 CPU 和内存限制的问题的解决方案。

现象

将应用程序部署到 AKS 群集时,会收到如下示例所示的错误:

“validation.gatekeeper.sh”拒绝请求:[container-must-have-limits] 容器 <名称> 没有资源/内存限制

原因

容器规范中未配置 CPU 和内存限制。

解决方法

若要解决此问题,请执行以下步骤,确保强制实施容器 CPU 和内存限制:

  1. 运行以下命令来检查群集的符合性:

    kubectl describe k8sazurecontainerlimits 
    

    此命令提供有关为容器配置的当前 CPU 和内存限制的信息。

  2. 为容器规范中的所有现有部署配置 CPU 和内存限制。

    下面是一个示例:

    spec: 
      containers: 
      - name: cache-service 
        image: xasag94215/flask-cache 
        ports: 
        - containerPort: 5000 
          name: rest 
        resources: 
          requests: 
            cpu: 25m 
            memory: 64Mi 
          limits: 
            cpu: 410m 
            memory: 512Mi 
    

    注意

    根据特定要求调整 CPU 和内存值。

  3. 更新容器规范后,触发重新扫描或按需扫描以评估符合性状态。 可以使用 Azure CLI 执行按需评估扫描。 有关启动按需扫描的详细信息,请参阅 按需评估扫描 - Azure CLI

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区