在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,支援指定多個交換器實現多可用性區域功能。 | |
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版本。 | |
k8s.aliyun.com/eci-instance-family | "ecs.c6,ecs.g6" | 指定vCPU和記憶體建立ECI執行個體時,支援指定或排除ECS規格類型系列。 | |
k8s.aliyun.com/eci-instance-generation | "6,5" | 指定vCPU和記憶體建立ECI執行個體時,支援指定或排除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-spot-duration | "0" | 搶佔式執行個體的保護期。預設為1,可設定為0,表示無保護期。 | |
k8s.aliyun.com/eci-spot-fallback | "true" | 搶佔式執行個體沒有庫存時,是否自動轉為隨用隨付。預設為false。 | |
k8s.aliyun.com/eci-privatepool-matchcriteria | open | 配置私人池的匹配模式。取值範圍:
| |
k8s.aliyun.com/eci-privatepool-id | eap-2ze1g68k2melxkkl**** | 指定私人池ID(即彈性保障ID)。您可以在ECS管理主控台的資源預定頁面的資源預定或者私人池資源頁簽下擷取。
| |
k8s.aliyun.com/eci-custom-tags | "env:test,name:alice" | 綁定的標籤(Tag)字串,最多可以綁定3個標籤。標籤鍵和標籤值之間用半形冒號隔開,多個標籤之間用半形逗號隔開。 | |
k8s.aliyun.com/eci-ram-role-name | AliyunECIContainerGroupRole | 綁定RAM角色,賦予ECI訪問阿里雲產品的能力。 | |
k8s.aliyun.com/eci-fail-strategy | fail-back | 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)。 | |
k8s.aliyun.com/eci-auto-imc | "true" | 配置為true表示自動匹配鏡像緩衝。 | |
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前加上所屬地區,例如 | |
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時必須配置。 | |
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。 | |
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地址。 | |
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地址沒有被佔用。 | |
k8s.aliyun.com/eci-fixed-ip | "true" | 配置為true表示Pod啟用固定IP地址。 | |
k8s.aliyun.com/eci-fixed-ip-retain-hour | "24" | IP地址空閑後的保留時間長度,即啟用固定IP地址的Pod釋放後,對應IP地址的保留時間長度,單位為小時。 如果沒有配置該Annotation,預設保留48小時。 | |
kubernetes.io/ingress-bandwidth | 40M | 入方向頻寬。 | |
kubernetes.io/egress-bandwidth | 20M | 出方向頻寬。 | |
k8s.aliyun.com/eci-extra-ephemeral-storage | 50Gi | 臨時儲存空間大小。 | |
k8s.aliyun.com/eci-ephemeral-storage-options | "{\"encrypted\":\"true\"}" | 取值為 | |
k8s.aliyun.com/eci-eviction-enable | "true" | 配置為true表示系統會自動驅逐臨時儲存空間不足的ECI Pod。 | |
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執行個體時,需配置該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而造成資源浪費。 |
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