Openshift概念

Openshift是一個開源容器雲平臺,是一個基於主流的容器技術Docker和K8s構建的雲平臺。Openshift底層以Docker做爲容器引擎驅動,以K8s做爲容器編排引擎組件,並提供了開發語言,中間件,DevOps自動化流程工具和web console用戶界面等元素,提供了一套完整的基於容器的應用雲平臺。nginx

Red Hat是Openshift的最大貢獻者。web

Openshift包括社區版和企業版數據庫

社區版: Openshift Origin後端

企業版: Openshift Online/Openshift Enterprise瀏覽器

【重要概念】緩存

system:admin爲默認的集羣管理員,擁有最高的權限。該用戶沒有密碼,登錄依賴於證書密鑰。安全

Service Account 是 Openshift 中專門供程序和組件使用的帳號。不一樣的用戶或組關聯不一樣的角色,同時關聯不一樣的SCC(security context constriant)安全上下文架構

【架構】運維

自底而上包括幾個層次:基礎架構層,容器引擎層,容器編排層,PaaS服務層,界面及工具層。分佈式

基礎架構層:爲Openshift平臺的運行提供基礎的運行環境。Openshift支持運行在物理機,虛擬機(kvm,vmware,virtual box等),公有云(阿里雲,AWS等),私有云,混合雲上。

容器引擎層:以當前主流的Docker做爲容器引擎。

容器編排層:以Google的k8s進行容器編排。

PaaS服務層:容器雲平臺的最終目的是爲上層應用服務提供支持,提升開發,測試,部署,運維的速度和效率。用戶在Openshift雲平臺上能夠快速的獲取和部署一個數據庫,緩存等。

界面及工具層:Openshift提供了多種用戶的接入渠道:Web控制檯,命令行,RestFul接口等

【核心組件】

1. Master節點

主控節點。集羣內的管理組件都運行在Master節點上。Master節點負責集羣的配置管理,維護集羣的狀態。Master節點運行的服務組件:

API Server:負責提供Web console和RESTful API。集羣內全部節點都會訪問API Server,更新節點的狀態及其上的容器狀態。

數據源(Data store):集羣內全部狀態信息都會存儲在後端的一個etcd的分佈式數據庫中。

調度控制器(Scheduler):負責按用戶輸入的要求尋找合適的計算節點。

複製控制器(Replication Controller):負責監控當前容器實例的數量和用戶部署指定的數量是否匹配,如有容器異常退出,複製控制器發現實際數少於部署定義數,從而觸發部署新的實例。

2. Node節點

計算節點。接收Master節點的指令,運行和維護Docker容器。Master節點也能夠是Node節點,只是在通常環境中,其運行容器的功能是關閉的。

3. Project:在k8s中使用命名空間來分隔資源。同一個命名空間中,某一個對象的名稱在其分類中必須惟一,但在不一樣命名空間中的對象則能夠同名。Openshift集成了k8s命名空間的概念,並且在其上定義了Project對象的概念,每個Project會和一個namespace相關聯。

4. Pod:在Openshift中的容器都會Pod包裹,即容器都運行在Pod內部,一個Pod能夠運行一個或多個容器,絕大多少狀況下,一個Pod內部運行一個容器。

5. Service:因爲容器是一個非持久化的對象,全部對容器的修改再容器銷燬後都會丟失,並且每一個容器的IP地址會不斷變化。k8s提供了Service組件,當部署某個應用時,會建立一個Service對象,該對象與一個或多個Pod關聯,同時每一個Service分配一個相對恆定的IP,經過訪問該IP及相應的端口,請求就會轉發到對應Pod端口。除了可經過IP,也能夠經過域名訪問Service,格式爲:..svc.cluster.local

6. Router和Route:Service提供了一個通日後端Pod集羣的穩定入口,可是Service的IP地址只是集羣內部的節點和容器可見。外部需經過Router(路由器)來轉發。Router組件是Openshift集羣中一個重要的組件,它是外界訪問集羣內容器應用的入口。用戶能夠建立Route(路由規則)對象,一個Route會與一個Service關聯,並綁定一個域名。Route規則被Router加載。當集羣外部的請求經過指定域名訪問應用時,域名被解析並指向Router所在的計算機節點上,Router獲取該請求,而後根據Route規則定義轉發給與這個域名對應的Service後端所關聯的Pod容器實例。上述轉發流程相似於nginx。Router負責將集羣外的請求轉發到集羣的容器,Service則負責把來自集羣內部的請求轉發到指定的容器中。

7. Persistent Storage:容器默認是非持久化的,全部的修改在容器銷燬時都會丟失。Docker提供了持久化卷掛載的能力,Openshift除了提供持久化卷掛載的能力,還提供了一種持久化供給模型即PV(Persistent Volume)和PVC(Persistent Volume Claim)。在PV和PVC模型中,集羣管理員會建立大量不一樣大小和不一樣特性的PV。用戶在部署應用時顯示的聲明對持久化的需求,建立PVC,在PVC中定義所須要的存儲大小,訪問方式。Openshift集羣會自動尋找符合要求的PV與PVC自動對接。

8. Registry:Openshift內部的鏡像倉庫,主要用於存放內置的S2I構建流程所產生的鏡像。

9. S2I:Source to Image,負責將應用源碼構建成鏡像。

步驟:

1)用戶輸入源代碼倉庫的地址

2)選擇S2I構建的基礎鏡像

3)觸發構建

4)S2I構建執行器從指定的源碼倉庫地址下載代碼

5)S2I構建執行器實例化Builder鏡像,並將代碼注入到Builder鏡像

6)S2I構建執行器按照預約義的邏輯執行源代碼的編譯,構建

7)生成新的鏡像

8)S2I構建執行器將新鏡像Push到Registry

9)更新相關的Image Stream信息

【核心流程】

1)建立應用:用戶經過web控制檯或oc命令建立應用,Openshift平臺根據用戶輸入的源碼地址和Builder鏡像,生成構建配置Builder config和部署配置Deployment config,Service,Route等。

2)觸發構建

3)實例化構建:平臺根據Builder config實例化Builder對象,下載代碼,並將代碼注入到Builder對象,執行編譯,構建

4)生成新鏡像並Push到Registry

5)更新相關的Image Stream信息

6)觸發部署:當Image Stream更新後,觸發平臺部署鏡像

7)實例化鏡像部署:平臺根據Deployment config實例化部署,生成Deploy對象

8)生成Replication Controller

9)部署容器:經過Replication Controller,平臺將pod及容器部署到各個節點上

10)用戶訪問:用戶經過瀏覽器訪問Route對象中定義的應用域名

11)請求處理並返回:請求到達Router組件後,經過Route轉發給相關聯的Service,最終到對應的容器實例。

參考:開源容器雲Openshift

做者:Superwind20 連接:https://www.jianshu.com/p/a4712351142d 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
相關文章
相關標籤/搜索