基本概念
在使用容器服務(wù)ACK前,需理解該產(chǎn)品所涉及的概念。本文為您介紹使用容器服務(wù)ACK過(guò)程中遇到的常用名詞的基本概念和簡(jiǎn)要描述,以便于您更好地理解ACK產(chǎn)品。
集群
集群指容器運(yùn)行所需要的云資源組合,關(guān)聯(lián)了若干服務(wù)器節(jié)點(diǎn)、負(fù)載均衡、專有網(wǎng)絡(luò)等云資源。
ACK支持的集群類型如下表。
集群類型
描述
Pro托管集群
ACK Pro托管集群是在ACK標(biāo)準(zhǔn)托管版基礎(chǔ)上針對(duì)企業(yè)大規(guī)模生產(chǎn)環(huán)境進(jìn)一步增強(qiáng)了可靠性、安全性,并且提供可賠付的SLA的Kubernetes集群。
標(biāo)準(zhǔn)托管集群
只需創(chuàng)建節(jié)點(diǎn),控制面板由容器服務(wù)創(chuàng)建并托管。具備簡(jiǎn)單、低成本、無(wú)需運(yùn)維管理Kubernetes集群控制面板的特點(diǎn)。
專有集群
需要?jiǎng)?chuàng)建3個(gè)Master(高可用)節(jié)點(diǎn)及若干Worker節(jié)點(diǎn),可對(duì)集群基礎(chǔ)設(shè)施進(jìn)行更細(xì)粒度的控制,需要自行規(guī)劃、維護(hù)、升級(jí)服務(wù)器集群。
異構(gòu)計(jì)算集群
ACK異構(gòu)計(jì)算集群,是阿里云推出的支持英偉達(dá)GPU異構(gòu)節(jié)點(diǎn),并且可以與傳統(tǒng)CPU節(jié)點(diǎn)混合部署的集群,無(wú)需關(guān)心驅(qū)動(dòng)的安裝和管理,支持主流的AI計(jì)算框架,并且支持GPU的多容器共享和隔離。
安全沙箱集群
創(chuàng)建一個(gè)以彈性裸金屬(神龍)實(shí)例為工作節(jié)點(diǎn)的集群,神龍服務(wù)器為您提供超高性能容器實(shí)例,適合高負(fù)載、高帶寬需求的業(yè)務(wù)場(chǎng)景。
加密計(jì)算集群
創(chuàng)建一個(gè)基于Intel SGX加密計(jì)算的托管集群,可以保護(hù)您的敏感代碼和數(shù)據(jù),適合隱私數(shù)據(jù)保護(hù)、區(qū)塊鏈、密鑰、知識(shí)產(chǎn)權(quán)、生信基因計(jì)算等場(chǎng)景。
ACK Edge集群
ACK Edge集群是針對(duì)邊緣計(jì)算場(chǎng)景推出的云邊一體化協(xié)同托管方案。邊緣托管集群采用非侵入方式增強(qiáng),提供邊緣自治、邊緣單元、邊緣流量管理、原生運(yùn)維API支持等能力,以原生方式支持邊緣計(jì)算場(chǎng)景下的應(yīng)用統(tǒng)一生命周期管理和統(tǒng)一資源調(diào)度。
ACK Serverless集群
無(wú)需創(chuàng)建和管理Master節(jié)點(diǎn)及Worker節(jié)點(diǎn),即可通過(guò)控制臺(tái)或者命令配置容器實(shí)例的資源、指明應(yīng)用容器鏡像以及對(duì)外服務(wù)的方式,直接啟動(dòng)應(yīng)用程序。
注冊(cè)集群
注冊(cè)集群是用于將本地?cái)?shù)據(jù)中心Kubernetes集群或其他云廠商Kubernetes集群接入ACK服務(wù)平臺(tái)統(tǒng)一管理的集群形態(tài)。
節(jié)點(diǎn)
一臺(tái)服務(wù)器(可以是虛擬機(jī)實(shí)例或者物理服務(wù)器)已經(jīng)安裝了Docker Engine,可以用于部署和管理容器。容器服務(wù)ACK的Agent程序會(huì)被安裝到節(jié)點(diǎn)上并注冊(cè)到一個(gè)集群上。集群中的節(jié)點(diǎn)數(shù)量可以伸縮。
節(jié)點(diǎn)池
節(jié)點(diǎn)池是集群中全都具有相同配置的一組節(jié)點(diǎn),節(jié)點(diǎn)池可以包含一個(gè)或多個(gè)節(jié)點(diǎn)。
ACK節(jié)點(diǎn)池類型分為節(jié)點(diǎn)池和托管節(jié)點(diǎn)池。
節(jié)點(diǎn)池類型 描述 節(jié)點(diǎn)池 節(jié)點(diǎn)池是集群中具有相同配置的一組節(jié)點(diǎn),節(jié)點(diǎn)池可以包含一個(gè)或多個(gè)節(jié)點(diǎn)。節(jié)點(diǎn)池與彈性伸縮組實(shí)例一比一對(duì)應(yīng)。當(dāng)對(duì)節(jié)點(diǎn)池進(jìn)行擴(kuò)容和縮容時(shí),ACK通過(guò)彈性伸縮服務(wù)下發(fā)擴(kuò)容和移除節(jié)點(diǎn)的操作。您可以根據(jù)自己的需要?jiǎng)?chuàng)建和管理多個(gè)節(jié)點(diǎn)池。 說(shuō)明 由于默認(rèn)節(jié)點(diǎn)池中安裝了部分系統(tǒng)組件,彈性伸縮時(shí)可能會(huì)造成集群功能的不穩(wěn)定。如果您需要實(shí)現(xiàn)彈性伸縮功能,建議您另建節(jié)點(diǎn)池。托管節(jié)點(diǎn)池 托管節(jié)點(diǎn)池是ACK全新推出的自動(dòng)化運(yùn)維型節(jié)點(diǎn)池,可以自動(dòng)完成部分節(jié)點(diǎn)運(yùn)維操作,如CVE更新、部分故障修復(fù)等,從而降低您的節(jié)點(diǎn)運(yùn)維負(fù)擔(dān)。 更多信息,請(qǐng)參見托管節(jié)點(diǎn)池概述。
專有網(wǎng)絡(luò)VPC
專有網(wǎng)絡(luò)VPC是您自己獨(dú)有的云上私有網(wǎng)絡(luò)。您可以完全掌控自己的專有網(wǎng)絡(luò),例如選擇IP地址范圍、配置路由表和網(wǎng)關(guān)等,您可以在自己定義的專有網(wǎng)絡(luò)中使用阿里云資源如云服務(wù)器、云數(shù)據(jù)庫(kù)RDS版和負(fù)載均衡等。
安全組
安全組是一種虛擬防火墻,具備狀態(tài)檢測(cè)和數(shù)據(jù)包過(guò)濾能力,用于在云端劃分安全域。安全組是一個(gè)邏輯上的分組,由同一地域內(nèi)具有相同安全保護(hù)需求并相互信任的實(shí)例組成。
應(yīng)用目錄
應(yīng)用目錄功能集成了Helm,提供了Helm的相關(guān)功能,并進(jìn)行了相關(guān)功能擴(kuò)展,例如提供圖形化界面。
編排模板
編排模板是一種保存Kubernetes YAML格式編排文件的方式。
Knative
Knative是基于Kubernetes的Serverless框架。其目標(biāo)是制定云原生、跨平臺(tái)的Serverless編排標(biāo)準(zhǔn)。
Kubernetes
Kubernetes是一個(gè)開源平臺(tái),具有可移植性和可擴(kuò)展性,用于管理容器化的工作負(fù)載和服務(wù),簡(jiǎn)化了聲明式配置和自動(dòng)化。
容器(Container)
打包應(yīng)用及其運(yùn)行依賴環(huán)境的技術(shù),一個(gè)節(jié)點(diǎn)可運(yùn)行多個(gè)容器。
鏡像(Image)
容器鏡像是容器應(yīng)用打包的標(biāo)準(zhǔn)格式,封裝了應(yīng)用程序及其所有軟件依賴的二進(jìn)制數(shù)據(jù)。在部署容器化應(yīng)用時(shí)可以指定鏡像,鏡像可以來(lái)自于Docker Hub,阿里云鏡像服務(wù),或者用戶的私有鏡像倉(cāng)庫(kù)。鏡像ID可以由鏡像所在倉(cāng)庫(kù)URI和鏡像Tag(默認(rèn)為
latest
)唯一確認(rèn)。
鏡像倉(cāng)庫(kù)(Image Registry)
容器鏡像倉(cāng)庫(kù)是一種存儲(chǔ)庫(kù),用于存儲(chǔ)Kubernetes和基于容器應(yīng)用開發(fā)的容器鏡像。
管理節(jié)點(diǎn)(Master Node)
管理節(jié)點(diǎn)是Kubernetes集群的管理者,運(yùn)行著的服務(wù)包括kube-apiserver、kube-scheduler、kube-controller-manager、etcd組件,和容器網(wǎng)絡(luò)相關(guān)的組件。
工作節(jié)點(diǎn)(Worker Node)
工作節(jié)點(diǎn)是Kubernetes集群中承擔(dān)工作負(fù)載的節(jié)點(diǎn),可以是虛擬機(jī)也可以是物理機(jī)。工作節(jié)點(diǎn)承擔(dān)實(shí)際的Pod調(diào)度以及與管理節(jié)點(diǎn)的通信等。一個(gè)工作節(jié)點(diǎn)上的服務(wù)包括Docker運(yùn)行時(shí)環(huán)境、kubelet、Kube-Proxy以及其它一些可選的組件。
命名空間(Namespace)
命名空間為Kubernetes集群提供虛擬的隔離作用。Kubernetes集群初始有3個(gè)命名空間,分別是默認(rèn)命名空間default、系統(tǒng)命名空間kube-system和kube-public,除此以外,管理員可以創(chuàng)建新的命名空間以滿足需求。
容器組(Pod)
Pod是Kubernetes部署應(yīng)用或服務(wù)的最小的基本單位。一個(gè)Pod封裝多個(gè)應(yīng)用容器(也可以只有一個(gè)容器)、存儲(chǔ)資源、一個(gè)獨(dú)立的網(wǎng)絡(luò)IP以及管理控制容器運(yùn)行方式的策略選項(xiàng)。
副本控制器(Replication Controller,RC)
RC確保任何時(shí)候Kubernetes集群中有指定數(shù)量的Pod副本在運(yùn)行。通過(guò)監(jiān)控運(yùn)行中的Pod來(lái)保證集群中運(yùn)行指定數(shù)目的Pod副本。指定的數(shù)目可以是多個(gè)也可以是1個(gè);少于指定數(shù)目,RC就會(huì)啟動(dòng)運(yùn)行新的Pod副本;多于指定數(shù)目,RC就會(huì)終止多余的Pod副本。
副本集(ReplicaSet,RS)
ReplicaSet(RS)是RC的升級(jí)版本,唯一區(qū)別是對(duì)選擇器的支持,RS能支持更多種類的匹配模式。副本集對(duì)象一般不單獨(dú)使用,而是作為Deployment的理想狀態(tài)參數(shù)使用。
工作負(fù)載(Workload)
工作負(fù)載是在Kubernetes上運(yùn)行的應(yīng)用程序。工作負(fù)載包括以下幾種類型:
工作負(fù)載類型
描述
無(wú)狀態(tài)工作負(fù)載(Deployment)
無(wú)狀態(tài)工作負(fù)載表示對(duì)Kubernetes集群的一次更新操作。適用于運(yùn)行完全獨(dú)立、功能相同應(yīng)用的場(chǎng)景。
有狀態(tài)工作負(fù)載(StatefulSet)
有狀態(tài)工作負(fù)載支持應(yīng)用部署、擴(kuò)容、滾動(dòng)升級(jí)時(shí)有序進(jìn)行。如果希望使用存儲(chǔ)卷為工作負(fù)載提供持久存儲(chǔ),可以使用StatefulSet作為解決方案的一部分。
守護(hù)進(jìn)程集(DaemonSet)
守護(hù)進(jìn)程集確保全部(或者某些)節(jié)點(diǎn)上運(yùn)行一個(gè)Pod。與Deployment不同,DaemonSet會(huì)在指定的節(jié)點(diǎn)上都部署定義的Pod,確保這些節(jié)點(diǎn)都運(yùn)行守護(hù)進(jìn)程Pod。適用集群的日志、監(jiān)控等部署場(chǎng)景。
任務(wù)(Job)
Job指運(yùn)行一次性的任務(wù)。您可以使用Job以并行的方式運(yùn)行多個(gè) Pod。
定時(shí)任務(wù)(CronJob)
CronJob指根據(jù)規(guī)劃時(shí)間周期性地運(yùn)行反復(fù)的任務(wù)。適用于執(zhí)行數(shù)據(jù)備份或者發(fā)送郵件的場(chǎng)景。
自定義資源(CustomResourceDefinitions,CRD)
在龐大的Kubernetes生態(tài)系統(tǒng)中,您可以通過(guò)CRD添加第三方工作負(fù)載資源。CRD資源允許您定義定制資源。
標(biāo)簽(Label)
Labels的實(shí)質(zhì)是附著在資源對(duì)象上的一系列Key/Value鍵值對(duì),用于指定對(duì)用戶有意義的對(duì)象的屬性,標(biāo)簽對(duì)內(nèi)核系統(tǒng)是沒有直接意義的。標(biāo)簽可以在創(chuàng)建一個(gè)對(duì)象的時(shí)候直接賦予,也可以在后期隨時(shí)修改,每一個(gè)對(duì)象可以擁有多個(gè)標(biāo)簽,但key值必須唯一。
服務(wù)(Service)
Service是Kubernetes的基本操作單元,是真實(shí)應(yīng)用服務(wù)的抽象,每一個(gè)服務(wù)后面都有很多對(duì)應(yīng)的容器來(lái)提供支持,通過(guò)Kube-Proxy的ports和服務(wù)selector決定服務(wù)請(qǐng)求傳遞給后端的容器,對(duì)外表現(xiàn)為一個(gè)單一訪問(wèn)接口。
路由(Ingress)
Ingress是授權(quán)入站連接到達(dá)集群服務(wù)的規(guī)則集合。您可以通過(guò)Ingress配置提供外部可訪問(wèn)的URL、負(fù)載均衡、SSL、基于名稱的虛擬主機(jī)等。通過(guò)POST Ingress資源到API Server的方式來(lái)請(qǐng)求Ingress。Ingress Controller負(fù)責(zé)實(shí)現(xiàn)Ingress,通常使用負(fù)載均衡器,它還可以配置邊界路由和其他前端,這有助于以高可用的方式處理流量。
配置項(xiàng)(ConfigMap)
配置項(xiàng)可用于存儲(chǔ)細(xì)粒度信息如單個(gè)屬性,或粗粒度信息如整個(gè)配置文件或JSON對(duì)象。您可以使用配置項(xiàng)保存不需要加密的配置信息和配置文件。
保密字典(Secret)
保密字典用于存儲(chǔ)在Kubernetes集群中使用一些敏感的配置,例如密碼、證書等信息。
卷(Volume)
和Docker的存儲(chǔ)卷有些類似,Docker的存儲(chǔ)卷作用范圍為一個(gè)容器,而Kubernetes的存儲(chǔ)卷的生命周期和作用范圍是一個(gè)Pod。每個(gè)Pod中聲明的存儲(chǔ)卷由Pod中的所有容器共享。
存儲(chǔ)卷(Persistent Volume,PV)
PV是集群內(nèi)的存儲(chǔ)資源,類似節(jié)點(diǎn)是集群資源一樣。PV獨(dú)立于Pod的生命周期,可根據(jù)不同的StorageClass類型創(chuàng)建不同類型的PV。
存儲(chǔ)卷聲明(Persistent Volume Claim,PVC)
PVC是資源的使用者。類似Pod消耗節(jié)點(diǎn)資源一樣,而PVC消耗PV資源。
存儲(chǔ)類(StorageClass)
存儲(chǔ)類可以實(shí)現(xiàn)動(dòng)態(tài)供應(yīng)存儲(chǔ)卷。通過(guò)動(dòng)態(tài)存儲(chǔ)卷,Kubernetes將能夠按照用戶的需要,自動(dòng)創(chuàng)建其所需的存儲(chǔ)。
彈性伸縮(Autoscaling)
彈性伸縮是根據(jù)業(yè)務(wù)需求和策略,經(jīng)濟(jì)地自動(dòng)調(diào)整彈性計(jì)算資源的管理服務(wù)。典型的場(chǎng)景包含在線業(yè)務(wù)彈性、大規(guī)模計(jì)算訓(xùn)練、深度學(xué)習(xí)GPU或共享GPU的訓(xùn)練與推理、定時(shí)周期性負(fù)載變化等。ACK支持的彈性伸縮服務(wù)如下表。
彈性伸縮維度
彈性伸縮分類
描述
調(diào)度層彈性
容器水平伸縮(HPA)
ACK容器水平伸縮基于CPU使用率自動(dòng)擴(kuò)縮Pod數(shù)量。適用于Deployment、StatefulSet等實(shí)現(xiàn)了scale接口的對(duì)象。
容器定時(shí)伸縮(CronHPA)
應(yīng)對(duì)資源浪費(fèi)的場(chǎng)景,ACK提供kubernetes-cronhpa-controller組件,實(shí)現(xiàn)資源定時(shí)擴(kuò)容。適用于Deployment、StatefulSet等實(shí)現(xiàn)了scale接口的對(duì)象。此外CronHPA提供了HPA對(duì)象的兼容能力,您可以同時(shí)使用CronHPA與HPA。
容器垂直伸縮(VPA)
容器垂直伸縮會(huì)基于Pod的資源使用情況自動(dòng)為集群設(shè)置資源占用的限制,從而讓集群將Pod調(diào)度到有足夠資源的最佳節(jié)點(diǎn)上。容器垂直伸縮也會(huì)保持最初容器定義中資源
request
和limit
的占比。適用于無(wú)法水平擴(kuò)展的應(yīng)用,通常是在Pod出現(xiàn)異常恢復(fù)時(shí)生效。資源層彈性
節(jié)點(diǎn)自動(dòng)伸縮
ACK的自動(dòng)伸縮能力是通過(guò)節(jié)點(diǎn)自動(dòng)伸縮組件實(shí)現(xiàn)的,可以按需彈出普通實(shí)例、GPU實(shí)例、競(jìng)價(jià)付費(fèi)實(shí)例,支持多可用區(qū)、多實(shí)例規(guī)格、多種伸縮模式,滿足不同的節(jié)點(diǎn)伸縮場(chǎng)景。全場(chǎng)景支持,適合在線業(yè)務(wù)、深度學(xué)習(xí)、大規(guī)模成本算力交付等。
可觀測(cè)性(Observability)
Kubernetes可觀測(cè)性體系包含監(jiān)控和日志兩部分,監(jiān)控可以幫助開發(fā)者查看系統(tǒng)的運(yùn)行狀態(tài),而日志可以協(xié)助問(wèn)題的排查和診斷。
Helm
Helm是Kubernetes包管理平臺(tái)。Helm將一個(gè)應(yīng)用的相關(guān)資源組織成為Charts,然后通過(guò)Charts管理程序包。
節(jié)點(diǎn)親和性(nodeAffinity)
節(jié)點(diǎn)親和性指通過(guò)Worker節(jié)點(diǎn)的Label標(biāo)簽控制Pod部署在特定的節(jié)點(diǎn)上。
污點(diǎn)(Taints)
污點(diǎn)和節(jié)點(diǎn)親和性相反,它使節(jié)點(diǎn)能夠排斥一類特定的Pod。
容忍(Tolerations)
應(yīng)用于Pod上,允許(但并不要求)Pod調(diào)度到帶有與之匹配的污點(diǎn)的節(jié)點(diǎn)上。
應(yīng)用親和性(podAffinity)
應(yīng)用親和性決定應(yīng)用Pod可以和特定Pod部署在同一拓?fù)溆颉@纾瑢?duì)于相互通信的服務(wù),可通過(guò)應(yīng)用親和性調(diào)度,將其部署到同一拓?fù)溆颍ɡ缤粋€(gè)主機(jī))中,以減少它們之間的網(wǎng)絡(luò)延遲。
應(yīng)用反親和性(podAntiAffinity)
應(yīng)用反親和性決定應(yīng)用Pod不與特性Pod部署在同一拓?fù)溆颉@纾瑢⒁粋€(gè)服務(wù)的Pod分散部署到不同的拓?fù)溆颍ɡ绮煌鳈C(jī))中,以提高服務(wù)本身的穩(wěn)定性。
服務(wù)網(wǎng)格(Istio)
Istio是一個(gè)提供連接、保護(hù)、控制以及觀測(cè)服務(wù)的開放平臺(tái)。阿里云服務(wù)網(wǎng)格提供一個(gè)全托管式的服務(wù)網(wǎng)格平臺(tái),兼容社區(qū)Istio開源服務(wù)網(wǎng)格,用于簡(jiǎn)化服務(wù)的治理,包括服務(wù)調(diào)用之間的流量路由與拆分管理、服務(wù)間通信的認(rèn)證安全以及網(wǎng)格可觀測(cè)性能力。
相關(guān)文檔
關(guān)于Kubernetes的更多概念及術(shù)語(yǔ)詳情,請(qǐng)參見Kubernetes concepts。