全部產品
Search
文件中心

:ACK對接ECI

更新時間:Jul 16, 2024

ECI能為Kubernetes提供基礎的容器Pod運行環境,但業務間的依賴、負載平衡、Auto Scaling、定期調度等能力依然需要Kubernetes來提供。本文為您介紹阿里雲Container ServiceKubernetes版(簡稱ACK)如何與ECI對接,使用ECI作為Pod的運行資源。

對接方式

ECI為Kubernetes提供一種層次化的解決方案:即ECI負責底層Pod容器資源的調度和管理工作,Kubernetes在ECI之上作為PaaS層來管理業務負載,例如管理Deployment、Service、StatefulSet、CronJob等。

基於Kubernetes社區的Virtual Kubelet(簡稱VK)技術,ECI可以以虛擬節點的形式接入到Kubernetes叢集中,使得叢集可以輕鬆獲得極大的彈效能力,而不必受限於叢集的節點計算容量。ECI在接管Pod容器底層基礎設施的管理工作後,Kubernetes不再需要直接負責單個Pod的放置、啟動等工作,也不再需要關心底層虛擬機器的資源情況,通過ECI即可確保Pod需要的資源隨時可用。

目前ECI已經無縫整合到阿里雲Container ServiceKubernetes版中,您可以通過ACK Serverless叢集或者ACK叢集,快速體驗ECI的容器運行能力。

ACK Serverless叢集(完全基於ECI)

依託ECI免營運的特性,Kubernetes可以完全依託ECI來構建,即所有Pod均運行在ECI上,Kubernetes僅需要負責管理業務負載,無需關注底層虛擬機器的營運和容量問題。

如果您進行中Kubernetes叢集的選型,強烈推薦您選用ACK Serverless叢集ACK Serverless叢集可以為您提供完全基於ECI啟動並執行Kubernetes叢集,為您的線上和離線業務、模擬環境、開發測試環境等提供免營運、低成本的Kubernetes環境。

  • 低成本

    您無需購買節點,無需對叢集進行節點維護和容量規劃,即可直接部署容器應用,並且只需要為應用配置的CPU和記憶體資源量進行按需付費。

  • 免營運

    您可以直接使用Kubernetes API或者命令列直接管理容器應用。同時,ACK Serverless叢集整合阿里雲各類服務,可以協助您簡化Kubernetes的開發,專註於應用構建而非基礎架構營運。

ACK Serverless叢集中,您無需手動部署虛擬節點,可以直接建立ECI Pod。ACK Serverless叢集中的所有Pod均基於ECI運行在安全隔離的容器運行環境中,每個Pod對應一個ECI執行個體。更多資訊,請參見ACK Serverless概述

ASK

ACK叢集(混合使用ECI和ECS)

ACK是全球首批通過Kubernetes一致性認證的服務平台,提供高效能的容器應用管理服務。它整合了阿里雲虛擬化、儲存、網路和安全能力,簡化叢集的搭建和擴容等工作,讓您專註於容器化的應用的開發與管理。

如果您已經建立了ACK叢集,可以通過部署虛擬節點(基於VK)的方式來使用ECI。有了虛擬節點後,當您的ACK叢集需要擴容時,無需規劃節點的計算容量,可以直接在虛擬節點下按需建立ECI,ECI與叢集中真實節點上的Pod之間網路互連。建議您將長時間啟動並執行業務負載的彈性流量部分調度至ECI,這可以縮短彈性擴容的時間,減少擴容成本,並充分利用已有資源。當業務流量下降後,您可以快速釋放部署在ECI上的Pod,從而降低使用成本。

在ACK叢集中,您需要手動部署虛擬節點(基於VK),才能建立ECI Pod。虛擬節點上的Pod均基於ECI運行在安全隔離的容器運行環境中,每個Pod對應一個ECI執行個體。更多資訊,請參見ACK產品概述

ACK+ECI

說明

如果您在阿里雲ECS上或者線下IDC自建了Kubernetes叢集,需要自行部署虛擬節點(基於VNode)來使用ECI,更多資訊,請參見自建Kubernetes叢集對接ECI

管理工具

通過VK將ECI以虛擬節點的方式接入Kubernetes叢集後,您可以通過以下方式管理Kubernetes叢集及ECI執行個體的運行情況:

  • Elastic Container Instance控制台

    您可以通過Elastic Container Instance控制台查看ECI執行個體的運行情況。操作步驟如下:

    1. 登入Elastic Container Instance控制台

    2. 在頂部功能表列左上方處選擇地區。

    3. 容器組頁面,您可以查看該地區下已經建立的ECI執行個體。

  • Container Service管理主控台

    您可以通過Container Service管理主控台來操作ACK Serverless叢集或ACK叢集,並查看ECI執行個體的運行情況。查看ECI執行個體的操作步驟如下:

    1. 登入Container Service管理主控台

    2. 在左側導覽列單擊叢集

    3. 在叢集列表中找到想要查看的叢集,單擊叢集ID進入詳情頁面。

    4. 在左側導覽列,選擇工作負載>容器組

    5. 容器組頁面,選擇命名空間,您可以查看該命名空間下的ECI執行個體。

  • 阿里雲CloudShell

    您可以通過阿里雲提供的CloudShell來訪問Kubernetes叢集,使用Kubectl命令來管理叢集。具體操作,請參見在CloudShell上通過kubectl管理Kubernetes叢集

  • kubectl用戶端

    您可以通過kubectl用戶端在本機電腦來訪問遠端的Kubernetes叢集,使用Kubectl命令來管理叢集。具體操作,請參見通過kubectl串連Kubernetes叢集

功能限制和說明

基於公用雲端的安全性和虛擬節點本身帶來的限制,ECI目前還不支援Kubernetes中HostPath、DaemonSet等功能,具體如下表所示。

不支援的功能

說明

推薦替代方案

HostPath

掛載本地宿主機檔案到容器中

使用emptyDir、雲端硬碟或者NAS檔案系統

HostNetwork

將宿主機連接埠映射到容器上

使用type=LoadBalancer的負載平衡

DaemonSet

在容器所在宿主機上部署Static Pod

通過sidecar形式在Pod中部署多個鏡像

type=NodePort的Service

將宿主機連接埠映射到容器上

使用type=LoadBalancer的負載平衡

通過Container ServiceKubernetes版使用ECI時,請注意以下事項:

  • 請先將容器鏡像上傳到容器鏡像倉庫中,便於鏡像拉取。推薦您使用阿里雲Container RegistryACR,並使用專用網路的鏡像地址(registry-vpc.xxx)。

  • 支援Deployment、ReplicaSet、Job、Cronjob、StatefulSet等常見controller,可以直接運行。

  • 支援利用PrivateZone實現服務發現,建議您在建立叢集時開啟PrivateZone。

  • 支援負載平衡,即配置type=LoadBalancer的Service。

使用流程

ACK Serverless叢集

  1. 建立ACK Serverless叢集。具體操作,請參見建立叢集

  2. 準備容器鏡像。

  3. 建立ECI Pod。更多資訊,請參見ECI Pod概述

ACK叢集

  1. 建立ACK叢集。具體操作,請參見建立ACK託管叢集

  2. 部署ack-virtual-node組件產生虛擬節點。具體操作,請參見部署ACK虛擬節點群組件

    說明

    如果想要使用ECI相關的新功能,您需要升級ack-virtual-node組件。

  3. 準備容器鏡像。

  4. 建立ECI Pod。更多資訊,請參見ECI Pod概述

調度方式

對於ACK Serverless叢集,整個叢集運行在ECI上,無需進行調度。對於混合使用ECI和ECS節點的ACK叢集,您可以根據需要將Pod調度到ECI上運行,調度方式如下:

使用ECI功能

在Kubernetes叢集中建立Pod到ECI時,為充分使用ECI提供的功能,在不改變Kubernetes語義的前提下,您可以根據需求為Pod添加Annotation。Annotation需添加到Pod層級的metadata中,支援的Annotation列表以及配置樣本,請參見ECI Pod Annotation

說明

您可以在建立Pod時手動添加Annotation,也可以配置eci-profile,實現自動添加Annotation到Label能夠匹配上的Pod。