全部产品
Search
文档中心

容器服务 ACK:ECI Pod Annotation

更新时间:May 24, 2023

在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

多可用区调度策略。取值范围:

  • VSwitchOrdered:按顺序

  • VSwitchRandom:随机

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

抢占式实例策略。取值范围:

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

  • SpotWithPriceLimit:设置抢占实例价格上限。

创建抢占式实例

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物理核心数。

自定义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。

说明

使用镜像缓存支持手动指定和自动匹配两种方式,建议使用自动匹配方式。

使用镜像缓存CRD加速创建Pod

k8s.aliyun.com/eci-image-cache

"true"

自动匹配镜像缓存。

说明

使用镜像缓存支持手动指定和自动匹配两种方式,建议使用自动匹配方式。

k8s.aliyun.com/acr-instance-id

cri-j36zhodptmyq****

ACR企业版实例ID。

支持跨地域指定ACR企业版实例,此时需在实例ID前加上所属地域,例如"cn-beijng:cri-j36zhodptmyq****"

配置ACR企业版免密

k8s.aliyun.com/eci-eip-instanceid

eip-bp1q5n8cq4p7f6dzu****

EIP实例ID。

为ECI实例绑定EIP

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支持指定。取值范围:

  • BGP:BGP(多线)线路

  • BGP_PRO:BGP(多线)精品线路

k8s.aliyun.com/eip-internet-charge-type

PayByBandwidth

EIP的计量方式。取值范围:

  • PayByBandwidth:按带宽计费

  • PayByTraffic:按流量计费

k8s.aliyun.com/eci-enable-ipv6

"true"

是否分配IPv6。

配置IPv6地址

kubernetes.io/ingress-bandwidth

40M

入方向带宽。

ECI实例进行带宽限速

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文件保存目录。

查看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实例时,需配置该参数,使得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