在Kubernetes集群中创建ECI类型的Pod(即ECI实例)时,为充分使用ECI提供的功能,在不改变Kubernetes语义的前提下,您可以根据需求为Pod添加Annotation。 本文为您介绍ECI实例支持的和追加的Annotation及其配置示例。
ECI Pod支持的Annotation
创建ECI Pod时,支持添加的Annotation如下表所示。
重要
-
下表列举的Annotation仅适用于创建到虚拟节点上的Pod,即ECI实例,调度到普通节点上的Pod不受这些Annotation影响。
-
Annotation请添加在Pod的metadata下,例如:创建Deployment时,Annotation需添加在spec>template>metadata下。
-
仅支持在创建ECI Pod时添加ECI相关Annotation来生效ECI功能,更新ECI Pod时添加或者修改ECI相关Annotation均不会生效。
参数 |
示例值 |
描述 |
相关文档 |
k8s.aliyun.com/eci-security-group |
sg-bp1dktddjsg5nktv**** |
指定安全组ID。要求如下:
|
配置安全组 |
k8s.aliyun.com/eci-vswitch |
vsw-bp1xpiowfm5vo8o3c**** |
指定交换机ID,支持指定多个交换机实现多可用区功能。 |
多可用区创建Pod |
k8s.aliyun.com/eci-schedule-strategy |
VSwitchOrdered |
多可用区调度策略。取值范围:
|
|
k8s.aliyun.com/eci-use-specs |
2-4Gi,4-8Gi,ecs.c6.xlarge |
指定ECI实例规格,支持指定多规格,包括指定vCPU和内存,或者ECS规格。 |
|
k8s.aliyun.com/eci-gpu-driver-version |
tesla=525.85.12 |
指定GPU驱动版本。 创建GPU实例时,如果指定了支持多个驱动和CUDA版本的GPU规格,可配置该Annotation指定驱动和CUDA版本。 |
创建GPU实例 |
k8s.aliyun.com/eci-instance-family |
“ecs.c6,ecs.g6” |
指定vCPU和内存创建ECI实例时,支持指定或排除ECS规格族。 |
指定或排除ECS规格族创建Pod |
k8s.aliyun.com/eci-instance-generation |
“6,5” |
指定vCPU和内存创建ECI实例时,支持指定或排除ECS规格代数。 |
指定或排除ECS规格代数创建Pod |
k8s.aliyun.com/eci-spot-strategy |
SpotAsPriceGo |
抢占式实例的出价策略。可根据需要配置为:
|
创建抢占式实例 |
k8s.aliyun.com/eci-spot-price-limit |
“0.5” |
抢占式实例的每小时价格上限,最多支持精确到小数点后三位。 仅当k8s.aliyun.com/eci-spot-strategy设置为SpotWithPriceLimit时有效。 |
|
k8s.aliyun.com/eci-spot-duration |
“0” |
抢占式实例的保护期。默认为1,可设置为0,表示无保护期。 |
|
k8s.aliyun.com/eci-spot-fallback |
“true” |
抢占式实例没有库存时,是否自动转为按量付费。默认为false。 |
|
k8s.aliyun.com/eci-privatepool-matchcriteria |
open |
配置私有池的匹配模式。取值范围:
|
使用弹性保障的私有池资源创建Pod |
k8s.aliyun.com/eci-privatepool-id |
eap-2ze1g68k2melxkkl**** |
指定私有池ID(即弹性保障ID)。您可以在ECS管理控制台的资源预订页面的资源预订或者私有池资源页签下获取。
|
|
k8s.aliyun.com/eci-cpu-option-core |
“2” |
CPU物理核心数。 |
自定义CPU选项 |
k8s.aliyun.com/eci-cpu-option-ht |
“1” |
每核线程数。 |
|
k8s.aliyun.com/eci-custom-tags |
“env:test,name:alice” |
绑定的标签(Tag)字符串,最多可以绑定3个标签。标签键和标签值之间用半角冒号隔开,多个标签之间用半角逗号隔开。 |
绑定自定义标签 |
k8s.aliyun.com/eci-ram-role-name |
AliyunECIContainerGroupRole |
绑定RAM角色,赋予ECI访问阿里云产品的能力。 |
绑定RAM角色 |
k8s.aliyun.com/eci-fail-strategy |
fail-back |
Pod故障处理策略,取值如下:
|
设置Pod故障处理策略 |
k8s.aliyun.com/eci-custom-hosts |
“[{\”host\”:\”example.com\”,\”ip\”:\”100.100.XX.XX\”},{\”host\”:\”aliyundoc.com\”,\”ip\”:\”100.100.XX.XX\”}]” |
自定义设置Pod的hosts(即/etc/hosts)。 |
自定义设置Pod的hosts |
k8s.aliyun.com/eci-auto-imc |
“true” |
配置为true表示自动匹配镜像缓存。 |
使用ImageCache加速创建Pod |
k8s.aliyun.com/imc-perfect-match |
“true” |
自动匹配镜像缓存时,Pod内所有容器镜像是否均要完全匹配。 |
|
k8s.aliyun.com/imc-match-count-request |
“2” |
自动匹配镜像缓存时,Pod内要完全匹配的容器镜像个数。 |
|
k8s.aliyun.com/eci-imc-id |
imc-2zebxkiifuyzzlhl**** |
指定镜像缓存ID。 |
|
k8s.aliyun.com/acr-instance-ids |
cri-j36zhodptmyq**** |
指定ACR企业版实例,用于免密拉取镜像。 支持跨地域指定ACR企业版实例,此时需在实例ID前加上所属地域,例如 |
免密拉取ACR镜像 |
k8s.aliyun.com/acr-service-arns |
acs:ram::1609982529******:role/role-assume |
ECI资源归属账号下的RAM角色的ARN。 指定RAM角色创建资源时需配置。 |
|
k8s.aliyun.com/acr-user-arns |
acs:ram::1298452580******:role/role-acr |
ACR实例归属账号下的RAM角色的ARN。 跨账号拉取ACR镜像时需配置。 |
|
k8s.aliyun.com/eci-data-cache-bucket |
default |
指定DataCache的Bucket。使用DataCache创建Pod时必须配置。 |
使用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-eip-instanceid |
eip-bp1q5n8cq4p7f6dzu**** |
绑定的EIP实例ID。 |
为ECI实例绑定EIP |
k8s.aliyun.com/eci-with-eip |
“true” |
配置为true表示自动创建并绑定EIP。 |
|
k8s.aliyun.com/eip-bandwidth |
“5” |
设置EIP带宽。单位为Mbps。默认为5 Mbps。 |
|
k8s.aliyun.com/eip-common-bandwidth-package-id |
cbwp-2zeukbj916scmj51m**** |
绑定已有的共享带宽包ID。更多信息,请参见共享带宽。 |
|
k8s.aliyun.com/eip-isp |
BGP |
EIP线路类型,仅按量付费的EIP支持指定。取值范围:
更多信息,请参见EIP线路类型。 |
|
k8s.aliyun.com/eip-internet-charge-type |
PayByBandwidth |
EIP的计量方式。取值范围:
更多信息,请参见EIP计费方式。 |
|
k8s.aliyun.com/eip-public-ip-address-pool-id |
pippool-bp187arfugi543y1s**** |
IP地址池ID。 EIP将从该IP地址池中分配。更多信息,请参见创建和管理IP地址池。 |
|
k8s.aliyun.com/eci-enable-ipv6 |
“true” |
配置为true表示为Pod绑定一个IPv6地址。 |
配置IPv6地址 |
k8s.aliyun.com/eci-ipv6-bandwidth-enable |
“true” |
配置为true表示开通ECI的IPv6公网通信能力。 |
|
k8s.aliyun.com/eci-ipv6-bandwidth |
100M |
IPv6地址的公网带宽峰值。 |
|
k8s.aliyun.com/eci-private-ip-address |
“172.16.0.1” |
指定Pod的私网IP地址。目前仅支持指定IPv4地址,请确保该IP地址没有被占用。 |
指定ECI Pod的私网IP地址 |
k8s.aliyun.com/eci-fixed-ip |
“true” |
配置为true表示Pod启用固定IP地址。 |
配置ECI Pod使用固定IP地址 |
k8s.aliyun.com/eci-fixed-ip-retain-hour |
“24” |
IP地址空闲后的保留时长,即启用固定IP地址的Pod释放后,对应IP地址的保留时长,单位为小时。 如果没有配置该Annotation,默认保留48小时。 |
|
kubernetes.io/ingress-bandwidth |
40M |
入方向带宽。 |
配置ECI Pod带宽限速 |
kubernetes.io/egress-bandwidth |
20M |
出方向带宽。 |
|
k8s.aliyun.com/eci-extra-ephemeral-storage |
50Gi |
临时存储空间大小。 |
自定义临时存储空间大小 |
k8s.aliyun.com/eci-eviction-enable |
“true” |
配置为true表示系统会自动驱逐临时存储空间不足的ECI Pod。 |
设置自动驱逐临时存储空间不足的Pod |
k8s.aliyun.com/eci-core-pattern |
/pod/data/dump/core |
Core dump文件保存目录。 |
查看Core dump文件 |
k8s.aliyun.com/eci-ntp-server |
100.100.*.* |
NTP Server。 |
为Pod配置NTP服务 |
k8s.aliyun.com/plain-http-registry |
harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80 |
使用HTTP协议的自建镜像仓库中的镜像创建ECI实例时,需配置该Annotation,使得ECI使用HTTP协议拉取镜像,避免因协议不同而导致镜像拉取失败。 |
使用自建镜像仓库 |
k8s.aliyun.com/insecure-registry |
harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80 |
使用自签发证书的自建镜像仓库中的镜像创建ECI实例时,需配置该Annotation来跳过证书认证,避免因证书认证失败而导致镜像拉取失败。 |
|
k8s.aliyun.com/eci-sls-enable |
“false” |
配置为false表示关闭日志采集功能。 通过SLS CRD方式采集日志时,如果某些Pod不需要采集日志,可配置该Annotation来关闭日志采集功能,避免系统自动创建Logtail而造成资源浪费。 |
通过SLS CRD方式采集日志 |
ECI Pod追加的Annotation
ECI Pod调度完成后会追加的Annotation如下表所示。您可以通过kubectl describe
命令进行查询。
参数 |
示例值 |
描述 |
k8s.aliyun.com/eci-request-id |
45942504-4688-51BA-BBAB-4B692C4F39C0 |
请求ID。 |
k8s.aliyun.com/eci-instance-id |
eci-2ze1y0la40qgva09**** |
ECI实例ID。 |
k8s.aliyun.com/eci-instance-spec |
2.0-4.0Gi |
ECI实例规格,即实际计费规格。
|
k8s.aliyun.com/allocated-eipInstanceId |
eip-bp1q5n8cq4p7f6dzu**** |
绑定的EIP实例ID。 |
k8s.aliyun.com/allocated-eipAddress |
47.99.**.** |
绑定的EIP实例的IP地址。 |
k8s.aliyun.com/allocated-ipv6Address |
2001:d**:1:1:1:1:1:1 |
绑定的IPv6地址。 |
k8s.aliyun.com/eci-created-by-template |
true |
是否使用模板创建。 |
k8s.aliyun.com/eni-instance-id |
eni-2ze6d7oo5ukqj26o**** |
绑定的网卡ID。 |
k8s.aliyun.com/eci-vpc |
vpc-2zeghwzptn5zii0w7**** |
所属VPC。 |
k8s.aliyun.com/eci-matched-image-cache |
imc-2zedy3v37800iimu**** |
匹配的镜像缓存ID。 |
k8s.aliyun.com/eci-schedule-result |
finished |
调度结果。 |
设置ECI重调度
调度Pod到虚拟节点时,可能会碰到调度失败的情况,您可以通过添加Annotation的方式为Pod开启重调度,即使异步调度失败了,仍会一直保持调度,不返回失败。
配置示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: set-eci
labels:
app: vk
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
annotations:
k8s.aliyun.com/eci-reschedule-enable: "true" #开启ECI重调度。
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
nodeName: virtual-kubelet
Pod创建失败置为Failed
默认情况下,每个Pod在创建时,如果遇到错误,会重试一定次数,如果还是Failed,则Pod会处于Pending状态。对于一些Job类型的任务,您可能希望直接体现Failed状态。此时,您可以通过添加Annotation的方式,设置Pod遇到创建失败时,体现Failed状态。
配置示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: set-pod-fail-on-create-err
labels:
app: vk
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
annotations:
k8s.aliyun.com/pod-fail-on-create-err: "true" #设置Pod创建失败时,状态为Failed。
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
nodeName: virtual-kubelet
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/158622.html