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的反显字段配置。​
    • 虚拟节点 IP:hostIP展示虚拟节点的 IP 地址。​
    • Pod IP:hostIP展示 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外,支持通过更新preferredSubnetIds、tlsEnable等配置项来控制集群级别 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 由name、namespaceSelector、objectSelector、effect组成。详细说明如下:​
​
参数​
必填与否​
说明​
name​
必填​
selector 对象名称。不能为空。​
namespaceSelector​
非必填​
通过 NameSpace Label 筛选 Pod。​
  • matchLabels:要匹配的 NameSpace Label。如果填写多个 Label, 相互为 逻辑与 关系。​
  • matchExpressions:要匹配的 NameSpace Expressions(表达式)。如果填写多个 Expressions, 相互为 逻辑与 关系。​
说明​
可以同时设置 matchExpressions 和 matchLabels,相互为 逻辑与 关系。​
objectSelector​
非必填​
通过 Pod Label 筛选 Pod。​
  • matchLabels:要匹配的 Pod Label。如果填写多个 Label, 相互为 逻辑与 关系。​
  • matchExpressions:要匹配的 NameSpace Expressions。如果填写多个 Expressions, 相互为 逻辑与 关系。​
说明​
可以同时设置 matchExpressions 和 matchLabels,相互为 逻辑与 关系。​
effect​
非必填​
为 Pod 动态追加的 Annotation 和 Label。​
  • annotations:要追加的 Pod Annotation。非必填。​
  • labels:要追加的 Pod Label。非必填。​
​
selectors 使用说明​
  • 配置单个 selector 时:​
  • 建议至少在namespaceSelector和objectSelector中选择一个进行配置。​
  • 若同时配置了namespaceSelector和objectSelector,则 Pod 需要同时满足两者才会视为匹配,即namespaceSelector和objectSelector为 逻辑与 关系。​
  • 若namespaceSelector和objectSelector均未配置,但是却配置了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 负载配置示例
​
通过配置namespaceSelector和objectSelector,将 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中包含的preferredSubnetIds、tlsEnable等固定配置项对应 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
这个页面对您有帮助吗?
有用
有用
无用
无用