You need to enable JavaScript to run this app.
导航
忽略特定容器资源需求创建实例
最近更新时间:2024.09.24 18:54:44首次发布时间:2024.09.24 18:54:44

弹性容器实例(VCI)支持在创建实例时,忽略特定容器(Container)的资源需求。满足某些特定场景下,用户希望部分不影响业务的容器无需分配独占资源的需求。

功能说明

通过为 VCI Pod 内的容器设置如下环境变量,实现 VCI 资源规整是忽略该容器的资源请求:

env:
- name: "__VCI_RESOURCE_IGNORE__"  # 自动匹配规格时,忽略该容器的resources
  value: "TRUE"

假设一个 VCI Pod 有 n 个容器,VCI 在匹配实例(Pod)规格时,按如下优先级顺序遍历 n 个容器,并仅匹配其中一种情况:

  1. 如果配置了"__VCI_RESOURCE_IGNORE__"="TRUE",则跳过该容器资源需求。
  2. 如果某种资源(CPU、Memory、GPU)配置了limit,则该资源需求累加该容器的limit值。
  3. 如果某种的资源配置了request,则该资源需求累加该容器的request值。

说明

VCI 基于 CPU、Memory、GPU 的累加值进行实例规格匹配。更多规格计算匹配说明,请参见 Pod 规格计算方式创建 GPU 型实例注意事项

使用限制

  • 本文方法,仅适用于 指定容器 vCPU 和内存创建通用型实例指定容器 GPU 资源创建 GPU 计算型实例 时忽略特定容器的资源需求。
  • 忽略特定容器的资源需求后,可能会导致匹配的 VCI 实例规格所提供的资源总量小于 Pod 中所有容器声明的资源总量,例如:
    • 忽略 CPU 和 Memory 资源需求,则 CPU 和 Memory 在容器间共享,多个容器可能出现资源争抢的情况。
    • 忽略 GPU 资源需求,则由于 GPU 资源无法在容器间共享分配,如果 Pod 匹配的 VCI 实例规格 GPU 总数小于容器总共声明的 GPU 总数,会导致 VCI Pod 创建失败(数据面失败)。
  • 建议使用该功能的方式如下:
    • CPU、Memory 场景下,可以通过忽略指定容器的资源需求,让多个容器争抢资源,同时为每个 Pod 配置limit,防止没有配置limit的容器无限制抢占其他容器资源,提高 Pod 内的资源利用率。
    • GPU 场景下,只建议为不需要 GPU 资源的容器配置该环境变量,例如 sidecar 容器,从而让其他容器可以尽可能使用更多的 CPU 和 Memory。

前提条件

已创建 VCI 业务相关的集群。详细操作,请参见 创建集群创建无 ECS 节点集群

操作步骤

Kubernetes 方式创建

以创建无状态负载(Deployment)为例,完整的示例代码如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      annotations:
        vke.volcengine.com/burst-to-vci: enforce  # 强制使用 VCI。
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx1
        image: cr-cn-beijing.volces.com/tw/nginx:1.0 # 容器镜像的地址和版本,请配置为您自己的镜像地址。
        resources:
          limits:
            cpu: "2000m"
            memory: "4096Mi"
      - name: nginx2
        image: cr-cn-beijing.volces.com/tw/nginx:1.0 # 容器镜像的地址和版本,请配置为您自己的镜像地址。
        resources:
          limits:
            cpu: "1000m"
            memory: "2048Mi"
        env:
        - name: "__VCI_RESOURCE_IGNORE__"  # 自动匹配规格时,忽略该容器的 resources。
          value: "TRUE"
      restartPolicy: Always

控制台方式创建

在 VCI 业务集群中 创建工作负载 时,配置以下参数:

  1. 配置 基本信息 时:算力类型 选择 弹性容器实例 VCI
    alt
  2. 配置 容器配置 时:环境变量 处,添加忽略当前容器资源需求的环境变量。
    alt