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網關,或者為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網關,以實現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。