- OpenShift在企業中的實踐:PaaS DevOps微服務(第2版)
- 魏新宇 郭躍軍
- 2688字
- 2021-11-05 10:17:17
3.2.1 OpenShift部署方式與過程說明
1.OpenShift部署方式介紹
OpenShift支持的部署基礎架構有兩種類型:
·Installer-Provisioned Infrastructure,簡稱IPI。
·User-Provisioned Infrastructure,簡稱UPI。
使用IPI方式部署OpenShift,絕大多數具體的配置工作都由Installer完成,因此部署過程非常簡單。使用UPI方式部署OpenShift,需要進行很多手工配置。
無論采用IPI方式還是UPI方式部署,OpenShift集群中的Master節點都必須使用Red Hat CoreOS(簡稱RHCOS)操作系統。如果使用IPI方式安裝,Worker節點也必須使用RHCOS操作系統,但采用UPI安裝,Worker節點可以選擇使用RHCOS操作系統或RHEL操作系統。但出于統一管理和維護的考慮,我們建議Woker節點也使用RHCOS操作系統。
幾乎所有的基礎設施都支持使用UPI方式部署,目前OpenShift 4.6支持IPI方式部署的基礎架構有:
·AWS
·Azure
·GCP
·Red Hat OpenStack
·RHV
·VMware vSphere
·X86物理服務器
目前OpenShift 4.6支持UPI模式部署的基礎架構有:
·AWS
·Azure
·GCP
·Red Hat OpenStack
·VMware vSphere
·X86物理服務器
·IBM Z
·IBM Power
可以看到,OpenShift支持的基礎設施類型很多,在不同類型的基礎設施上的部署過程也大同小異。本節我們會大致說明通用安裝過程,然后演示以Bare metal模式離線安裝OpenShift的示例。
在Repo中的“OpenShift 4.5.3在Openstack上的UPI離線安裝”記錄了在OpenStack上離線安裝OpenShift的過程,供讀者參考。本書第1版中的OpenShift 3的安裝步驟請參考Repo中的“OpenShift 3.11安裝”。在第6章,我們將介紹如何在AWS中國區部署OpenShift。更多OpenShift部署的細節請參考官方文檔,鏈接如下:
·OpenShift 4.6企業版鏈接:https://access.redhat.com/documentation/en-us/openshift_container_platform/4.6/html-single/installing_on_bare_metal/index
·OpenShift 4社區版鏈接:https://docs.okd.io/latest/install/index.htm
在大部分客戶的實際環境中,無法直接訪問公網,這就需要離線部署OpenShift。OpenShift的離線部署只支持UPI方式,也就是說,即使在紅帽OpenStack基礎設施上,如果想離線部署OpenShift,也必須使用UPI方式。
在講述具體部署之前,我們先對離線部署OpenShift的要求和大致過程進行說明。
2.OpenShift離線部署要求
OpenShift離線部署需要的安裝角色如下:
·管理機:也可稱為工具機,主要是安裝一些客戶端工具以及管理整個OpenShift依賴的基礎環境。另外,管理機通常能夠訪問外網,這樣也可以在管理機上訪問外網拉取安裝鏡像,并將其推送到離線環境的容器鏡像倉庫中。
·容器鏡像服務器:為離線安裝提供鏡像,具體方案參考“3.2.2配置OpenShift離線鏡像”。
·DNS服務器:為OpenShift節點和應用提供域名解析。
·HTTP服務器:用于在安裝過程中Master節點和Worker節點獲取RHCOS鏡像和配置文件的位置。
·負載均衡器:OpenShift要求Master節點為3個,因此在安裝的時候,需要負載均衡器,另外,多個Router也需要負載均衡器,可以選擇HAproxy或者F5實現。
·NFS服務器:測試環境如果沒有企業級存儲,還需要配置一個NFS服務器,為OpenShift提供外部持久化存儲。
·Bootstrap:該主機啟動一個臨時Master,由它來引導整個OpenShift集群的啟動。當OpenShift安裝完畢后,這個節點可以關閉或刪除。
·Master節點:OpenShift集群的管理節點。
·Worker節點:OpenShift集群的工作節點。
在上述安裝角色中,Bootstrap、Master節點、Worker節點都使用RHCOS操作系統,管理機可以使用RHEL操作系統。如果基礎設施的服務器資源有限,可以將管理機、鏡像服務器、DNS服務器、Http服務器、軟負載均衡器、NFS服務器等幾個角色使用一臺服務器承載。當然,我們也可以把管理機的角色和其他幾個角色單獨分開,使用兩臺服務器承載,即一臺管理機、一臺輔助安裝節點(其他角色)。
按照官方文檔,OpenShift的集群最小資源配置要求如表3-1所示。
表3-1 OpenShift部署節點最低配置

關于每個節點的數量,根據官方建議在一套OpenShift集群中應該包含:
·一個Bootstrap節點。
·必須3個Master節點。
·至少兩個Worker節點,這樣當一個Worker節點出現故障,Pod可以在另外一個Worker節點上重啟。
·如果在生產環境,需要將Worker細分為App Node和Infra Node(建議至少3個),在這種情況下,Worker節點至少5個。
了解了離線部署的要求之后,接下來介紹離線部署的大致過程。
3.OpenShift離線部署過程
本小節介紹的安裝方式,適用于OpenShift 4.3、OpenShift 4.4、OpenShift 4.5。OpenShift 4.6的離線+bare metal模式安裝方法略有調整,調整內容會在3.2.3節的第12小節中提及。想安裝OpenShift 4.6的朋友,請先閱讀這一小節。
離線部署過程大致如圖3-4所示。

圖3-4 OpenShift離線部署過程示意圖
如圖3-4所示,OpenShift離線部署的大致過程如下:
1)同步公網鏡像,實現本地鏡像倉庫。
我們需要將OpenShift的安裝鏡像(110個左右容器鏡像)同步到數據中心本地鏡像倉庫,然后整個部署過程不再需要訪問外網鏡像倉庫。
2)獲取其他部署需要的在線資源和輔助機器的配置。
·下載RHCOS操作系統的鏡像,下載的時候需要選擇與基礎架構對應的版本。下載地址:https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos。如果在物理服務器上安裝,需要下載rhcos-4*-x86_64-metal-bios.raw.gz(用于安裝RHCOS操作系統)和rhcos-4*-x86_64-installer.iso(用于引導啟動Bootstrap服務器)。
·配置其他的安裝角色。如在管理機上安裝并配置DNS服務器、HTTP服務器、HAproxy服務器、NFS服務器等。
·下載openshift-install文件(版本必須與安裝鏡像相同,否則離線安裝會失?。?、OC客戶端和pull-secret文件到管理機,并在管理機生成SSH Key。
3)準備OpenShift安裝文件。
·通過openshift-install create install-config命令行生成install-config.yaml文件。該文件主要包含Base Domain、Master節點數、Pod IP地址段、Service IP地址段、本地鏡像倉庫的域名、從本地鏡像倉庫下載的pull secret等。
·執行openshift-install create manifests--dir=<installation_directory>,生成manifests。安裝目錄中必須包含修改后的install-config.yaml文件。命令執行完成后,會生成很多集群安裝配置文件,如manifests/cluster-scheduler-02-config.yml。我們可以在配置文件中設置masterSchedulabel,即Master節點是否調度業務Pod。
·執行openshift-install create ignition-configs--dir=<installation_directory>,執行完畢后,會生成如下文件:
├── auth │ ├── kubeadmin-password │ └── kubeconfig ├── bootstrap.ign ├── master.ign ├── metadata.json └── worker.ign
bootstrap.ign是Bootstrap主機的安裝配置,master.ign是Master節點的安裝配置,worker.ign是Worker節點的安裝配置。
·將所有.ign配置文件、RHCOS的ISO文件拷貝到HTTP服務器對應的目錄上,以便Bootstrap、Master、Worker啟動的時候可以從HTTP服務器獲取操作系統ISO和.ign配置文件。
4)啟動Bootstrap主機引導OpenShift集群。
·啟動Bootstrap引導主機。
不同的環境創建Bootstrap主機的方式稍有不同,但我們可以使用物理主機的安裝方式,在所有的環境安裝,用rhcos-4*-x86_64-installer.iso啟動Bootstrap引導主機。首先將主機引導至維護模式,查看主機的磁盤名和網卡名,記錄下來。
重啟主機,啟動至RHCOS的安裝界面時,按Tab鍵,然后輸入如圖3-5中所示的內容。

圖3-5 配置RHCOS操作系統
以圖3-5環境為例,在啟動Bootstrap主機時,添加的配置內容如下。
coreos.inst.install_dev=sda coreos.inst.image_url=http://192.168.137.202:8080/ rhcos-4.2.0-x86_64-metal-bios.raw.gz coreos.inst.ignition_url= http://192.168.137.202:8080/bootstrap.ign ip=192.168.137.210::192.168.137.2: 255.255.255.0:bootstrap.ocp4.example.com:ens33:none nameserver=192.168.137.202
配置說明如下:
·設定系統安裝到sda磁盤上。
·192.168.137.202為HTTP服務器的地址,會從該服務器上獲取RHCOS的安裝程序和bootstrap.ign文件。
·Bootstrap主機的IP地址設置為192.168.137.210、網關地址為192.168.137.2、子網掩碼為255.255.255.0。
·Bootstrap主機的域名為bootstrap.ocp4.example.com。
·Bootstrap的網卡為ens33。
·Bootstrap的域名服務器地址為192.168.137.202。
·啟動Master節點。
啟動三個Master節點,啟動注入參數示例如下(參數含義同bootstrap.ign)。
coreos.inst.install_dev=sda coreos.inst.image_url=http://192.168.137.202:8080/rhcos-4.2.0-x86_64-metal-bios. raw.gz coreos.inst.ignition_url=http://192.168.137.202:8080/master.ign ip= 192.168.137.203::192.168.137.2:255.255.255.0:master-0.ocp4.example.com: ens33:none nameserver=192.168.137.202
不同的Master節點注意替換IP地址和主機名。
·啟動Worker節點。
根據需要啟動多個Worker節點,啟動注入參數示例如下(參數含義同bootstrap.ign)。
coreos.inst.install_dev=sda coreos.inst.image_url=http://192.168.137.202:8080/rhcos-4.2.0-x86_64-metal-bios.raw. gz coreos.inst.ignition_url=http://192.168.137.202:8080/worker.ign ip= 192.168.137.206::192.168.137.2:255.255.255.0:worker01.ocp4.example.com: ens33:none nameserver=192.168.137.202
不同的Worker節點注意替換IP地址和主機名。
5)驗證集群狀態。
等待安裝完畢后,使用如下命令查看clusteroperators的版本,AVAILABLE的狀態均為True表示集群狀態健康,如圖3-6所示。
# oc get clusteroperators

圖3-6 查看Cluster Operator狀態
當我們看到所有的ClusterOperator都已經正確安裝,也就表示OpenShift集群部署成功。
可以看到整個離線安裝過程中,步驟還是相對較多的。而離線部署的第一個工作就是同步公網鏡像,創建本地鏡像倉庫,因此在正式介紹部署操作之前,我們先介紹配置OpenShift離線鏡像的方法。