Contents

Openshift - Cluster 安裝簡述

OpenShift 是一基於 Kubernetes 的企業及容器化平台,無論是私有雲、公有雲或是任一環境中都能透過不同的部屬方式與模式來快速達成部屬及安裝。

1. OpenShift Cluster 安裝簡介

在 Redhat OpenShift 3.x 系列的版本安裝步驟十分複雜且繁瑣, OpenShift 改善了整體安裝流程,將大部份事情自動化、減少人為操作安裝等。 區分為兩種安裝方法 ( IPI 與 UPI ):

Action Full-stack Automation (IPI) Pre-existing Infrastructure (UPI)
Build network Installer User
Setup load balancer Installer User
Configure DNS Installer User
Hardware or VM provisioning Installer User
OS installation Installer User
Generate ignition configs Installer Installer
Control plane node OS support Installer: RHCOS User: RHCOS
Compute node OS support Installer: RHCOS User: RHCOS + RHEL 8
Configure persistent storage for the internal registry Installer User
Configure dynamic storage provider Installer User
Configure node provisioning and cluster autoscaling Installer Only for providers with OpenShift Machine API support

2. Ignition 設定

要安裝 OpenShift Cluster 容器化平台,需透過 openshift-install 安裝程式,藉由此設定產生 Ignition 設定檔 ( JSON 格式) 來定義 RHCOS 系統的所需狀態。

1
2
3
4
1. 可以在任何實體機、虛擬機或是雲端機器上執行
2. 透過 RHCOS 引導過程中執行 kickstartcloud-init 與 intiramfs。
3. 在引導過程中設定儲存、 systemd unit、憑證、使用者與自定義的設定。
4. Ignition 可以透過 http、 htpps,local 硬碟或是雲端 metadata 等來源。

3. OpenShift 安裝過程

安裝步驟圖例

https://hackmd.io/_uploads/BJ-9Bqa-h.png
From access.redhat.com

  1. 使用 install-config.yaml 定義 Cluster 資訊 (或是透過交互式問題產生)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
## install-config.yaml 範本
apiVersion: v1
baseDomain: example.com                   # 1
compute:                                  # 2
- hyperthreading: Enabled                 # 3
  name: worker
  replicas: 0                             # 4
controlPlane:                             # 5
  hyperthreading: Enabled                 
  name: master
  replicas: 3                             # 6
metadata:
  name: test                              # 7
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14                   # 8
    hostPrefix: 23                        # 9
  networkType: OpenShiftSDN                      
  serviceNetwork:                         # 10
  - 172.30.0.0/16
platform:
  none: {}                                
fips: false                               # 11 
pullSecret: '{"auths": ...}'              # 12
sshKey: 'ssh-ed25519 AAAA...'             # 13
內容簡述
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
1. Cluster 基本的 Domain Name。
2. compute 定義 worker 結構。
3. 是否啟用多執行緒(SMT),預設啟用。
4. 如果使用 UPI (自定義基礎設施安裝)此值必須為 0 ,使用手動安裝新增 worker。 
5.  controlPlane 定義 master 結構。
6.  定義 master 的數量。
7.  Cluster 名稱。
8.  Pod IP 分配範圍。
9.  hostPrefix 表示最多可以使用 510 個主機。
10. 設定 SVC 分配範圍。
11. 是否啟動加密。
12. OpenShift 與 OKD Image 都是存放在 Quay.io,故需要身份應證。
13. core 使用者的 ssh 公鑰。
  1. 從安裝 install-config.yaml 中創建 Kubernetes 清單,其中清單包含所有 OpenShift 安裝時所需資源 ( 此步驟可省略 )。

  2. 透過定義的 install-config.yaml 或是 Kubernetes 清單 產生 bootstrap.ignmaster.ignworker.ign Ignition 檔案。

  3. Bootstrap Node 透過 bootstrap.ign 進行引導安裝作業,其中藉由靜態的 POD 產生一個 k8s 來執行運作安裝。

  4. Master Node 透過 master.ign 進行引導安裝。

  5. Bootstrap Node 將臨時的 ETCD 轉移給 Master Node 後,並可以關閉 Bootstrap Node 。

  6. 其餘 Worker Node 使用 worker.ign 向 master 進行引導安裝。


4. OpenShift DNS 先決條件

OpenShift 高度依賴於 DNS 正向解析與反向解析,故須使用 DNS 其形式如下: <component>.<cluster_name>.<base_domain>

  • <cluster_name> 是 Cluster 的名稱,例如 ocp4 。
  • <base_domain> 為 cluster 的基本網域名稱, 例如 example.com 。
component 名稱解析 描述
Kubernetes API api.<cluster_name>.<base_domain>. DNS A 和 PTR 記錄,用於表示 master 節點的 API 負載平衡。
Kubernetes API API-int.<cluster_name>.<base_domain>. DNS A 和 PTR 記錄,用於表示 master 節點的 API 負載平衡。
路線 *.apps.<cluster_name>.<base_domain>. DNS A 記錄,用於表示路由器 Pod 的 cluster 節點的應用程式入口負載平衡。
群集節點 <name>.<cluster_name>.<base_domain>. DNS A 和 PTR 記錄,用於表示每個 cluster 節點,包括引導節點。

5. OpenShift Firewall 規則

  1. Node 對 Node 需開通防火牆規則
Protocol Port Description
ICMP N/A 測試網路通聯
TCP 9000-9999 主機服務
TCP 10250-10259 K8s 保留
TCP 10256 openshift-sdn
UDP 4789 VXLAN 與 Geneve
UDP 6081 VXLAN 與 Geneve
UDP 9000-9999 主機服務
TCP/UDP 30000-32767 K8s node port
  1. Node 對 Master Node 需開通防火牆規則
Protocol Port Description
TCP 2379-2380 etcd
TCP 6443 Kubernetes API
  1. 負載平衡需開通防火牆規則
TCP Port Back-end nodes Description
6443 Master Node Kubernetes API server
22623 Master Node Machine Config server
443 Worker (Infra) Node HTTPS 流量
80 Worker (Infra) Node HTTP 流量

6. OpenShift 安裝模式

依據是否能直接存取外部網路可以取分下列兩種安裝模式 :

  1. 可直接存取外部網路 :

    Cluster 具有 Internet 存取能力,可以直接從 quay.io 與 registry.redhat.io 上直接拉取 Image 使用全自動或是 UPI 基礎架構安裝方式。

  2. 無法直接存取外部網路 :

    如果無法直接存取外部網路,只能透過私有的 Image 倉庫預先鏡像 Image 在進行安裝, 相關步驟可以參考 HowHow 網站的 Openshift - Quay 本地私有 Registry 倉庫

https://hackmd.io/_uploads/SkRRRBEbh.png
鏡像 OCP Image Example


7. 小結

OpenShift 安裝在官方網站 Installation overview | Installing | OpenShift Container Platform 4.12 有詳細步驟說明,對於打造一座 Cluster 在生產環境需要決定跟規劃後才往下執行。



如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!