You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
对接 VCI
通过配置 vci-profile 使用 VCI
复制全文
下载 pdf
通过配置 vci-profile 使用 VCI
弹性容器实例和容器服务提供 vci-profile 能力,可无侵入式支持业务下发至 VCI Pod。
功能介绍
vci-profile 是 VCI 配置文件,提供集群或命名空间维度的 VCI 资源使用统一配置以及全局固定配置的能力。减少用户对于业务工作负载 YAML 的修改,同时能够更加便捷、高效以及无侵入式使用 VCI 能力,避免用户混淆运维管理和业务管理的情况。
使用说明
目前通过 vci-profile 选择并调度至 VCI 资源的行为属于“软性调度”,即最终 Pod 的调度结果会受到集群中的 VCI Annotation、弹性资源优先级调度策略(Resource Policy)等能力共同作用的影响,因此存在可能导致 Pod 最终未调度至 VCI 的情况。
功能之间的相互影响说明如下:
功能
说明
作用域
作用效果
VCI Annotation
指强制使用 VCI 的 Annotation:vke.volcengine.com/burst-to-vci: enforce。该功能解决单个 Pod 是否调度到 VCI 的问题。
工作负载
硬性调度至 VCI,ResourcePolicy 策略无效。
vci-profile 文件
该功能解决无侵入式使用 VCI 的问题。
集群
软性调度至 VCI,会受到 ResourcePolicy 策略影响。详细说明见下方正文。
该功能解决 Pod 所需计算资源的问题。
工作负载
ECS、VCI 资源动态混合弹性。
前提条件
  • 已创建容器网络模型为 VPC-CNI 的集群。详细操作,请参见 创建集群
说明
目前仅 VPC-CNI 网络模型的集群支持使用 vci-profile 文件。
  • 集群已安装 vci-virtual-kubelet 组件且组件已升级至 v1.26.1 及以上版本。组件信息,请参见 vci-virtual-kubelet
配置 vci-profile
如需使用 vci-profile 能力,需要在满足 前提条件 的集群中创建 vci-profile 文件。目前支持通过容器服务控制台一键创建和通过 kubectl 创建两种方式。推荐使用控制台一键创建方式。
通过控制台一键创建
  1. 在左侧导航栏中选择 集群
  1. 在集群列表,单击需目标集群名称。
  1. 在集群管理页面的左侧导航栏中,选择 节点管理 > 虚拟节点
  1. 虚拟节点 页面单击 VCI 全局配置
  • 集群中无 vci-profile 文件时,根据系统提示,单击 一键创建,为当前集群创建 vci-profile 文件。
  • alt
  1. 在 VCI 全局配置 页面,按需配置参数,然后单击 确定
  • 参数
    选项
    说明
    VCI 全局配置
    默认采集配置
    VCI Pod 是否开启日志采集能力,将日志采集到火山引擎日志服务。
    Kubernetes 一致性策略
    特权模式
    VCI Pod 的特权模式(包括 Pod、Container 级别)兼容性配置。
    • 使用用户配置:VCI Pod 不会忽略您已有的配置。
    • 忽略用户配置:(推荐)VCI Pod 将忽略特权模式相关配置。
    • 默认情况下,VCI Pod 开启特权模式会导致 Pod 创建失败,因此有 VCI 业务的集群,推荐忽略特权模式。
    DNS 解析策略
    VCI Pod 内部的 DNS 解析行为配置。
    • 使用用户配置:VCI Pod 不会忽略您已有的配置。
    • 忽略用户配置:(推荐)VCI Pod 忽略您已有配置,自动将 DNS 解析行为从ClusterFirstWithHostNet转化为ClusterFirst
    • 默认情况下,VCI Pod 的dnsPolicy策略不支持配置为ClusterFirstWithHostNet,因此有 VCI 业务的集群,推荐使用该方式将 DNS 解析行为转化为ClusterFirst
    节点文件目录挂载策略
    VCI Pod 挂载节点文件目录的配置。
    • 使用用户配置:VCI Pod 不会忽略您已有的配置。
    • 忽略用户配置:(推荐)VCI Pod 将忽略挂载节点文件目录配置。
    • 默认情况下,VCI Pod 的volumes.hostPath配置会导致 Pod 创建失败,因此有 VCI 业务的集群,推荐忽略已有配置。
    Pod hostIP 反显策略
    VCI Pod 的节点 IP 地址相关参数status.hostIP的反显字段配置。
    • 虚拟节点 IPhostIP展示虚拟节点的 IP 地址。
    • Pod IPhostIP展示 VCI Pod IP 地址。
    VCI 选择器配置
    命中调度策略
    尽量调度
    不会忽略扩展调度器等因素影响,无法保证规则选中的 Pod 一定调度至 VCI。
    强制调度
    忽略扩展调度器等因素影响,强制保证规则选中的 Pod 一定调度至 VCI。
    规则
    名称
    选择器(selector)对象名称。系统默认的命名格式为selector-N,您也可以自定义配置,同一个集群内名称需唯一。
    命名空间选择器
    开启后,表示通过 NameSpace Label 筛选 Pod。您可按需配置如下参数:
    • 标签选择:对应 Kubernetes 的matchLabels参数,支持填写多个标签,相互为 逻辑与(AND)关系。
    • 表达式选择:对应 Kubernetes 的matchExpressions参数,支持填写多个表达式,相互为 逻辑与 关系。
    说明
    可以同时设置 标签选择表达式选择,相互为 逻辑与 关系。
    对象选择器
    开启后,表示通过 Pod Label 筛选 Pod。您可按需配置如下参数:
    • 标签选择:对应 Kubernetes 的matchLabels参数,支持填写多个标签,相互为 逻辑与 关系。
    • 表达式选择:对应 Kubernetes 的matchExpressions参数,支持填写多个表达式,相互为 逻辑与 关系。
    说明
    可以同时设置 标签选择表达式选择,相互为 逻辑与 关系。
    命中作用器
    开启后,表示为 Pod 动态追加 标签(Label)或者 注解(Annotation)。
通过 kubectl 创建
  1. 连接集群。具体操作说明,请参见 连接集群
  1. 创建 vci-profile 的 YAML 文件。
  • kube-system 命名空间下以 ConfigMap 形式创建 vci-profile 文件。后续在集群中创建 Pod 时系统会读取 kube-system 命名空间下的 vci-profile 文件,并按照 vci-profile 中的配置来创建 Pod。
  • vci-profile 文件的完整 YAML 模板如下:
  • apiVersion: v1
    kind: ConfigMap
    metadata:
    name: vci-profile # ConfigMap 名称,必须为 vci-profile。
    namespace: kube-system # vci-profile 文件所属命名空间,必须为 kube-system。
    data:
    preferredSubnetIds: subnet-3tispp1nai1****, subnet-3tispp1nai2**** # VCI Pod 所属的 VPC 子网。
    tlsEnable: "true" # VCI Pod 是否开启并采集日志到火山引擎日志服务。
    securityContextPrivilegedConfig: ignore # VCI Pod 的特权模式兼容性配置。
    dnsPolicyClusterFirstWithHostNetConfig: clusterFirst # VCI Pod 内部的 DNS 解析行为配置。
    volumesHostPathConfig: ignore # VCI Pod 挂载节点文件目录的配置。
    hostIpConfig: podIp # VCI Pod 的 status.hostIP 反显字段配置。
    enforceSelectorToVci: "true" # 是否强制调度 selectors 选中的 Pod 到 VCI。
    timezone: Asia/Shanghai # 同步虚拟节点和容器的时区。
    selectors: |
    [
    {
    "name": "selector-demo1",
    "namespaceSelector": {
    "matchLabels": {
    "vci": "true"
    },
    "matchExpressions": [
    {
    "key": "tier",
    "operator": "In",
    "values": ["backend"]
    }
    ]
    },
    "effect": {
    "annotations": {
    "vci.volcengine.com/tls-enable": "true"
    },
    "labels": {
    "created-by-vci": "true"
    }
    }
    }
    ]
  • 您可以修改 vci-profile 中的data字段配置。
  • data 中的配置项
    说明
    详细说明和示例
    selectors
    通过配置 vci-profile 文件中的selectors,匹配 Pod 使用 VCI 资源并为 Pod 增加相应的 Annotation 和 Label。
    除 selectors 外,preferredSubnetIds、tlsEnable 等配置项
    selectors外,支持通过更新preferredSubnetIdstlsEnable等配置项来控制集群级别 VCI Pod 的固定配置。
  1. 创建 vci-profile 文件对应的 ConfigMap。
  • kubectl create -f vci-profile.yaml
selectors 配置项
创建 Pod 时,系统会按照 vci-profile 文件中的selectors字段去匹配 Pod。对于 Label 能够匹配上的 Pod,会软性调度到 VCI 资源,并且为 Pod 追加 VCI 相关的 Annotation 和 Label。
selectors 参数说明
selectors中可以包含多个 selector,每个 selector 由namenamespaceSelectorobjectSelectoreffect组成。详细说明如下:
参数
必填与否
说明
name
必填
selector 对象名称。不能为空。
namespaceSelector
非必填
通过 NameSpace Label 筛选 Pod。
  • matchLabels:要匹配的 NameSpace Label。如果填写多个 Label, 相互为 逻辑与 关系。
  • matchExpressions:要匹配的 NameSpace Expressions(表达式)。如果填写多个 Expressions, 相互为 逻辑与 关系。
说明
可以同时设置 matchExpressionsmatchLabels,相互为 逻辑与 关系。
objectSelector
非必填
通过 Pod Label 筛选 Pod。
  • matchLabels:要匹配的 Pod Label。如果填写多个 Label, 相互为 逻辑与 关系。
  • matchExpressions:要匹配的 NameSpace Expressions。如果填写多个 Expressions, 相互为 逻辑与 关系。
说明
可以同时设置 matchExpressionsmatchLabels,相互为 逻辑与 关系。
effect
非必填
为 Pod 动态追加的 Annotation 和 Label。
  • annotations:要追加的 Pod Annotation。非必填。
  • labels:要追加的 Pod Label。非必填。
selectors 使用说明
  • 配置单个 selector 时:
  • 建议至少在namespaceSelectorobjectSelector中选择一个进行配置。
  • 若同时配置了namespaceSelectorobjectSelector,则 Pod 需要同时满足两者才会视为匹配,即namespaceSelectorobjectSelector逻辑与 关系。
  • namespaceSelectorobjectSelector均未配置,但是却配置了effect时,effect将对所有通过 vci-profile 判定调度到 VCI 的 Pod 生效。
注意
此时 ResourcesPolicy 策略无效。但如果 Pod 上存在 Annotation:vke.volcengine.com/burst-to-vci:enforce,则会受到该类型effect的影响。
  • 配置多个 selector 时:
  • 系统按照先后顺序匹配 selector。
  • selector 匹配 Pod 成功后,会自动把effect中声明的 Annotation 和 Label 追加到 VCI Pod 中(只追加 Key,不覆盖 Value)。
  • 对于重复的 Annotation 和 Label,Pod 中原有 Value 的优先级最高,其次是顺序匹配上的第一个 selector 中的effect,以此类推。
  • 使用namespaceSelector时,建议谨慎设置集群默认创建的命名空间(default、kube-system、kube-node-lease、kube-public)下的全部 Pod 调度到 VCI。因为 VKE 部分系统组件以 Daemonset 形式部署在上述命名空间内,目前 VCI 暂未提供完整的 Daemonset 能力。
  • 配置完成 vci-profile 文件后,仅针对新建的 Pod 或工作负载滚动重启的 Pod 生效,存量正在运行的 Pod 不受影响。
selectors 配置示例
CPU 负载配置示例
GPU 负载配置示例
通过配置namespaceSelectorobjectSelector,将 Pod 本身以及所属命名空间均含有 Label:"use-vci": "true"的 Pod 调度到 VCI。
apiVersion: v1
kind: ConfigMap
metadata:
name: vci-profile # ConfigMap 名称,必须为 vci-profile。
namespace: kube-system # vci-profile 文件所属命名空间,必须为 kube-system。
data:
selectors: |
[
{
"name": "selector-demo",
"namespaceSelector": {
"matchLabels": {
"vci": "true"
}
},
"objectSelector":{
"matchLabels":{
"use-vci": "true"
}
}
}
]
配置selectors后,您可以通过以下命令确认selectors是否生效。
kubectl get mutatingwebhookConfiguration general-webhook-mutate-configuration -o yaml
如果返回的 YAML 中已包含配置的selectors字段,则表示配置成功;如果未包含,请检查selectors的格式是否有误。以 CPU 负载配置示例 举例,YAML 中会增加如下配置:
- admissionReviewVersions:
- v1
- v1beta1
clientConfig:
caBundle: ...
url: https://xx-general-webhook:9443/vci-profile
failurePolicy: Fail
matchPolicy: Equivalent
name: vciprofile-0.mutating.ek8s.io
namespaceSelector:
matchLabels:
vci: "true"
objectSelector:
matchLabels:
use-vci: "true"
reinvocationPolicy: Never
rules:
- apiGroups:
- ""
apiVersions:
- '*'
operations:
- CREATE
resources:
- pods
scope: '*'
sideEffects: None
timeoutSeconds: 10
全局固定配置项
data中包含的preferredSubnetIdstlsEnable等固定配置项对应 Pod 的 VPC 子网、日志采集等信息,您可以根据需要进行更新。更新后的配置可以即时生效,无需重启 vci-virtual-kubelet 组件。
说明
vci-profile 文件中的全局固定配置,作用于集群级别,即在集群中创建 VCI Pod 时:
  • 如果没有额外配置,则采用 vci-profile 文件中的全局固定配置。
  • 若已通过 Annotation 为 VCI Pod 进行了额外配置,则 VCI Pod Annotation 配置优先级大于 vci-profile 文件中的全局固定配置优先级。
详细的配置项说明如下:
配置项
示例值
说明
preferredSubnetIds
subnet-3tispp1nai1****, subnet-3tispp1nai2****
VCI Pod 所属的 VPC 子网。可配置不同可用区的子网,多个子网间使用半角逗号分隔(,)。
说明
若当前虚拟节点(Virtual Node)只能识别当前可用区的单个子网,则按照先后顺序选择。
tlsEnable
true
VCI Pod 是否开启日志采集能力,将日志采集到火山引擎日志服务。Value 取值如下:
  • true:开启日志采集。
  • false:不开启日志采集。
securityContextPrivilegedConfig
ignore
VCI Pod 的特权模式(包括 Pod、Container 级别)兼容性配置。
默认情况下,VCI Pod 开启特权模式会导致 Pod 创建失败,您可以通过全局维度配置忽略特权模式。取值如下:
ignore:以 VCI 方式部署的 Pod 将忽略特权模式相关配置。
dnsPolicyClusterFirstWithHostNetConfig
clusterFirst
VCI Pod 内部的 DNS 解析行为配置。
默认情况下,VCI Pod 的dnsPolicy策略不支持配置为ClusterFirstWithHostNet,您可以通过全局维度配置,自动将ClusterFirstWithHostNet转化为ClusterFirst。取值如下:
clusterFirst:以 VCI 方式部署的 Pod 自动将 DNS 解析行为从ClusterFirstWithHostNet转化为ClusterFirst
volumesHostPathConfig
ignore
VCI Pod 挂载节点文件目录的配置。
默认情况下,VCI Pod 的volumes.hostPath配置会导致 Pod 创建失败,您可以通过全局维度配置忽略该配置项。取值如下:
ignore:以 VCI 方式部署的 Pod 将忽略挂载节点文件目录配置。
hostIpConfig
podIp
VCI Pod 的节点 IP 地址相关参数status.hostIP的反显字段配置。
默认情况下,VCI Pod 的status.hostIP会展示虚拟节点的 IP 地址,您可以通过全局维度配置修改为展示 VCI Pod 的 IP 地址。取值如下:
podIp:以 VCI 方式部署的 Pod 将使用 Pod IP 作为status.hostIP展示。
enforceSelectorToVci
true
vci-profile 文件中,selectors所选中的 Pod 是否强制调度到 VCI。
默认情况下,vci-profile 文件中,selectors所选中的 Pod 更倾向于调度至 VCI,但是会受到 Resource Policy 以及调度器所设置的其他能力影响,导致所选中的 Pod 可能不会全部调度至 VCI。您可以通过全局维度设置selectors能力强制调度至 VCI,忽略调度器和 ResourcePolicy 等资源配置策略能力的影响,确保最终一定调度至 VCI。取值如下:
true:通过 vci-profile 文件部署的 Pod 将强制调度至 VCI,忽略调度器和 ResourcePolicy 等资源配置策略能力的影响。
timezone
Asia/Shanghai
设置虚拟节点的时区。VCI Pod 开启时区同步功能后,将同步虚拟节点的时区。
配置项支持配置任意时区,格式与 Linux /usr/share/zoneinfo/目录下时区对应的文件名相同,例如Asia/Shanghai
最近更新时间:2026.01.20 17:28:00
这个页面对您有帮助吗?
有用
有用
无用
无用