在使用Container ServiceACK前,需理解該產品所涉及的概念。本文為您介紹使用Container ServiceACK過程中遇到的常用名詞的基本概念和簡要描述,以便於您更好地理解ACK產品。
叢集
叢集指容器運行所需要的雲資源群組合,關聯了若干伺服器節點、負載平衡、專用網路等雲資源。
ACK支援的叢集類型如下表。
叢集類型
描述
Pro託管叢集
ACK Pro託管叢集是在ACK標準託管版基礎上針對企業大規模生產環境進一步增強了可靠性、安全性,並且提供可賠付的SLA的Kubernetes叢集。
標準託管叢集
只需建立節點,控制台由Container Service建立並託管。具備簡單、低成本、無需營運管理Kubernetes叢集控制台的特點。
專有叢集
需要建立3個Master(高可用)節點及若干Worker節點,可對叢集基礎設施進行更細粒度的控制,需要自行規劃、維護、升級伺服器叢集。
異構計算叢集
ACK異構計算叢集,是阿里雲推出的支援英偉達GPU異構節點,並且可以與傳統CPU節點混合部署的叢集,無需關心驅動的安裝和管理,支援主流的AI計算架構,並且支援GPU的多容器共用和隔離。
安全沙箱叢集
建立一個以彈性裸金屬(神龍)執行個體為工作節點的叢集,神龍伺服器為您提供超高效能容器執行個體,適合高負載、高頻寬需求的業務情境。
加密計算叢集
建立一個基於Intel SGX加密計算的託管叢集,可以保護您的敏感代碼和資料,適合隱私資料保護、區塊鏈、密鑰、智慧財產權、生信基因計算等情境。
ACK Edge叢集
ACK Edge叢集是針對邊緣計算情境推出的雲邊一體化協同託管方案。邊緣託管叢集採用非侵入方式增強,提供邊緣自治、邊緣單元、邊緣流量管理、原生營運API支援等能力,以原生方式支援邊緣計算情境下的應用統一生命週期管理和統一資源調度。
ACK Serverless叢集
無需建立和管理Master節點及Worker節點,即可通過控制台或者命令配置容器執行個體的資源、指明應用程式容器鏡像以及對外服務的方式,直接啟動應用程式。
註冊叢集
註冊叢集是用於將本機資料中心Kubernetes叢集或其他雲廠商Kubernetes叢集接入ACK服務平台統一管理的叢集形態。
節點
一台伺服器(可以是虛擬機器執行個體或者物理伺服器)已經安裝了Docker Engine,可以用於部署和管理容器。Container ServiceACK的Agent程式會被安裝到節點上並註冊到一個叢集上。叢集中的節點數量可以伸縮。
節點池
節點池是叢集中全都具有相同配置的一組節點,節點池可以包含一個或多個節點。
ACK節點池類型分為節點池和託管節點池。
節點池類型
描述
節點池
節點池是叢集中具有相同配置的一組節點,節點池可以包含一個或多個節點。節點池與Auto Scaling組執行個體一比一對應。當對節點池進行擴容和縮容時,ACK通過Auto Scaling服務下發擴容和移除節點的操作。您可以根據自己的需要建立和管理多個節點池。
說明由於預設節點池中安裝了部分系統組件,Auto Scaling時可能會造成叢集功能的不穩定。如果您需要實現Auto Scaling功能,建議您另建節點池。
託管節點池
託管節點池是ACK全新推出的自動化營運型節點池,可以自動完成部分節點營運操作,如CVE更新、部分損毀修復等,從而減輕您的節點營運負擔。
更多資訊,請參見託管節點池概述。
Virtual Private Cloud
Virtual Private Cloud是您自己專屬的雲上私人網路。您可以完全掌控自己的專用網路,例如選擇IP位址範圍、配置路由表和網關等,您可以在自己定義的專用網路中使用阿里雲資源如雲端服務器、雲資料庫RDS版和負載平衡等。
安全性群組
安全性群組是一種虛擬防火牆,具備狀態檢測和資料包過濾能力,用於在雲端劃分安全域。安全性群組是一個邏輯上的分組,由同一地區內具有相同安全保護需求並相互信任的執行個體組成。
應用目錄
應用目錄功能整合了Helm,提供了Helm的相關功能,並進行了相關功能擴充,例如提供圖形化介面。
編排模板
編排模板是一種儲存Kubernetes YAML格式編排檔案的方式。
Knative
Knative是基於Kubernetes的Serverless架構。其目標是制定雲原生、跨平台的Serverless編排標準。
Kubernetes
Kubernetes是一個開源平台,具有可移植性和可擴充性,用於管理容器化的工作負載和服務,簡化了聲明式配置和自動化。
容器(Container)
打包應用及其運行依賴環境的技術,一個節點可運行多個容器。
鏡像(Image)
容器鏡像是容器應用打包的標準格式,封裝了應用程式及其所有軟體依賴的位元據。在部署容器化應用時可以指定鏡像,鏡像可以來自於Docker Hub,阿里雲鏡像服務,或者使用者的私人鏡像倉庫。鏡像ID可以由鏡像所在倉庫URI和鏡像Tag(預設為
latest
)唯一確認。
鏡像倉庫(Image Registry)
容器鏡像倉庫是一種存放庫,用於儲存Kubernetes和基於容器應用開發的容器鏡像。
管理節點(Master Node)
管理節點是Kubernetes叢集的管理者,運行著的服務包括kube-apiserver、kube-scheduler、kube-controller-manager、etcd組件,和容器網路相關的組件。
工作節點(Worker Node)
工作節點是Kubernetes叢集中承擔工作負載的節點,可以是虛擬機器也可以是物理機。工作節點承擔實際的Pod調度以及與管理節點的通訊等。一個工作節點上的服務包括Docker運行時環境、kubelet、Kube-Proxy以及其它一些可選的組件。
命名空間(Namespace)
命名空間為Kubernetes叢集提供虛擬隔離作用。Kubernetes叢集初始有3個命名空間,分別是預設命名空間default、系統命名空間kube-system和kube-public,除此以外,管理員可以建立新的命名空間以滿足需求。
容器組(Pod)
Pod是Kubernetes部署應用或服務的最小的基本單位。一個Pod封裝多個應用程式容器(也可以只有一個容器)、儲存資源、一個獨立的網路IP以及管理控制容器運行方式的策略選項。
副本控制器(Replication Controller,RC)
RC確保任何時候Kubernetes叢集中有指定數量的Pod副本在運行。通過監控運行中的Pod來保證叢集中運行指定數目的Pod副本。指定的數目可以是多個也可以是1個;少於指定數目,RC就會啟動運行新的Pod副本;多於指定數目,RC就會終止多餘的Pod副本。
複本集(ReplicaSet,RS)
ReplicaSet(RS)是RC的升級版本,唯一區別是對選取器的支援,RS能支援更多種類的匹配模式。複本集對象一般不單獨使用,而是作為Deployment的理想狀態參數使用。
工作負載(Workload)
工作負載是在Kubernetes上啟動並執行應用程式。工作負載包括以下幾種類型:
工作負載類型
描述
無狀態工作負載(Deployment)
無狀態工作負載表示對Kubernetes叢集的一次更新操作。適用於運行完全獨立、功能相同應用的情境。
有狀態工作負載(StatefulSet)
有狀態工作負載支援應用部署、擴容、滾動升級時有序進行。如果希望使用儲存卷為工作負載提供持久儲存,可以使用StatefulSet作為解決方案的一部分。
守護進程集(DaemonSet)
守護進程集確保全部(或者某些)節點上運行一個Pod。與Deployment不同,DaemonSet會在指定的節點上都部署定義的Pod,確保這些節點都運行守護進程Pod。適用叢集的日誌、監控等部署情境。
任務(Job)
Job指運行一次性的任務。您可以使用Job以並行的方式運行多個 Pod。
定時任務(CronJob)
CronJob指根據規劃時間周期性地運行反覆的任務。適用於執行資料備份或者發送郵件的情境。
自訂資源(CustomResourceDefinitions,CRD)
在龐大的Kubernetes生態系統中,您可以通過CRD添加第三方工作負載資源。CRD資源允許您定義定製資源。
標籤(Label)
Labels的實質是附著在資來源物件上的一系列Key/Value索引值對,用於指定對使用者有意義的對象的屬性,標籤對核心系統是沒有直接意義的。標籤可以在建立一個對象的時候直接賦予,也可以在後期隨時修改,每一個對象可以擁有多個標籤,但key值必須唯一。
服務(Service)
Service是Kubernetes的基本操作單元,是真實應用服務的抽象,每一個服務後面都有很多對應的容器來提供支援,通過Kube-Proxy的ports和服務selector決定服務要求傳遞給後端的容器,對外表現為一個單一提供者。
路由(Ingress)
Ingress是授權入站串連到達叢集服務的規則集合。您可以通過Ingress配置提供外部可訪問的URL、負載平衡、SSL、基於名稱的虛擬機器主機等。通過POST Ingress資源到API Server的方式來請求Ingress。Ingress Controller負責實現Ingress,通常使用負載平衡器,它還可以配置邊界路由和其他前端,這有助於以高可用的方式處理流量。
配置項(ConfigMap)
配置項可用於儲存細粒度資訊如單個屬性,或粗粒度資訊如整個設定檔或JSON對象。您可以使用配置項儲存不需要加密的配置資訊和設定檔。
保密字典(Secret)
保密字典用於儲存在Kubernetes叢集中使用一些敏感的配置,例如密碼、認證等資訊。
卷(Volume)
和Docker的儲存卷有些類似,Docker的儲存卷作用範圍為一個容器,而Kubernetes的儲存卷的生命週期和作用範圍是一個Pod。每個Pod中聲明的儲存卷由Pod中的所有容器共用。
儲存卷(Persistent Volume,PV)
PV是叢集內的儲存資源,類似節點是叢集資源一樣。PV獨立於Pod的生命週期,可根據不同的StorageClass類型建立不同類型的PV。
儲存卷聲明(Persistent Volume Claim,PVC)
PVC是資源的使用者。類似Pod消耗節點資源一樣,而PVC消耗PV資源。
儲存類(StorageClass)
儲存類可以實現動態供應儲存卷。通過動態儲存裝置卷,Kubernetes將能夠按照使用者的需要,自動建立其所需的儲存。
Auto Scaling(Autoscaling)
Auto Scaling是根據業務需求和策略,經濟地自動調整彈性計算資源的管理服務。典型的情境包含線上業務彈性、大規模計算訓練、深度學習GPU或共用GPU的訓練與推理、定時周期性負載變化等。ACK支援的Auto Scaling服務如下表。
Auto Scaling維度
Auto Scaling分類
描述
調度層彈性
容器水平伸縮(HPA)
ACK容器水平伸縮基於CPU使用率自動擴縮Pod數量。適用於Deployment、StatefulSet等實現了scale介面的對象。
容器定時伸縮(CronHPA)
應對資源浪費的情境,ACK提供kubernetes-cronhpa-controller組件,實現資源定時擴容。適用於Deployment、StatefulSet等實現了scale介面的對象。此外CronHPA提供了HPA對象的相容能力,您可以同時使用CronHPA與HPA。
容器垂直伸縮(VPA)
容器垂直伸縮會基於Pod的資源使用方式自動為叢集設定資源佔用的限制,從而讓叢集將Pod調度到有足夠資源的最佳節點上。容器垂直伸縮也會保持最初容器定義中資源
request
和limit
的佔比。適用於無法水平擴充的應用,通常是在Pod出現異常恢複時生效。資源層彈性
節點自動調整
ACK的自動調整能力是通過節點自動調整組件實現的,可以按需彈出普通執行個體、GPU執行個體、競價付費執行個體,支援多可用性區域、多執行個體規格、多種伸縮模式,滿足不同的節點伸縮情境。全情境支援,適合線上業務、深度學習、大規模成本算力交付等。
可觀測性(Observability)
Kubernetes可觀測性體系包含監控和日誌兩部分,監控可以協助開發人員查看系統的運行狀態,而日誌可以協助問題的排查和診斷。
Helm
Helm是Kubernetes包管理平台。Helm將一個應用的相關資源群組織成為Charts,然後通過Charts管理程式包。
節點親和性(nodeAffinity)
節點親和性指通過Worker節點的Label標籤控制Pod部署在特定的節點上。
汙點(Taints)
汙點和節點親和性相反,它使節點能夠排斥一類特定的Pod。
容忍(Tolerations)
應用於Pod上,允許(但並不要求)Pod調度到帶有與之匹配的汙點的節點上。
應用親和性(podAffinity)
應用親和性決定應用Pod可以和特定Pod部署在同一拓撲域。例如,對於相互連信的服務,可通過應用親和性調度,將其部署到同一拓撲域(例如同一個主機)中,以減少它們之間的網路延遲。
應用反親和性(podAntiAffinity)
應用反親和性決定應用Pod不與特性Pod部署在同一拓撲域。例如,將一個服務的Pod分散部署到不同的拓撲域(例如不同主機)中,以提高服務本身的穩定性。
服務網格(Istio)
Istio是一個提供串連、保護、控制以及觀測服務的開放平台。阿里雲服務網格提供一個全託管式的服務網格平台,相容社區Istio開源服務網格,用於簡化服務的治理,包括服務調用之間的流量路由與拆分管理、服務間通訊的認證安全以及網格可觀測效能力。
相關文檔
關於Kubernetes的更多概念及術語詳情,請參見Kubernetes concepts。