在使用容器服務ACK前,需理解該產品所涉及的概念。本文為您介紹使用容器服務ACK過程中遇到的常用名詞的基本概念和簡要描述,以便于您更好地理解ACK產品。
集群
集群指容器運行所需要的云資源組合,關聯了若干服務器節點、負載均衡、專有網絡等云資源。
ACK支持的集群類型如下表。
集群類型
描述
Pro托管集群
ACK Pro托管集群是在ACK標準托管版基礎上針對企業大規模生產環境進一步增強了可靠性、安全性,并且提供可賠付的SLA的Kubernetes集群。
標準托管集群
只需創建節點,控制面板由容器服務創建并托管。具備簡單、低成本、無需運維管理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,可以用于部署和管理容器。容器服務ACK的Agent程序會被安裝到節點上并注冊到一個集群上。集群中的節點數量可以伸縮。
節點池
節點池是集群中全都具有相同配置的一組節點,節點池可以包含一個或多個節點。
ACK節點池類型分為節點池和托管節點池。
節點池類型 描述 節點池 節點池是集群中具有相同配置的一組節點,節點池可以包含一個或多個節點。節點池與彈性伸縮組實例一比一對應。當對節點池進行擴容和縮容時,ACK通過彈性伸縮服務下發擴容和移除節點的操作。您可以根據自己的需要創建和管理多個節點池。 說明 由于默認節點池中安裝了部分系統組件,彈性伸縮時可能會造成集群功能的不穩定。如果您需要實現彈性伸縮功能,建議您另建節點池。托管節點池 托管節點池是ACK全新推出的自動化運維型節點池,可以自動完成部分節點運維操作,如CVE更新、部分故障修復等,從而降低您的節點運維負擔。 更多信息,請參見托管節點池概述。
專有網絡VPC
專有網絡VPC是您自己獨有的云上私有網絡。您可以完全掌控自己的專有網絡,例如選擇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將能夠按照用戶的需要,自動創建其所需的存儲。
彈性伸縮(Autoscaling)
彈性伸縮是根據業務需求和策略,經濟地自動調整彈性計算資源的管理服務。典型的場景包含在線業務彈性、大規模計算訓練、深度學習GPU或共享GPU的訓練與推理、定時周期性負載變化等。ACK支持的彈性伸縮服務如下表。
彈性伸縮維度
彈性伸縮分類
描述
調度層彈性
容器水平伸縮(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。