为指定的集群安装组件。
{Creating, [Progressing]}
状态,直到安装成功,进入{Running, [Ok]}
状态。请调用 ListAddons 接口获取该组件当前的状态,查看组件是否安装成功。调用该 API 时的请求参数如下,除此之外还需传入公共请求参数。公共请求参数说明,请参见 公共参数。
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | CreateAddon | 接口名称。当前 API 的名称为 CreateAddon 。 |
Version | String | 是 | 2022-05-12 | 接口版本。当前 API 的版本为 2022-05-12 。 |
ClusterId | String | 是 | cc5silum**** | 待安装组件的集群 ID。 注意 待安装组件的集群必须处于 |
Name | String | 是 | ingress-nginx | 待安装组件的名称。 |
Version | String | 否 | v0.44.0 | 待安装组件的版本。 |
DeployMode | String | 否 | Unmanaged | 部署模式,取值:
说明 若不传入参数值,当组件支持托管时,此处系统默认为 Managed;当组件不支持托管时,此处系统默认为 Unmanaged。 |
DeployNodeType | String | 否 | VirtualNode | 部署节点类型。仅
说明 若目标当前集群已安装了 vci-virtual-kubelet 组件,则此处默认值为 VirtualNode,否则默认值为 Node。 |
Config | String | 否 | {"xxx":"true"} | 组件配置。详细配置说明,请参见下方 组件配置信息。 注意 仅 组件配置信息 中列出的组件需要配置该参数。其余组件无需配置。 |
ClientToken | String | 否 | BC028527-33B9-4990-A633-84E9F9****** | 用于保证请求幂等性的字符串。该字符串由调用方传入,需保证不同请求之间唯一。ClientToken 对大小写敏感,且最大值不超过 64 个 ASCII 字符。 |
说明
仅支持在安装该组件时配置组件信息,不支持通过 UpdateAddonConfig 接口修改组件配置。
配置内容
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
AccessKeyId | String | 否 | AK************ | 当 |
AccessKeySecret | String | 否 | SK********** | 当 |
Config 示例
{ "AccessKeyId": "AK************", "AccessKeySecret": "SK**********" }
配置内容
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
CrConfigmapData | Object | 是 | - | 镜像仓库免密组件配置信息。 |
CrConfigmapData.Namespace | String | 是 | * | 当前集群下可以免密拉取私有镜像的命名空间。默认值为* ,表示所有命名空间都可以免密拉取私有镜像;您也可以输入具体的命名空间名称,指定多个命名空间,多个名称之间以英文逗号(, )分隔。 |
CrConfigmapData.ServiceAccount | String | 是 | * | 能够使用免密组件的 Kubernetes 中的服务账号。默认值为* ,表示已配置命名空间下的所有 ServiceAccount,都可以免密拉取私有镜像;您也可以输入具体的 ServiceAccount,可以指定多个 ServiceAccount,多个名称之间以英文逗号(, )分隔。 |
CrConfigmapData.Registries | Array | 是 | - | 镜像仓库实例配置信息。 |
CrConfigmapData.Registries.0.Instance | String | 是 | cr-basic | 可以免密拉取私有镜像的目标镜像仓库实例名称。 说明
|
CrConfigmapData.Registries.0.Region | String | 是 | cn-beijing | 目标镜像仓库实例所在的地域。 |
Config 示例
{ "CrConfigmapData": { "Namespace": "*", "ServiceAccount": "*", "Registries": [ { "Instance": "cr-basic", "Region": "cn-beijing" } ] } }
说明
通过 UpdateAddonConfig 接口修改组件配置时,VmAgent.InitShards、KubeStateMetrics.InitShards 参数不支持更新,其余参数均可按需更新参数值。
配置内容
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
NodeExporterDisabled | Boolean | 否 | false | 是否禁用 node-exporter 插件。取值:
|
AutoScalingEnabled | Boolean | 否 | false | 是否开启 vm-agent 采集器和 kube-state-metrics 组件的自动扩缩容功能。取值:
|
VmAgent.InitShards | Integer | 否 | 1 | vm-agent 初始(最小)分片数。
注意
|
VmAgent.MaxShards | Integer | 否 | 5 | vm-agent 扩容最大分片数。
仅 |
VmAgent.Requests.Cpu | String | 否 | 2 | vm-agent 资源 CPU 请求。
|
VmAgent.Requests.Memory | String | 否 | 2Gi | vm-agent 资源内存请求。
|
VmAgent.Limits.Cpu | String | 否 | 4 | vm-agent 资源 CPU 上限。
|
VmAgent.Limits.Memory | String | 否 | 4Gi | vm-agent 资源内存上限。
|
KubeStateMetrics.InitShards | Integer | 否 | 1 | kube-state-metrics 初始分片数及缩容最小分片数。
注意
|
KubeStateMetrics.MaxShards | Integer | 否 | 5 | kube-state-metrics 扩容最大分片数。
仅 |
KubeStateMetrics.Requests.Cpu | String | 否 | 200m | kube-state-metrics 资源 CPU 请求。
|
KubeStateMetrics.Requests.Memory | String | 否 | 512Mi | kube-state-metrics 资源内存请求。
|
KubeStateMetrics.Limits.Cpu | String | 否 | 800m | kube-state-metrics 资源 CPU 上限。
|
KubeStateMetrics.Limits.Memory | String | 否 | 2Gi | kube-state-metrics 资源内存上限。
|
Config 示例
{ "NodeExporterDisabled": false, "VmAgent": { "InitShards": 2, "Requests": { "Cpu": "500m", "Memory": "512Mi" } } }
配置内容
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
promReplicas | Integer | 是 | 1 | PrometheusScraper 实例个数。单实例支持 10 万条数据/分钟,所需资源为 1 核 CPU 2GB 内存。一般情况下实例数为 1 可满足需求。如果集群每分钟产生 30 万条数据,请将实例数设置为 3。 说明 PrometheusScraper 默认以 Deployment 方式部署。 |
otelReplicas | Integer | 是 | 1 | OpenTelemetryCollector 实例个数。单实例支持 1 万条 trace/秒,所需资源为 1 核 CPU 2GB 内存。一般情况下实例数为 1 可满足需求。如果集群每秒产生 3 万条 trace,请将实例数设置为 3。 说明 OpenTelemetryCollector 默认以 Statefulset 方式部署。 |
Config 示例
{ "promReplicas": 1, "otelReplicas": 1 }
配置内容
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
ScanInterval | String | 否 | 10s | 弹性伸缩的间隔时间:取值为:10s 、15s 、30s 、60s 、120s 、180s 、300s ,单位为:秒。 |
ScaleDown.Enabled | Boolean | 是 | false | 是否自动缩容,取值:
|
ScaleDown.UtilizationThreshold | Float | 否 | 0.5 | 非 GPU 节点缩容阈值,取值范围:[0,1]。 |
ScaleDown.GpuUtilizationThreshold | Float | 否 | 0.5 | GPU 节点缩容阈值,取值范围:[0,1]。 |
ScaleDown.UnneededTime | Integer | 否 | 1 | 缩容触发时延,取值范围:[1,60],单位:分钟。 |
ScaleDown.DelayAfterAdded | Integer | 否 | 1 | 扩容后缩容冷却时间,取值范围:[1,60],单位:分钟。 |
ScaleDown.DelayAfterFailure | Integer | 否 | 1 | 缩容失败冷却时间,取值范围:[1,60],单位:分钟。 |
ScaleDown.SkipNodesWithLocalStorageDisabled | Boolean | 否 | false | 触发缩容时不跳过包含本地存储 Pod 的节点。取值:
当 |
ScaleDown.SkipNodesWithSystemPodsDisabled | Boolean | 否 | false | 触发缩容时不跳过包含 kube-system 命名空间下非 DaemonSet 管理的 Pod 节点。取值:
当 |
ScaleDown.MaxEmptyBulkDeleteNumber | Integer | 否 | 5 | 最大并发缩容数,取值范围:[1,15],单位:分钟。 |
ScaleDown.MinReplicas | Integer | 否 | 0 | 节点排水时允许工作负载存在的最小 Pod 数量。 |
ScaleDown.MaxGracefulTermination | Integer | 否 | 600 | 节点排水时等待 Pod 终止的最大秒数。 |
ScaleDown.DaemonSetEvictionForNodesDisabled | Boolean | 否 | false | 节点缩容时不对节点上 DaemonSet 类型的 Pod 排水。
|
ScaleUp.Expander | String | 是 | random | 节点自动扩容时所采用的扩容策略类型。取值:
|
Config 示例
{ "ScanInterval": "15s", "ScaleDown": { "Enabled": false, "UtilizationThreshold": 0.5, "GpuUtilizationThreshold": 0.5, "UnneededTime": 10, "DelayAfterAdded": 10, "DelayAfterFailure": 3, "SkipNodesWithLocalStorageDisabled": true, "SkipNodesWithSystemPodsDisabled": true, "MaxEmptyBulkDeleteNumber": 5, "MinReplicas": 0, "MaxGracefulTermination": 600, "DaemonSetEvictionForNodesDisabled": false }, "ScaleUp": { "Expander": "random" } }
说明
仅支持在安装该组件时配置组件信息,不支持通过 UpdateAddonConfig 接口修改组件配置。
配置内容
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
AccessKeyId | String | 否 | AK************ | 当 |
AccessKeySecret | String | 否 | SK********** | 当 |
ProjectId | String | 是 | 4611ffdsa8-9716--** | 关联该用户账号在集群所处地域下,已存在的日志项目 ID。 |
TopicId | String | 是 | f8fsdb36-9fae-461e--** | 日志项目下,已存在的日志主题 ID。 |
Config 示例
{ "ProjectId": "4611ffdsa8-9716-****-******", "TopicId": "f8fsdb36-9fae-461e-****-******", "AccessKeyId": "AK************", "AccessKeySecret": "SK**********" }
配置内容
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
NodePolicy | String | 是 | spread | 节点调度策略,取值:
|
ResourceWeights | Array of ResourceWeight | 否 | [] | binpack/spread 的资源权重。子参数说明,请参见下方表格 ResourceWeight。 |
GPUShareCardPolicy | String | 是 | binpack | GPU 显卡的调度策略:
若您的工作负载中存在 GPU 计算型节点和 GPU 显卡的情况下,NodePolicy 和 GPUShareCardPolicy 的组合方式说明,请参见 配置调度器自定义参数。 |
PodTopologySpreadWeight | Integer | 否 | 2 | 原生 PodTopologySpread 调度策略的打分权重,分值越高拓扑打散调度的优先级越高,Pod 越大几率被调度到分散的拓扑区域。
|
PluginsCapacityScheduling | Boolean | 否 | false | 【邀测·申请试用】是否开启 Capacity 调度。Capacity 调度通过弹性配额实现多租户间的资源共享,提升整体资源的利用率。
说明 Capacity 调度相关说明,请参见 Capacity 调度。 |
GangSchedulingEnabled | Boolean | 否 | false | 【邀测·申请试用】是否开启 Gang 调度。Gang 调度满足 All-or-Nothing 调度场景,即一组需要同时调度的 Pod 要么全部调度成功,要么一个都不成功。
说明 Gang 调度相关说明,请参见 Gang 调度。 |
ResourcePolicySchedulingEnabled | Boolean | 否 | false | 【邀测·申请试用】是否开启弹性资源优先级调度。弹性资源优先级调度通过自定义资源策略(ResourcePolicy),设置工作负载的 Pod 被弹性调度到不同类型节点(例如包年包月 ECS、按量付费 ECS、虚拟节点)的顺序。
注意
|
ResourcePolicyWeight | Integer | 否 | 100 | 仅 ResourcePolicyScheduling 开启时有效。设定弹性资源优先级调度的打分权重,权重越大得分越高。
|
LoadAwareSchedulingEnabled | Boolean | 否 | false | 【邀测·申请试用】是否开启负载感知调度。负载感知调度根据节点实际资源负载进行调度,避免出现因单个节点负载过高而导致的应用程序或节点故障。
说明 负载感知调度的使用方法,请参见 负载感知调度。 |
NumaAwareSchedulingEnabled | Boolean | 否 | false | 【邀测·申请试用】是否开启拓扑感知调度。拓扑感知调度提供中心调度器与单机协作的拓扑感知调度能力,为负载提供更好的性能。
说明 拓扑感知调度的使用方法,请参见 拓扑感知调度。 |
ResourceWeight
说明
Name 和 Weight 的更多配置说明,请参见 配置调度器自定义参数。
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
Name | String | 是 | CPU | 枚举值:
|
Weight | Integer | 是 | 100 | 取值范围为[1,10],默认值为:
|
Config 示例
{ "NodePolicy": "spread", "GPUShareCardPolicy": "binpack", "PluginsCapacityScheduling": false }
配置内容
负载均衡产品限制和相关参数的详细说明,请参见 负载均衡文档。
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
Replica | Integer | 是 | 1 | 负载均衡实例个数。 |
Resource | Object | 是 | - | Nginx 资源配置。 |
Resource.Request | Object | 是 | - | 请求资源配置。 |
Resource.Request.Cpu | String | 是 | 0.25 | CPU 资源请求,单位为 Core。 |
Resource.Request.Memory | String | 是 | 512Mi | 内存资源请求,单位为 MiB 或 GiB,格式为:内存请求+单位 ,例如512Mi 表示内存资源请求为 512 MiB;2Gi 表示内存资源请求为 2 GiB。 |
Resource.Limit | Object | 是 | - | 资源上限配置。 |
Resource.Limit.Cpu | String | 是 | 0.5 | CPU 资源上限,单位为 Core。 |
Resource.Limit.Memory | String | 是 | 1024Mi | 内存资源上限,单位为 MiB 或 GiB,格式为:内存上限+单位 ,例如1024Mi 表示内存资源上限为 1024 MiB;2Gi 表示内存资源上限为 2 GiB。 |
PublicNetwork | Object | 否 | - | 负载均衡公网配置。 |
PublicNetwork.LanType | String | 是 | BGP | 为负载均衡提供公网服务的线路类型,不同类型的线路在性能和计费标准上存在差异。当前仅支持 BGP(多线)。 |
PublicNetwork.BandWidthLimit | Integer | 是 | 10 | 公网类型负载均衡的带宽上限,单位为 Mbps,取值范围:
|
PublicNetwork.IpVersion | String | 是 | IPV4 | 公网类型负载均衡 IP 地址版本类型。当前仅支持 IPV4。 |
PublicNetwork.BillingType | Integer | 是 | 3 | 公网类型负载均衡的计费方式,取值:
|
PublicNetwork.SubnetId | String | 是 | subnet-3rei******* | 公网类型负载均衡的子网 ID。 |
PrivateNetwork | Object | 否 | - | 私网负载均衡配置。 |
PrivateNetwork.IpVersion | String | 是 | IPV4 | 私网类型负载均衡 IP 地址版本类型。当前仅支持 IPV4。 |
PrivateNetwork.SubnetId | String | 是 | subnet-3rei******* | 私网类型负载均衡的子网 ID。 |
Config 示例
{ "Replica": 1, "Resource": { "Request": { "Cpu": "0.25", "Memory": "512Mi" }, "Limit": { "Cpu": "0.5", "Memory": "1024Mi" } }, "PublicNetwork": { "LanType": "BGP", "BandWidthLimit": 10, "IpVersion": "IPV4", "BillingType": 2, "SubnetId": "subnet-3rei*******" }, "PrivateNetwork": { "SubnetId": "", "IpVersion": "" } }
说明
P2P 加速功能,目前是处于 公测 阶段。
配置内容
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
Region | String | 是 | cn-beijing | 已开启 P2P 加速的镜像仓库实例所在地域。 |
Registry | String | 是 | helm-cr | 已开启 P2P 加速的镜像仓库实例。 |
NydusEnabled | Boolean | 是 | true | 【邀测·申请试用】是否同步开启镜像懒加载功能。开启后,需要安装 image-accelerator 容器镜像加速组件一同使用。镜像懒加载功能相关信息,请参见 容器镜像懒加载方案。 |
AccessKeyId | String | 否 | AK************ | 当 |
AccessKeySecret | String | 否 | SK********** | 当 |
DaemonProxyReplicas | Integer | 否 | 3 | 自定义设置 Dfdaemon(P2P 网络传输节点)Proxy 容器数量,默认值:3。 |
Config 示例
{ "Region": "cn-beijing", "Registry": "helm-cr", "NydusEnabled": true }
说明
mGPU 组件目前处于 公测 阶段。
配置内容
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
ExporterDisabled | Boolean | 否 | true | 是否禁用容器共享 GPU 的资源监控插件 mgpu-exporter:
|
Config 示例
{ "ExporterDisabled": true }
配置内容
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
ExporterDisabled | Boolean | 是 | true | 是否禁用 Nvidia GPU 资源监控插件 dcgm-exporter:
|
Config 示例
{ "ExporterDisabled": true }
说明
配置内容
配置名称 | 参数类型 | 是否必传 | 示例 | 描述 |
---|---|---|---|---|
AuthType | String | 是 | EcsRole | VMP 工作区的认证鉴权方式,取值: |
Config 示例
{ "AuthType": "EcsRole" }
POST https://open.volcengineapi.com/?Action=CreateAddon&Version=2022-05-12 HTTP/1.1 Content-Type:application/json { "ClusterId": "cc5si****", "Name": "ingress-nginx", "DeployMode": "Unmanaged", "DeployNodeType": ["VirtualNode"], "Config": "{\"Replica\":1,\"Resource\":{\"Request\":{\"Cpu\":\"0.25\",\"Memory\":\"512Mi\"},\"Limit\":{\"Cpu\":\"0.5\",\"Memory\":\"1024Mi\"}},\"PrivateNetwork\":{\"SubnetId\":\"subnet-2d61qn69iji****\",\"IpVersion\":\"IPV4\"}}", "ClientToken": "BC028527-33B9-4990-A633-84E9F9******" }
本接口无专有返回参数,公共返回参数请参见 返回结果。
HTTP/1.1 200 OK Content-Type:application/json { "ResponseMetadata": { "RequestId": "0216353****", "Action": "CreateAddon", "Version": "2022-05-12", "Service": "vke", "Region": "cn-beijing" }, "Result": {} }
本接口错误码如下表所示,公共错误码请参见 公共错误码。
HTTP 状态码 | 错误码 | 错误信息 | 说明 |
---|---|---|---|
409 | AlreadyExists.{{parameter}} | The specified {{resourceType}} {{resourceId}} has already been included. | 指定资源已存在,例如同名组件已安装。 |
400 | OperationDenied.NetworkMode | The specified addon is not compatible with the current network mode. | 当前容器网络模式(PodNetworkMode)不支持安装组件。请确认目标集群的容器网络模型,并调用 ListSupportedAddons 接口,确认待安装组件支持的容器网络模型后重试。 |
400 | OperationDenied.DeployMode | The specified deploy mode is not supported. | 当前部署模式(DeployMode)不支持安装组件。请调用 ListSupportedAddons 接口,确认待安装组件的部署模式后重试。 |
400 | OperationDenied.DeployNodeType | The specified deploy node type is not supported. | 当前部署节点类型(DeployNodeType)不支持,请调用 ListSupportedAddons 接口,确认待安装组件的部署节点类型后重试。 |
400 | OperationDenied.ClusterStatus | The action has been denied due to wrong cluster status {{statusPhase}} and [{{statusConditions}}]. | 指定集群的当前状态不支持该操作。请确认该接口依赖的集群状态后重试。 |
400 | NotSupported.{{parameter}} | The specified {{resourceType}} {{resourceContent}} is not supported. | 指定的资源不支持安装。请调用 ListSupportedAddons 接口,确认可安装组件列表后重试。 |