ECI能為Kubernetes提供基礎的容器Pod運行環境,每個ECI執行個體相當於一個Pod。本文介紹ECI Pod的基本配置、生命週期和使用限制等。
基本配置
基於Kubernetes社區的Virtual Kubelet技術,ECI支援以虛擬節點的形式接入到Kubernetes叢集中。一個ECI執行個體相當於一個Pod,包括規格、鏡像、儲存、網路等基本配置。
規格
規格包括vCPU、記憶體等配置,定義了ECI Pod的計算效能等。建立ECI Pod時,您可以直接指定vCPU和記憶體規格,也可以指定ECS規格來滿足GPU等特殊需求。兩種規格類型分別對應不同的計費模式,具體請參見ECI執行個體計費。
ECI支援多種建立方式來申請資源,您可以根據業務需求選擇合適的建立方式,具體請參見建立ECI Pod。
鏡像
一個ECI Pod最多可以包含20個容器。部署容器應用時,需要準備好容器鏡像。容器鏡像包含容器應用運行所需的程式、庫檔案、配置等。拉取鏡像時,需要保證網路暢通,推薦您使用鏡像緩衝(即ImageCache)功能來節約拉取鏡像耗時,加速Pod建立。
鏡像拉取
ECI Pod預設每次啟動後使用內部的containerd從遠端拉取容器鏡像。如果鏡像為公網鏡像,則ECI Pod需要具備訪問公網的能力(為VPC建立公網NAT Gateway,或者為Pod綁定EIP)。
建議您將容器鏡像儲存在阿里雲鏡像倉庫(ACR),通過VPC網路減少鏡像拉取時間。另外,對於ACR上的私人鏡像,實現了免密拉取功能,方便您使用。更多資訊,請參見免密拉取ACR鏡像和使用免密組件託管版拉取容器鏡像。
鏡像緩衝
ECI的鏡像緩衝功能可以預先將需要使用的鏡像製作成緩衝快照。後續基於鏡像緩衝來建立ECI Pod,可以避免或減少鏡像層的下載,從而提升ECI Pod的建立速度。ACK Serverless叢集中預設已部署ImageCache CRD來接入鏡像緩衝功能。更多資訊,請參見使用ImageCache加速建立ECI Pod。
儲存
臨時儲存
一個ECI Pod預設具有30 GiB的免費的臨時儲存空間,Pod啟動所使用的容器鏡像會佔用該空間。如果您有更高的臨時儲存需求,可以自訂增加臨時儲存空間大小。更多資訊,請參見增加臨時儲存空間大小。
持久化儲存
如果有共用資料或者持久化儲存資料的需求,可以為ECI Pod掛載持久化儲存卷。在ACK Serverless叢集中部署CSI儲存外掛程式,即可使用阿里雲雲端硬碟、NAS、OSS等類型的儲存卷。更多資訊,請參見儲存CSI概述。
更多關於ECI Pod儲存相關的配置,請參見儲存。
網路
私網IP地址
ECI Pod會佔用所屬VPC下交換器的一個彈性網卡資源。建立ECI Pod時,會依次從Pod Annotation(
k8s.aliyun.com/eci-vswitch
)、PodNetworking、eci-profile的配置中選擇合適的交換器,隨機為Pod分配一個私網IP地址。如果您有指定私網IP地址或者使用固定私網IP地址的需求,請參見指定ECI Pod的私網IP地址和配置ECI Pod使用固定IP地址。開通公網
預設情況下,ECI Pod不具備串連公網的能力。如果您的ECI Pod有串連公網的需求,例如需要拉取公網鏡像等,您可以為其綁定EIP,或者在所屬VPC中建立公網NAT Gateway,以實現ECI Pod與公網互連。具體操作,請參見為ECI Pod配置公網串連。
IPv6地址
ECI Pod已支援IPv6地址。相比IPv4,IPv6大大擴充了地址的可用空間。更多資訊,請參見為ECI Pod分配IPv6地址。
更多關於ECI Pod網路相關的配置,請參見網路。
容器
在ECI Pod的容器中,同樣支援Kubernetes的設定容器啟動命令、配置Liveness Probe和Readiness Probe、配置Security Context等能力。關於ECI Pod中的容器相關配置,請參見容器配置。
生命週期
在ECI Pod的生命週期中,不同的階段有其固有的狀態。關於ECI Pod狀態的變化過程,以及與Kubernetes Pod狀態的對應關係,請參見ECI Pod生命週期。
使用限制
基於公用雲端的安全性和虛擬節點本身帶來的限制,ECI目前還不支援Kubernetes中HostPath、DaemonSet等功能,具體如下表所示。
不支援的功能 | 說明 | 推薦替代方案 |
HostPath | 掛載本地宿主機檔案到容器中 | 使用emptyDir、雲端硬碟或者NAS檔案系統 |
HostNetwork | 將宿主機連接埠映射到容器上 | 使用type=LoadBalancer的負載平衡 |
DaemonSet | 在容器所在宿主機上部署Static Pod | 通過sidecar形式在Pod中部署多個鏡像 |
type=NodePort的Service | 將宿主機連接埠映射到容器上 | 使用type=LoadBalancer的負載平衡 |
更多資訊,請參見使用限制。
Pod編排
為了減少您對業務YAML的改動,ECI支援了eci-profile功能。eci-profile可以提供叢集維度ECI資源檢視,支援根據selector實現Pod編排。更多資訊,請參見配置eci-profile。
擴充使用ECI功能
資料緩衝
對於一些資料量較大的業務資料,例如訓練模型等,ECI支援建立資料緩衝(DataCache)來提前拉取資料,將資料緩衝到本地,以便在建立ECI執行個體時可以直接掛載使用,從而減少執行個體啟動耗時,避免資料重複下載,節約使用成本。更多資訊,請參見資料緩衝概述。
ECI Pod Annotation
為充分使用ECI提供的功能,在不改變Kubernetes語義的前提下,您可以根據需求為ECI Pod添加Annotation。ECI支援的Annotation列表,請參見ECI Pod Annotation。
您可以在建立ECI Pod時手動添加Annotation,也可以配置eci-profile,實現自動添加Annotation到Label能夠匹配上的ECI Pod。