全部產品
Search
文件中心

Container Service for Kubernetes:ECI Pod Annotation

更新時間:Feb 28, 2024

在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。要求如下:

  • 支援指定一個或多個安全性群組,最多可以指定5個安全性群組。

  • 指定的安全性群組必須屬於同一VPC。

  • 指定的安全性群組的類型必須相同。

配置ECI Pod所屬安全性群組

k8s.aliyun.com/eci-vswitch

vsw-bp1xpiowfm5vo8o3c****

指定交換器ID,支援指定多個交換器實現多可用性區域功能。

多可用性區域建立Pod

k8s.aliyun.com/eci-schedule-strategy

VSwitchOrdered

多可用性區域調度策略。取值範圍:

  • VSwitchOrdered:按順序

  • VSwitchRandom:隨機

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

搶佔式執行個體的出價策略。可根據需要配置為:

  • 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-spot-duration

"0"

搶佔式執行個體的保護期。預設為1,可設定為0,表示無保護期。

k8s.aliyun.com/eci-spot-fallback

"true"

搶佔式執行個體沒有庫存時,是否自動轉為隨用隨付。預設為false。

k8s.aliyun.com/eci-privatepool-matchcriteria

open

配置私人池的匹配模式。取值範圍:

  • Open:開放模式。該模式下系統自動為執行個體匹配開放的私人池。

  • Target:指定模式。該模式下必須同時指定私人池ID。當私人池類型為專有時,必須使用該模式。

使用彈性保障的私人池資源建立Pod

k8s.aliyun.com/eci-privatepool-id

eap-2ze1g68k2melxkkl****

指定私人池ID(即彈性保障ID)。您可以在ECS管理主控台的資源預定頁面資源預定或者私人池資源頁簽下擷取。

  • 當k8s.aliyun.com/eci-privatepool-matchcriteria配置為Target時,必須配置該Annotation。

  • 當k8s.aliyun.com/eci-privatepool-matchcriteria配置為Open時,該Annotation無效。

k8s.aliyun.com/eci-custom-tags

"env:test,name:alice"

綁定的標籤(Tag)字串,最多可以綁定3個標籤。標籤鍵和標籤值之間用半形冒號隔開,多個標籤之間用半形逗號隔開。

為ECI Pod綁定自訂標籤

k8s.aliyun.com/eci-ram-role-name

AliyunECIContainerGroupRole

綁定RAM角色,賦予ECI訪問阿里雲產品的能力。

為ECI Pod綁定RAM角色

k8s.aliyun.com/eci-fail-strategy

fail-back

Pod故障處理策略,取值如下:

  • fail-back:失敗自動回復。即Pod建立失敗後自動嘗試重新建立。

  • fail-over:失敗轉移。效果等同於fail-back。

  • fail-fast:快速失敗。即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)。

自訂設定ECI 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前加上所屬地區,例如"cn-beijing:cri-j36zhodptmyq****"

免密拉取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支援指定。取值範圍:

  • BGP:BGP(多線)線路

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

更多資訊,請參見EIP線路類型

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

PayByBandwidth

EIP的計量方式。取值範圍:

  • PayByBandwidth:按頻寬計費

  • PayByTraffic:按流量計費

更多資訊,請參見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地址。

為ECI Pod分配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-ephemeral-storage-options

"{\"encrypted\":\"true\"}"

取值為"{\"encrypted\":\"true\"}"}時,表示開啟臨時儲存空間加密功能。

加密臨時儲存空間

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執行個體規格,即實際計費規格。

  • 如果傳回值是具體的vCPU和記憶體數值(如2.0-4.0Gi),則按vCPU和記憶體計費。

  • 如果傳回值是ECS規格(如ecs.c6.large),則按ECS規格計費。

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