文档

支持的YAML和Annotation字段

选择通过Kubernetes YAML方式创建ECI类型伸缩组时,在配置YAML文件之前,您需要了解支持的YAML字段和Annotation字段,可以帮助您更好地配置符合实际场景需要的YAML文件。

支持的YAML字段

通过Kubernetes YAML方式部署ECI类型伸缩组时,在配置YAML文件时仅支持以下Kubernetes Deployment资源类型中的YAML字段:

说明

您可以参考Kubernetes官网的Deployment示例了解YAML文件的模板结构,YAML字段主要包括kindmetadataspec三部分。

支持的Kubernetes YAML字段

  • kind:资源类型,仅支持Deployment类型。

  • metadata.name:资源名称,伸缩组未使用该字段,生效名称为Annotation中的k8s.aliyun.com/ess-scaling-group-name

  • spec.replicas:Pod副本数,伸缩组中的期望实例数。

  • spec.template.spec:定义了Pod配置。具体支持的功能如下:

    功能

    YAML字段

    说明

    DNS配置

    dnsPolicy

    DNS策略。

    dnsConfig.nameservers

    DNS服务器的IP地址列表。

    dnsConfig.searches

    DNS搜索域列表。

    dnsConfig.options.name

    对象变量名。

    dnsConfig.options.value

    对象变量值。

    容器配置

    contaners.name

    容器名称。

    contaners.image

    容器镜像。

    contaners.command

    容器启动命令。

    contaners.args

    容器启动命令参数。

    contaners.imagePullPolicy

    镜像拉取策略。

    contaners.stdin

    是否为stdin分配缓冲区。

    contaners.stdinOnce

    是否为stdin分配一次性缓冲区。

    contaners.tty

    是否分配TTY。

    contaners.ports

    containerPort

    端口号。

    protocol

    TCP、UDP协议。

    contaners.env

    name

    环境变量名。

    value

    环境变量值。

    contaners.resources

    requests.cpu

    请求的CPU。

    requests.memory

    请求的内存。

    limits.cpu

    限制的CPU。

    limits.memory

    限制的内存。

    limits.nvidia.com/gpu

    可以在Pod metadata中添加Annotation来指定GPU规格。

    指定GPU规格后,需要在Container的resources中添加nvidia.com/gpu字段声明容器所需的GPU资源。

    contaners.securityContext

    runAsUser

    设置运行容器的用户ID。

    readOnlyRootFilesystem

    容器运行的根文件系统是否为只读。

    capabilities.add

    容器内的进程被授予某些特定的权限。

    contaners.volumeMounts

    name

    此字段必须与卷的名称匹配。

    mountPath

    容器内卷的挂载路径。

    mountPropagation

    确定挂载如何从主机传播到容器以及如何反向传播。

    readOnly

    取值范围:

    • true:以只读方式挂载。

    • false:以读写方式挂载。

    默认为 false。

    subPath

    卷中的路径。

    contaners.livenessProbe

    • initialDelaySeconds

    • periodSeconds

    • successThreshold

    • timeoutSeconds

    • failureThreshold

    • exec.command

    • tcpSocket.port

    • httpGet.scheme

    • httpGet.port

    • httpGet.path

    配置存活、就绪和启动探针

    contaners.readinessProbe

    • initialDelaySeconds

    • periodSeconds

    • successThreshold

    • timeoutSeconds

    • failureThreshold

    • exec.command

    • tcpSocket.port

    • httpGet.scheme

    • httpGet.port

    • httpGet.path

    init容器配置

    initContainers.name

    初始化容器名称。

    initContainers.image

    初始化容器镜像。

    initContainers.command

    初始化容器启动命令。

    initContainers.args

    初始化容器启动参数。

    initContainers.imagePullPolicy

    初始化容器镜像拉取策略。

    initContainers.env

    name

    初始化容器环境变量名称。

    value

    初始化容器环境变量值。

    initContainers.resources

    requests.cpu

    初始化容器请求的CPU。

    requests.memory

    初始化容器限制的内存。

    limits.cpu

    初始化容器限制的CPU。

    limits.memory

    初始化容器限制的内存。

    limits.nvidia.com/gpu

    初始化容器实用的GPU。

    initContainers.securityContext

    capabilities.add

    初始化容器内的进程授予某些特定的权限。

    initContainers.volumeMounts

    name

    初始化容器使用的卷名称,此字段必须与卷的名称匹配。

    mountPath

    初始化容器内卷的挂载路径。

    mountPropagation

    确定挂载如何从主机传播到初始化容器,以及如何反向传播。

    readOnly

    取值范围:

    • true:以只读方式挂载。

    • false:以读写方式挂载。

    默认为false。

    subPath

    卷中的路径。

    数据卷配置

    volumes.nfs

    name

    自定义的卷名称。

    server

    NFS服务器地址(NAS挂载点)。

    path

    NFS数据卷路径。

    readOnly

    是否只读。

    volumes.emptyDir

    sizeLimit

    临时目录EmptyDir数据卷的大小。取值时需要带上单位,建议使用Gi或Mi。

    medium

    EmptyDirVolume的存储媒介。取值范围:

    • 未指定或为空:表示使用node文件系统作为存储媒介。

    • memory:表示使用内存作为存储媒介。

    默认为空。

    volumes.flexVolume

    driver

    用于FlexVolume的驱动程序名称。

    options

    FlexVolume对象选项列表。为KV形式,采用JSON传递。

    例如:通过FlexVolume挂载云盘时,Options的格式为{"volumeId":"d-2zehdahrwoa7srg****","performanceLevel": "PL2"}

    优雅中断容器配置

    terminationGracePeriodSeconds

    程序的缓冲时间,用于处理关闭之前的操作。单位为秒。

支持的Annotation字段

通过Kubernetes YAML方式部署ECI类型伸缩组时,在配置YAML文件时仅支持扩展以下Annotation字段。

支持的Annotation

参数

示例值

说明

k8s.aliyun.com/ess-scaling-group-min-size

1

伸缩组内实例最小数。默认值:0。

k8s.aliyun.com/ess-scaling-group-max-size

20

伸缩组内实例最大数。默认值:max(replicas, 30)。

k8s.aliyun.com/eci-ntp-server

100.100.*.*

NTP Server。

k8s.aliyun.com/eci-use-specs

2-4Gi

指定ECI实例规格,支持指定多规格。更多信息,请参见多规格创建Pod

k8s.aliyun.com/eci-vswitch

vsw-bp1xpiowfm5vo8o3c****

指定交换机ID,支持指定多个交换机实现多可用区功能。

k8s.aliyun.com/eci-security-group

sg-bp1dktddjsg5nktv****

指定安全组ID。要求如下:

  • 支持指定一个或多个安全组,最多可以指定5个安全组。

  • 指定的安全组必须属于同一VPC。

  • 指定的安全组的类型必须相同。

k8s.aliyun.com/eci-sls-enable

"false"

配置为false表示关闭日志采集功能。通过SLS CRD方式采集日志时,如果某些Pod不需要采集日志,可配置该Annotation来关闭日志采集功能,避免系统自动创建Logtail而造成资源浪费。

k8s.aliyun.com/eci-spot-strategy

SpotAsPriceGo

抢占式实例的出价策略,可根据需要进行配置。

  • SpotWithPriceLimit:自定义设置抢占实例价格上限。此时必须设置k8s.aliyun.com/eci-spot-price-limit

  • SpotAsPriceGo:系统自动出价,跟随当前市场实际价格。

k8s.aliyun.com/eci-spot-price-limit

"0.5"

抢占式实例的每小时价格上限,最多支持精确到小数点后三位。仅当

k8s.aliyun.com/eci-spot-strategy

设置为

SpotWithPriceLimit

时有效。

k8s.aliyun.com/eci-with-eip

"true"

配置为true表示自动创建并绑定EIP。

k8s.aliyun.com/eci-data-cache-bucket

default

指定DataCache的Bucket。使用DataCache创建Pod时必须配置。

k8s.aliyun.com/eci-data-cache-pl

PL1

基于DataCache创建的云盘的性能等级。默认使用ESSD云盘,性能等级默认为PL1。

k8s.aliyun.com/eci-data-cache-provisionedIops

"40000"

ESSD AutoPL云盘预配置的读写IOPS。取值范围:0~min{50000, 1000 * 容量-基准性能},基准性能=min{1800+50 * 容量, 50000}。更多信息,请参见ESSD AutoPL云盘

如果添加了该Annotation,则基于DataCache创建的云盘类型为ESSD AutoPL云盘。

k8s.aliyun.com/eci-data-cache-burstingEnabled

"true"

ESSD AutoPL云盘是否开启Burst(性能突发)。更多信息,请参见ESSD AutoPL云盘

如果添加了该Annotation,则基于DataCache创建的云盘类型为ESSD AutoPL云盘。

k8s.aliyun.com/eci-custom-tags

"env:test,name:alice"

绑定的标签(Tag)字符串,最多可以绑定3个标签。标签键和标签值之间用半角冒号(:)隔开,多个标签之间用半角逗号(,)隔开。

更多Annotation信息,请参见ECI Pod Annotation

  • 本页导读