在Kubernetes集群中创建ECI类型的Pod(即ECI实例)时,为充分使用ECI提供的功能,在不改变Kubernetes语义的前提下,您可以根据需求为Pod添加Annotation。 本文为您介绍ECI实例支持的Annotation及其配置示例。
ECI实例目前支持的Annotation如下表所示。
下表列举的Annotation仅适用于创建到虚拟节点上的Pod,即ECI实例,调度到普通节点上的Pod不受这些Annotation影响。
Annotation请添加在Pod的metadata下,例如:配置Deployment时,Annotation需添加在spec>template>metadata下。
参数 | 示例值 | 描述 | 相关文档 |
---|---|---|---|
k8s.aliyun.com/eci-security-group | sg-bp1dktddjsg5nktv**** | 安全组ID。 | |
k8s.aliyun.com/eci-vswitch | vsw-bp1xpiowfm5vo8o3c**** | 交换机ID,支持指定多个交换机实现多可用区功能。 | |
k8s.aliyun.com/eci-schedule-strategy | VSwitchOrdered | 多可用区调度策略。取值范围:
| |
k8s.aliyun.com/eci-ram-role-name | AliyunECIContainerGroupRole | RAM角色,赋予ECI访问阿里云产品的能力。 | 无,详见下文 |
k8s.aliyun.com/eci-use-specs | 2-4Gi,4-8Gi,ecs.c6.xlarge | ECI实例规格,支持指定多规格,包括指定vCPU和内存,或者ECS规格。 | |
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-cpu-option-core | 2 | CPU物理核心数。 | |
k8s.aliyun.com/eci-cpu-option-ht | 1 | 每核线程数。 | |
k8s.aliyun.com/eci-reschedule-enable | "true" | 是否开启ECI重调度。 | 无,详见下文。 |
k8s.aliyun.com/pod-fail-on-create-err | "true" | 创建失败的ECI实例是否体现Failed状态。 | 无,详见下文。 |
k8s.aliyun.com/eci-image-snapshot-id | imc-2zebxkiifuyzzlhl**** | 指定镜像缓存ID。 说明 使用镜像缓存支持手动指定和自动匹配两种方式,建议使用自动匹配方式。 | |
k8s.aliyun.com/eci-image-cache | "true" | 自动匹配镜像缓存。 说明 使用镜像缓存支持手动指定和自动匹配两种方式,建议使用自动匹配方式。 | |
k8s.aliyun.com/acr-instance-id | cri-j36zhodptmyq**** | ACR企业版实例ID。 支持跨地域指定ACR企业版实例,此时需在实例ID前加上所属地域,例如 | |
k8s.aliyun.com/eci-eip-instanceid | eip-bp1q5n8cq4p7f6dzu**** | EIP实例ID。 | |
k8s.aliyun.com/eci-with-eip | "true" | 是否自动创建并绑定EIP。 | |
k8s.aliyun.com/eip-bandwidth | 5 | EIP带宽。 | |
k8s.aliyun.com/eip-common-bandwidth-package-id | cbwp-2zeukbj916scmj51m**** | 共享带宽包ID。 | |
k8s.aliyun.com/eip-isp | BGP | EIP线路类型,仅按量付费的EIP支持指定。取值范围:
| |
k8s.aliyun.com/eip-internet-charge-type | PayByBandwidth | EIP的计量方式。取值范围:
| |
k8s.aliyun.com/eci-enable-ipv6 | "true" | 是否分配IPv6。 | |
kubernetes.io/ingress-bandwidth | 40M | 入方向带宽。 | |
kubernetes.io/egress-bandwidth | 20M | 出方向带宽。 | |
k8s.aliyun.com/eci-extra-ephemeral-storage | 50Gi | 临时存储空间大小。 | |
k8s.aliyun.com/eci-core-pattern | /pod/data/dump/core | Core dump文件保存目录。 | |
k8s.aliyun.com/eci-ntp-server | 100.100.*.* | NTP Server。 | |
k8s.aliyun.com/plain-http-registry | "harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80" | 自建镜像仓库地址。 使用HTTP协议的自建镜像仓库中的镜像创建ECI实例时,需配置该参数,使得ECI使用HTTP协议拉取镜像,避免因协议不同而导致镜像拉取失败。 | |
k8s.aliyun.com/insecure-registry | "harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80" | 取值为自建镜像仓库地址。 使用自签发证书的自建镜像仓库中的镜像创建ECI实例时,需配置该参数来跳过证书认证,避免因证书认证失败而导致镜像拉取失败。 |
设置RAM角色
您可以通过添加Annotation的方式为Pod设置RAM角色,授予Pod访问阿里云产品的能力。
配置前,您需要创建RAM角色并进行授权。创建RAM角色时,请确保RAM角色的受信服务为云服务器。
如果您使用RAM用户操作,请确保RAM用户具有
ram:passRole
权限。
配置示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: set-ram-role
labels:
app: vk
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
annotations:
k8s.aliyun.com/eci-ram-role-name : "${your_ram_role_name}"
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
nodeName: virtual-kubelet
设置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