Openshift 基礎架構組件
Kubernetes基礎設施項目
簡述
在OpenShift容器平臺中,Kubernetes管理着一組容器或主機,並提供了部署、維護和應用程序擴展的機制。Docker服務包、實例化和運行容器化的應用程序。
Kubernetes集羣由一個或多個主節點和一組節點組成。您可以選擇將您的主服務器配置爲高可用性(HA),以確保集羣沒有單一的故障點。
OpenShift容器平臺3.6使用的是Kubernetes 1.6和Docker 1.12。
Masters節點
主服務器是包含主組件的主機或主機,包括API服務器、控制器管理器服務器和etcd。master在Kubernetes集羣中管理節點,並在節點上運行節點。
表1. Master組件
組件 | 描述 |
---|---|
API Server | Kubernetes API服務器爲pods、服務和複製控制器的數據進行驗證和配置。它還將pods分配給節點,並將pod信息與服務配置同步。可以作爲一個獨立的進程運行。 |
etcd | etcd存儲了持久的主狀態,而其他組件則監視etcd,以便將其自身轉換爲所需的狀態。etcd可以爲高可用性配置,通常配置爲2n+1對等服務。 |
Controller Manager Server | 控制器管理器服務器監視etcd以更改複製控制器對象,然後使用該API來執行所需的狀態。可以作爲一個獨立的進程運行。有幾個這樣的進程一次創建一個集羣,一個活動的領導者。 |
HAProxy | 可選的,在配置高可用的主程序時使用本機方法來平衡API主端點之間的負載。高級安裝方法可以使用本機方法爲您配置HAProxy。或者,您可以使用本機方法,但是預先配置您自己的負載平衡器。 |
高可用性Master
在單個主配置中,運行應用程序的可用性仍然存在,如果主或其任何服務都失敗了。然而,主服務的失敗降低了系統對應用程序故障或新應用程序創建的響應能力。您可以選擇將您的主服務器配置爲高可用性(HA),以確保集羣沒有單一的故障點。
爲了減輕對master的可用性的擔憂,建議使用兩種措施:
- 應該創建一個runbook條目來重新構建master。runbook條目是任何高可用服務的必要支持。額外的解決方案僅僅是控制運行手冊必須諮詢的頻率。例如,主主機的冷備份可以充分地滿足sla,因爲創建新的應用程序或恢復失敗的應用程序組件需要不超過幾分鐘的停機時間。
使用高可用性解決方案來配置您的管理員,並確保該工具的使用
不支持在安裝之後從單一的主集羣遷移到多個主機。
當使用HAProxy的原生HA方法時,主組件具有以下可用性:
表2。HAProxy可用性矩陣
角色 | 類型 | 註釋 |
---|---|---|
etcd | Active-active | 負載平衡的完全冗餘部署 |
API Server | Active-active | 由HAProxy管理 |
Controller Manager Server | Active-passive | 一個實例被選舉爲一個集羣leader |
HAProxy | Active-passive | API主端點之間的平衡負載 |
Nodes節點
一個節點爲容器提供運行時環境。Kubernetes集羣中的每個節點都有需要由主管理的服務。節點還具有運行pods所需的服務,包括Docker服務、kubelet和服務代理。
OpenShift容器平臺創建來自雲提供商、物理系統或虛擬系統的節點。Kubernetes與節點對象進行交互。主使用節點對象的信息來驗證節點,並使用健康檢查。一個節點被忽略,直到它通過了健康檢查,並且master 會繼續檢查節點直到它們有效。Kubernetes文檔有更多關於節點管理的信息。
管理員可以使用CLI在OpenShift容器平臺實例中管理節點。要在啓動節點服務器時定義完整的配置和安全選項,請使用專用的節點配置文件。
建議的最大節點數是300。
Kubelet
每個節點都有一個kubelet,它更新了由容器清單指定的節點,這是一個描述一個pod的YAML文件。kubelet使用一組清單來確保它的容器已經啓動,並且它們將繼續運行。
一個集裝箱清單可以被提供給一個kubelet:
命令行上的一個文件路徑,每隔20秒檢查一次。
在命令行上傳遞的HTTP端點,每隔20秒檢查一次。
kubelet監視一個etcd服務器,如/註冊/主機/$(主機名-f),並對任何更改進行操作。
kubelet偵聽HTTP並響應一個簡單的API來提交一個新的清單。
服務代理(Service Proxy)
每個節點還運行一個簡單的網絡代理,反映在該節點上的API中定義的服務。這允許節點在一組後端執行簡單的TCP和UDP流轉發。
節點對象的定義(Node Object Definition)
apiVersion: v1
kind: Node
metadata:
creationTimestamp: null
labels:
kubernetes.io/hostname: node1.example.com
name: node1.example.com
spec:
externalID: node1.example.com
status:
nodeInfo:
bootID: ""
containerRuntimeVersion: ""
kernelVersion: ""
kubeProxyVersion: ""
kubeletVersion: ""
machineID: ""
osImage: ""
systemUUID: ""
apiVersion 定義要使用的API版本。
kind 將此設置爲節點,將其標識爲節點對象的定義。
metadata.labels 列出添加到節點的任何標籤。
metadata.name 定義節點對象名稱的必需值。在運行oc get節點命令時,這個值顯示在NAME列中。
spec.externalID 定義可以到達節點的完全限定的域名。當空的時候,默認爲元數據。
REST API引用有更多關於這些定義的詳細信息。
容器註冊表(Container Registry)
簡述
OpenShift容器平臺可以利用任何實現Docker registry API的服務器作爲鏡像的來源,包括Docker Hub、第三方運行的私有註冊中心和集成的OpenShift容器平臺註冊中心。
集成OpenShift容器註冊表
OpenShift容器平臺提供了一個稱爲OpenShift容器註冊(OCR)的集成容器註冊表,它增加了根據需要自動提供新的鏡像存儲庫的能力。這爲用戶提供了一個內置的位置,用於他們的應用程序構建來推送生成的鏡像。
每當將新鏡像推向OCR時,註冊中心就會通知OpenShift容器平臺關於新鏡像的信息,並傳遞關於它的所有信息,比如名稱空間、名稱和鏡像元數據。不同的OpenShift容器平臺對新鏡像做出反應,創建新的構建和部署。
OCR也可以作爲一個單獨的組件進行部署,它可以作爲一個容器註冊中心,而不需要構建和部署集成。有關詳細信息,請參閱安裝OpenShift容器註冊表的獨立部署。
第三方註冊表(Third Party Registries)
OpenShift容器平臺可以使用來自第三方註冊中心的鏡像創建容器,但是這些註冊中心不太可能像集成的OpenShift容器平臺註冊表那樣提供相同的鏡像通知支持。在這種情況下,OpenShift容器平臺將在imagestream創建中從遠程註冊表中獲取標記。刷新所獲取的標籤就像運行oc-import-image一樣簡單。當檢測到新鏡像時,就會出現先前描述的構建和部署反應。
認證(Authentication)
OpenShift容器平臺可以通過用戶提供的憑證與註冊中心進行通信,從而訪問私有鏡像存儲庫。這允許OpenShift從私有存儲庫中推送和拉出鏡像。
WEB控制檯
簡述
OpenShift容器平臺web控制檯是一個從web瀏覽器訪問的用戶界面。開發人員可以使用web控制檯來可視化、瀏覽和管理項目的內容。
必須啓用JavaScript來使用web控制檯。爲了最好的體驗,使用支持WebSockets的web瀏覽器。
web控制檯是作爲主服務器的一部分啓動的。運行web控制檯所需的所有靜態資產都是從openshift二進制文件中提供的。管理員還可以使用擴展來定製web控制檯,這可以讓您在web控制檯加載時運行腳本和加載自定義樣式表。您可以以這種方式改變用戶界面的任何方面的外觀和感覺。
當您從瀏覽器訪問web控制檯時,它首先加載所有必需的靜態資源。然後,它使用OpenShift start選項中 –public-master 或相關的主配置文件參數 masterPublicURL 定義的值向OpenShift容器平臺api發出請求。web控制檯使用WebSockets來維護與API服務器的持久連接,並在可用時接收更新的信息。
圖所示。Web控制檯請求架構
web控制檯的配置的主機名和IP地址都是白名單,即使瀏覽器認爲請求是跨源的,也可以安全地訪問API服務器。在一個WEB應用中使用不同的主機名去訪問API服務器,您必須通過在openshift start 上指定–cors-allowed-origins 或 設置相關的主配置文件參數corsAllowedOrigins 將主機名加入白名單。
CLI下載
您可以從web控制檯的命令行工具頁面上下載和解壓CLI,以便在Linux、MacOSX和Windows客戶機上使用。集羣管理員可以查看 customize these links further.。
瀏覽器要求
查看OpenShift容器平臺的測試集成。可以使用下面的瀏覽器版本和操作系統來訪問web控制檯。
表 瀏覽器要求
Browser (Latest Stable) | Operating System |
---|---|
Firefox | Fedora 23, Windows 8 |
Internet Explorer | Windows 8 |
Chrome | Fedora 23, Windows 8, and MacOSX |
Safari | MacOSX, iPad 2, iPhone 4 |
項目快視圖(Project Overviews)
登錄之後,web控制檯爲開發人員提供了對當前所選項目的概述:
Web控制檯項目概述
項目選擇器允許您在可以訪問的項目之間切換。
使用源存儲庫或使用模板創建新的應用程序。
Overview選項卡(當前選中)以每個組件的高級視圖來可視化項目的內容。
Applications選項卡:在您的部署、pods、服務和路由上瀏覽和執行操作。
Builds選項卡:在構建和鏡像流上瀏覽和執行操作。
Resources選項卡:查看當前的配額消耗和其他資源。
Storage選項卡:查看應用程序的持久卷索賠和請求存儲。
Monitoring選項卡:用於構建、pods和部署的視圖日誌,以及項目中所有對象的事件通知。
在OpenShift容器平臺3.1中,Cockpit自動安裝並啓用,以幫助您監視您的開發環境。 Red Hat Enterprise Linux Atomic Host: Getting Started with Cockpit提供了更多關於座艙的信息。
JVM控制檯
對於基於Java鏡像的pods,web控制檯還公開了對基於jvm控制檯的hawt.io訪問,用於查看和管理任何相關的集成組件。如果容器有一個名爲jolokia的端口,那麼在瀏覽Pods頁面上的pod的詳細信息中顯示了一個Connect鏈接。
—帶有與JVM控制檯鏈接的Pod
連接到JVM控制檯之後,將顯示不同的頁面,這取決於哪些組件與連接的pod相關。
—JVM控制檯
以下頁面可供選擇:
頁面 | 描述 |
---|---|
JMX | 查看和管理JMX域和mbean。 |
Threads | 查看和監視線程的狀態。 |
ActiveMQ | 查看和管理Apache ActiveMQ代理。 |
Camel | 查看和管理Apache Camel規則引擎路由和依賴關係。 |
OSGi | 查看並管理JBoss Fuse OSGi環境。 |
StatefulSets
在OpenShift容器平臺3.5中,它作爲一項技術預覽功能被引入,並保留在技術預覽版中。
一個狀態控制器爲它的pods提供一個惟一的標識,並確定部署和擴展的順序。對於惟一的網絡標識符、持久存儲、優美的部署和擴展,以及優雅的刪除和終止,都是有用的。
在OpenShift容器平臺上的狀態