容器
容器(Container)是一個視圖隔離、資源可限制、獨立文件系統的進程集合。它類似于虛擬機,但更輕量,可以在應用程序之間共享操作系統。
“視圖隔離”是指能夠看到部分進程以及具有獨立的主機名等;控制資源使用率則是可以對內存大小以及CPU 使用個數等進行限制。常見的容器引擎包括Docker、Containerd等。
鏡像
鏡像(Image)是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源等文件外,還包含了一些為運行準備的配置參數(如環境變量)。
鏡像是容器的模板,而容器是鏡像的實例。鏡像是靜態的,而容器是動態的。
倉庫鏡像是指存儲在鏡像倉庫內的鏡像,節點鏡像是指存儲在集群節點上的鏡像。
倉庫
倉庫(Repository)是集中存儲和分發容器鏡像文件的場所,分為公共倉庫和私有倉庫。
集群
集群特指容器集群,即Kubernetes(簡稱k8s)集群或基于Kubernetes衍生的企業定制版(例如Openshift集群),由一套Kubernetes系統管理的多臺服務器形成一個集群。
Kubernetes是一個容器的編排和管理系統,提供服務發現、彈性伸縮、負載均衡、故障自愈等功能。
Kubernetes將集群中的服務器劃分為Master(控制節點)和Node(計算節點):
- Master節點上運行著集群管理相關的一組進程,例如etcd、kube-apiserver、kube-controller-manager和kube-scheduler,這些進程實現了整個集群的資源管理、Pod調度、彈性伸縮、安全控制、系統監控和糾錯等管理能力,并且都是全自動完成的。
- Node作為集群中的計算節點,運行上層業務應用程序,在Node上Kubernetes管理的最小運行單元是Pod。Node上運行著Kubernetes的kubelet、kube-proxy服務進程,這些服務進程負責Pod的創建、啟動、監控、重啟、銷毀以及實現軟件模式的負載均衡器。
節點
節點是容器集群組成的基本元素。節點取決于業務,既可以是虛擬機,也可以是物理機。
每個節點都包含運行Pod所需要的基本組件,包括Kubelet、Kube-proxy 、Container Runtime等。
命名空間
命名空間(Namespace)是Kubernetes提供的一種機制,可以將同一集群中的資源劃分為相互隔離的組。同一命名空間內的資源名稱要唯一,但跨命名空間時沒有這個要求。在實際使用時可以為不同的用戶、租戶、環境或項目創建對應的命名空間,例如為test、dev、pro環境分別創建各自的命名空間。
Pod
在Kubernetes中,Pod是能夠創建、調度和管理的最小部署單元,是一組容器的集合,而不是單獨的應用容器。同一個Pod里的容器共享同一網絡命名空間、IP地址及端口空間。和一個個獨立的應用容器一樣,Pod也被認為是相對臨時性(而不是長期存在)的實體。Pod 會被創建、賦予一個唯一的 ID(UID),并被調度到節點,并在終止或刪除之前一直運行在該節點。如果一個節點失效,調度到該節點的 Pod 也會在給定超時期限后刪除。
工作負載
工作負載是在Kubernetes上運行的應用程序。Kubernetes提供Deployment、StatefulSet、DaemonSet等多種內置的工作負載資源類型。
Service
Service是Kubernetes中的一個重要概念,主要是提供負載均衡和服務自動發現。當一個Service資源被創建后,將會分配一個唯一的IP(集群IP),這個IP地址將存在于Service的整個生命資源,Service一旦被創建,整個IP無法進行修改。
Ingress
Ingress資源對象用于對外暴露服務,實現從外部對Kubernetes集群中服務的訪問,該資源對象定義了不同域名及URL和對應后端服務(Kubernetes Service)的綁定。
Endpoint
Endpoint是Kubernetes集群中的一個資源對象,存儲在ETCD中,來記錄一個Service對應的所有Pod的訪問地址。
Secrets
Kubernetes中Secrets用于存儲和管理一些敏感數據,比如密碼、token、密鑰等敏感信息。它把Pod想要訪問的加密數據存放到ETCD中,然后用戶可通過在Pod的容器里掛載Volume的方式或者環境變量的方式訪問Secret里保存的信息。
PV和PVC
Kubernetes為了能更好地支持有狀態應用的數據存儲問題,還提供了PV、PVC和StorageClass資源對象來對存儲進行管理。PV的全稱是Persistent Volume(持久化卷),是對底層數據存儲的抽象,PV由管理員創建、維護以及配置。PVC的全稱是Persistent Volume Claim(持久化卷聲明),我們可以將PV比喻為接口,里面封裝了我們底層的數據存儲,PVC就是調用接口實現數據存儲操作,PVC消耗的是PV的資源。
標簽
標簽Label是用于區分工作負載、Pod、Service、RC等資源對象的key/value鍵值對,每個資源對象可以有多個Label,但是每個Label的key只能對應一個value。
軟件包
軟件包(SoftWare Package)是指具有特定功能,用來完成特定任務的一個程序或一組程序,可分為應用軟件包和系統軟件包兩大類。
進程
進程(Process)是計算機中的程序關于某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。在當代面向線程設計的計算機結構中,進程是線程的容器。程序是指令、數據及其組織形式的描述,進程是程序的實體。
端口
端口是英文port的意譯,可以認為是設備與外界通訊交流的出口。這里指的是虛擬的容器端口和節點端口,暴露這些端口以供外部訪問,如容器的80端口。
運行應用
運行應用指的是運行在容器上的應用,包括Web服務、數據庫、中間件等應用類別。
軟件框架
軟件框架(software framework),指的是為了實現某個業界標準或完成特定基本任務的軟件組件規范,也指為了實現某個軟件組件規范時,提供規范所要求之基礎功能的軟件產品。框架的功能類似于基礎設施,與具體的軟件應用無關,但是提供并實現最為基礎的軟件架構和體系。
Web站點
Web站點是網站Web服務(Web Service),是基于XML和HTTPS的一種服務,其通信協議主要基于SOAP,服務的描述通過WSDL、通過UDDI來發現和獲得服務的元數據。
Web服務
Web服務是一種面向服務的架構的技術,通過標準的Web協議提供服務,目的是保證不同平臺的應用服務可以互操作。
Routes
Routes是OpenShift中的推薦方式。它使用唯一的URL公開服務,是為了解決從集群外部(就是從除了集群節點以外的其它地方)訪問服務的需求。Routes路由匹配客戶端的請求規則,匹配成功后分配到Service層。一個路由指向一個Service,一個Service可以被多個不同規則的路由指向。
Service Account
Service Account(服務賬號)通常是指在計算機系統、云服務或網絡中用于標識和管理服務實體的賬戶。