OpenShift3器平臺介紹與部署案例
“云計算”一詞經常與虛擬機聯系在一起,但如今許多新興和快速發展的云技術都使用容器化替代虛擬化,或將兩者結合使用,容器占用的空間比虛擬機小得多,而且能夠在一臺主機上運行多個孤立的應用,相比傳統的虛擬化技術,基于容器的虛擬化具備諸多優勢,容器被視為一種更快, 更便捷的在云基礎設施上部署服務的方法,雖然容器本身具有眾多優勢,但管理大型的容器化環境著實具有挑戰性,因此,許多容器編排工具備受青睞,然而,編排工具不盡相同,應根據具體目的精挑細選,
容器的部署和終止只需極低的開銷和幾秒鐘的時間,然而,當資料持久性至關重要時,其資料易失性可能會構成嚴重威脅,容器化的下一個突破將是實作與存盤可靠、高效的連接,介紹如何準備、配置、部署和管理基于 Red Hat OpenShift 容器平臺 3.6 和其他容器原生存盤解決方案的私有云環境,
對于應用開發團隊
OpenShift 容器平臺可為開發人員提供一款理想平臺,方便其以自助方式實作配置、構建和部署各種應用及組件,開發人員可利用多種自動化作業流程,如我們的源至鏡像 (S2I) 流程,輕松地將版本控制系統
中的源代碼植入可直接運行的 docker 格式容器鏡像中,OpenShift 容器平臺整合了各種持續整合 (CI)和持續交付 (CD) 工具,是適用于所有企業機構的理想解決方案,
對于 IT 運營團隊
OpenShift 容器平臺為 IT 運營團隊提供了安全的、企業級 Kubernetes,從而實作對應用基于策略的控制及應用自動化,通過集群服務、調度和編排,用戶還可實作負載均衡和自動擴展,安全功能可防止租戶入侵其他應用或底層主機,同時,由于 OpenShift 可將持久存盤直接與 Linux? 容器連接,因此 IT 部門可在同一平臺上運行有狀態和無狀態應用,


Openshift 3.6 部署參考案例

? Docker,用于構建、發布和運行容器化應用
? Kubernetes,用于編排和管理容器化應用
? Etcd*,面向 OpenShift 容器平臺集群的鍵值存盤
? Open vSwitch*,在 OpenShift 容器平臺環境中提供軟體定義網路 (SDN) 特定的功能
? Red Hat Ansible* Automation,用于安裝和管理OpenShift 容器平臺部署
? HAProxy*,用于路由和負載均衡目的
? Keepalived*,為 HAProxy 實體提供虛擬 IP 管理
云原生中持久化卷請求流程

Red Hat Ansible Automation
Ansible 是一款強大的 IT 自動化工具,它能夠配置各種資源和部署應用,它能夠配置和管理設備與作業系統組件,由于其簡易性、可擴展性和便攜性,本 OpenShift 參考架構在很大程度上基于 Ansible playbook,因此,本參考架構以相同的方式采用和分發功能改進,
Red Hat 容器原生存盤
Red Hat 容器原生存盤可將 OpenShift 容器平臺打造成一個完全超級融合的基礎設施,存盤容器與計算容器共存其中,存盤平面以容器化的 Red Hat Gluster Storage 服務為基礎,控制著所有存盤服務器上的存盤設備,Heketi 是容器原生存盤架構的一部分,控制著存盤集群中的所有成員節點,Heketi 還提供 API,以便于輕松請求容器存盤空間,雖然 Heketi 提供了一個面向存盤集群的端點,但真正從 OpenShift 客戶端呼叫其 API 的物件叫作 Storage Class,Kubernetes 和 OpenShift 物件描述了集群可用的存盤型別,并可在生成持久性資料卷請求時動態發送存盤請求, 上圖描述了在容器原生存盤架構中創建持久性資料卷的基本流程,
OpenShift系統架構
Red Hat OpenShift 容器平臺是一個完整的容器應用平臺, 支持在不同大小的基礎設施中以一致的解決方案進行應用開發,Red Hat OpenShift 集成了必要的架構, 流程, 平臺和服務, 夠幫助開發與運營團隊跨越傳統的孤立結構構建可助力企業取得成功的應用,Red Hat OpenShift 集群平臺由 Kubernetes 容器編排器管理, 后者管理著運行 Docker 容器運行時環境的系統集群中的容器化應用,Red Hat OpenShift 平臺的物理配置基于 Kubernetes 集群架構,
該 Red Hat OpenShift RA 包含五種節點:bastion、master、基礎設施、存盤和應用,具體介紹如下,
Bastion 節點
這是個專用節點,可作為 Red Hat OpenShift 集群的主要部署和管理服務器,它可用作集群管理員執行系統部署和管理操作的登錄節點,例如運行 Ansible OpenShift 部署 playbook,Bastion 節點運行 Red Hat Enterprise Linux 7.4,
OpenShift Master 節點
OpenShift 容器平臺 master 是為整個集群環境執行控制功能的服務器,它負責創建、調度和管理特定于 Red Hat OpenShift 的所有物件,它在一個 OpenShift 二進制檔案中包含 API、控制器管理器和調度器功能,人們通常還會在 OpenShift master 上安裝 etcd 鍵值存盤,以實作 etcd 和 OpenShift master 之間的低延遲連接,建議在需要高可用性的環境中同時運行 Red Hat OpenShift master 和 etcd,如要做到這一點,可同時運行多個 OpenShift master 并利用外部主動-被動負載均衡器和 etcd 的集群功能,OpenShift master 節點運行 Red Hat Enterprise Linux Atomic Host 7.4.0,
OpenShift 基礎設施節點
OpenShift 基礎設施節點運行基礎設施特定的服務:Docker Registry*, HAProxy 路由器和 Heketi,Docker Registry 將應用鏡像以容器的形式存盤,HAProxy 路由器為 Red Hat OpenShift 應用提供路由功能,它目前通過 Server Name Indication (SNI) 支持 HTTP(S) 流量和 TLS 流量,Heketi 為配置 GlusterFS 持久性存盤提供管理 API,還有其他應用和服務也可以部署在OpenShift 基礎設施節點上,OpenShift 基礎設施節點運行 Red Hat Enterprise Linux Atomic Host 7.4.0,
OpenShift 應用節點
OpenShift 應用節點運行開發人員創建和部署的容器化應用,OpenShift 應用 節點將 OpenShift 節點組件整合到一個二進制檔案中,可供 OpenShift master 用來調度和控制容器,Red Hat OpenShift 應用節點運行 Red Hat Enterprise Linux Atomic Host 7.4.0,
OpenShift 存盤節點
OpenShift 存盤節點運行容器化 GlusterFS 服務,為需要資料持久性的應用容器配置持久性資料卷,持久性資料卷可由集群管理員手動創建,也可由存盤類物件自動創建,OpenShift 存盤節點也能夠運行容器化應用,Red Hat OpenShift 存盤節點運行 Red Hat Enterprise Linux Atomic Host 7.4.0,

Intel服務器配置示例

集群服務器 英特爾? 服務器系統 S2600WF https://ark.intel.com/zh-cn/products/series/89018/ Intel-Server-Board-S2600WF-Family
物理與邏輯網路

Arista 7060X 和 7260X 系列是專門構建的 10, 25, 40, 50 和100GbE 資料中心交換機,采用緊湊、節能的外形,能夠在 2 層和 3 層達到線速度,并具備先進的軟體定義云網路功能,
7060CX-32S 交換機在 1RU 外形中具有 32 個 QSFP100 和 2 個 SFP+ 埠,能夠在功能豐富的 2 層和 3 層提供出色的線速 度性能和高達 6.4Tbps 的整體吞吐量,7060CX-32S 具有出色的配置靈活性,支持最多 32 個 100GbE 埠,每個埠都能夠提供廣泛的速度選擇:4x 10GbE, 4x 25GbE, 1x 40GbE 或 2x 50GbE 以及 1x 100GbE,
https://www.arista.com/assets/data/pdf/ Datasheets/7060X_7260X_DS.pdf
Openshift容器平臺邏輯架構

Red Hat OpenShift 容器平臺及其邏輯架構的組件,所有 Red Hat OpenShift 節點通過內部網路相連接,可以相互通信,此外,Open vSwitch 還創建了自己的網路來支持 Red Hat OpenShift pod 間通信,考慮到多租戶插件,Open vSwitch pod 只能在共用同一專案命名空間的情況下相互通信,Keepalived 在兩臺基礎設施主機上管理著一個虛擬 IP 地址,支持對 Red HatOpenShift web 控制臺和應用進行外部訪問,存盤節點也通過內部網路相連接,建立了一個高度可用, 快速的 Gluster Storage 集群,



Openshift 3.6 安裝的示例host檔案
[OSEv3:children]
masters
nodes
etcd
lb
local
glusterfs
glusterfs_registry
[OSEv3:vars]
ansible_ssh_user=openshift
ansible_become=true
openshift_master_cluster_method=native
openshift_master_cluster_hostname=ocp.example.local
openshift_master_cluster_public_hostname=ocp.example.com
openshift_master_default_subdomain=apps.ocp.example.com
openshift_master_cluster_ip=172.30.4.30
openshift_master_cluster_public_ip=100.65.0.30
openshift_master_portal_net=10.0.0.0/16
deployment_type=openshift-enterprise
openshift_release=v3.6
os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant'
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/master/users.htpasswd'}]
openshift_master_htpasswd_users={'admin': '$apr1$vC6GcVUP$AHZDU5BAFF6dDMfk.IFzG1'}
rhel_subscription_pass=portal_password
openshift_hosted_registry_storage_kind=glusterfs
openshift_hosted_registry_storage_volume_size=200Gi
openshift_storage_glusterfs_registry_storageclass=True
local_dns=172.30.4.10
external_interface=bond0
external_vlan= 2017
external_netmask=255.255.240.0
external_gateway=100.65.0.1
internal_interface=bond0
internal_netmask=255.255.255.0
bastion_ip=172.30.4.10
internal_gateway={{ bastion_ip }}
dhcp_first_ip=172.30.4.100
dhcp_last_ip=172.30.4.150
root_password=NODE_ROOT_PASSWORD
[local]
127.0.0.1
[masters]
master1.ocp.example.local containerized=True openshift_schedulable=False openshift_ip=172.30.4.11 openshift_hostname=master1.ocp.example.local
master2.ocp.example.local containerized=True openshift_schedulable=False openshift_ip=172.30.4.12 openshift_hostname=master2.ocp.example.local
master3.ocp.example.local containerized=True openshift_schedulable=False openshift_ip=172.30.4.13 openshift_hostname=master3.ocp.example.local
[nodes]
master1.ocp.example.local openshift_schedulable=False openshift_ip=172.30.4.11 openshift_hostname=master1.ocp.example.local ipmi=192.168.25.12 serial=BQF973900001
master2.ocp.example.local openshift_schedulable=False openshift_ip=172.30.4.12 openshift_hostname=master2.ocp.example.local ipmi=192.168.25.13 serial=BQF973900002
master3.ocp.example.local openshift_schedulable=False openshift_ip=172.30.4.13 openshift_hostname=master3.ocp.example.local ipmi=192.168.25.14 serial=BQF973900003
infra1.ocp.example.local openshift_node_labels="{'region': 'infra'}" openshift_schedulable=True containerized=True openshift_public_ip=100.65.0.14 openshift_ip=172.30.4.14 openshift_hostname=infra1.ocp.example.local ipmi=192.168.25.15 serial=BQF973900006
infra2.ocp.example.local openshift_node_labels="{'region': 'infra'}" openshift_schedulable=True containerized=True openshift_public_ip=100.65.0.15 openshift_ip=172.30.4.15 openshift_hostname=infra2.ocp.example.local ipmi=192.168.25.16 serial=BQF973900004
app1.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.16 openshift_hostname=app1.ocp.example.local ipmi=192.168.25.17 serial=BQF973900007
app2.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.17 openshift_hostname=app2.ocp.example.local ipmi=192.168.25.18 serial=BQF973900009
app3.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.18 openshift_hostname=app3.ocp.example.local ipmi=192.168.25.19 serial=BQF973900008
app4.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.19 openshift_hostname=app4.ocp.example.local ipmi=192.168.25.20 serial=BQF973900011
app5.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.20 openshift_hostname=app5.ocp.example.local ipmi=192.168.25.21 serial=BQF973900010
app6.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.21 openshift_hostname=app6.ocp.example.local ipmi=192.168.25.22 serial=BQF973900012
gluster1.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.22 openshift_hostname=gluster1.ocp.example.local ipmi=192.168.25.23 serial=BQF974100202
gluster2.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.23 openshift_hostname=gluster2.ocp.example.local ipmi=192.168.25.24 serial=BQF974100201
gluster3.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.24 openshift_hostname=gluster3.ocp.example.local ipmi=192.168.25.25 serial=BQF974100203
[etcd]
etcd1.ocp.example.local containerized=True openshift_ip=172.30.4.11 openshift_hostname=etcd1.ocp.example.local
etcd2.ocp.example.local containerized=True openshift_ip=172.30.4.12 openshift_hostname=etcd2.ocp.example.local
etcd3.ocp.example.local containerized=True openshift_ip=172.30.4.13 openshift_hostname=etcd3.ocp.example.local
[lb]
lb1.ocp.example.local openshift_hostname=lb1.ocp.example.local openshift_ip=172.30.4.14 openshift_public_ip=100.65.0.14
lb2.ocp.example.local openshift_hostname=lb2.ocp.example.local openshift_ip=172.30.4.15 openshift_public_ip=100.65.0.15
[glusterfs]
app1.ocp.example.local glusterfs_ip=172.30.4.16 glusterfs_devices="[ '/dev/nvme0n1' ]"
app2.ocp.example.local glusterfs_ip=172.30.4.17 glusterfs_devices="[ '/dev/nvme0n1' ]"
app3.ocp.example.local glusterfs_ip=172.30.4.18 glusterfs_devices="[ '/dev/nvme0n1' ]"
app4.ocp.example.local glusterfs_ip=172.30.4.19 glusterfs_devices="[ '/dev/nvme0n1' ]"
app5.ocp.example.local glusterfs_ip=172.30.4.20 glusterfs_devices="[ '/dev/nvme0n1' ]"
app6.ocp.example.local glusterfs_ip=172.30.4.21 glusterfs_devices="[ '/dev/nvme0n1' ]"
[glusterfs_registry]
gluster1.ocp.example.local glusterfs_ip=172.30.4.22 glusterfs_devices="[ '/dev/sdb', '/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf', '/dev/sdg', '/dev/sdh', '/dev/sdi', '/dev/sdj', '/dev/sdk', '/dev/sdl', '/dev/sdm', '/dev/sdn', '/dev/sdo', '/dev/sdp', '/dev/sdq', '/dev/sdr', '/dev/sds', '/dev/sdt', '/dev/sdu' ]"
gluster2.ocp.example.local glusterfs_ip=172.30.4.23 glusterfs_devices="[ '/dev/sdb', '/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf', '/dev/sdg', '/dev/sdh', '/dev/sdi', '/dev/sdj', '/dev/sdk', '/dev/sdl', '/dev/sdm', '/dev/sdn', '/dev/sdo', '/dev/sdp', '/dev/sdq', '/dev/sdr', '/dev/sds', '/dev/sdt', '/dev/sdu' ]"
gluster3.ocp.example.local glusterfs_ip=172.30.4.24 glusterfs_devices="[ '/dev/sdb', '/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf', '/dev/sdg', '/dev/sdh', '/dev/sdi', '/dev/sdj', '/dev/sdk', '/dev/sdl', '/dev/sdm', '/dev/sdn', '/dev/sdo', '/dev/sdp', '/dev/sdq', '/dev/sdr', '/dev/sds', '/dev/sdt', '/dev/sdu' ]"
[arista]
arista-1 ansible_host=192.168.25.2 ansible_user=admin ansible_password=SWITCH_ADMIN_PASSWORD
arista-2 ansible_host=192.168.25.3 ansible_user=admin ansible_password=SWITCH_ADMIN_PASSWORD
今天先到這兒,希望對云原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 專案管理, 產品管理,團隊建設 有參考作用 , 您可能感興趣的文章:
領匯入怎樣帶領好團隊
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下訊息佇列架構
互聯網高效研發團隊管理演進之一
訊息系統架構設計演進
互聯網電商搜索架構演化之一
企業資訊化與軟體工程的迷思
企業專案化管理介紹
軟體專案成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
專案管理溝通計劃
構建高效的研發與自動化運維
某大型電商云平臺實踐
互聯網資料庫架構設計思路
IT基礎架構規劃方案一(網路系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之采購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變
Openshift與Kubernetes的區別
如有想了解更多軟體設計與架構, 系統IT,企業資訊化, 團隊管理 資訊,請關注我的微信訂閱號:
![MegadotnetMicroMsg_thumb1_thumb1_thu[2] MegadotnetMicroMsg_thumb1_thumb1_thu[2]](https://img.uj5u.com/2020/10/17/1481281723284312.jpg)
作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利,
該文章也同時發布在我的獨立博客中-Petter Liu Blog,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/176994.html
標籤:其他
