在受限網路裸機上安裝Openshift 4.6叢集

panpong發表於2021-12-30

1.    Openshift 4.6.4 install

Red Hat OCP RHBA-2020:4196 )現已正式釋出。此發行版本使用 Kubernetes 1.19 CRI-O 執行時。

OCP 4.6 需要執行在 Red Hat Enterprise Linux 7.7 及更新的版本,或 Red Hat Enterprise Linux CoreOS 4.6 上。必須使用 Red Hat Enterprise Linux CoreOS (RHCOS) 作為 control plane ( 也稱為 master) 的系統,而 compute ( 也稱為 worker) 機器可以使用 RHCOS ,或 Red Hat Enterprise Linux 7.7 及更新的版本。

 

CNI 網路供應商現在使用在叢集節點上安裝的 OVS; OpenShift SDN OVN-Kubernetes Container Network Interface CNI )叢集網路供應商現在都使用在叢集節點上安裝的 Open vSwitch OVS )版本。在以前的版本中,OVS 會在每個節點上執行由 DaemonSet 管理的容器中執行。使用主機 OVS 可避免任何可能的停機時間,如升級 OVS 容器化版本。

下面是在受限網路中的裸機上安裝叢集OCP4.6.4 的過程。

1.1.    在受限網路裸機上安裝叢集的先決條件

       - 在映象主機上建立映象 registry ,並獲取您的 OCP 版本的 imageContentSources 資料。 重要:由於安裝介質位於堡壘主機上,因此請使用該計算機完成所有安裝步驟。

【參考】

       - 為叢集置備永續性儲存。若要部署私有映象 registry ,您的儲存必須提供 ReadWriteMany 訪問模式。

       - 檢視有關 OCP 安裝和更新流程的詳細資訊。

       - 如果使用防火牆並計劃使用遙測(telemetry ),您必須將防火牆配置為允許叢集需要訪問的站點。

1.2.    關於在受限網路中安裝

       - 平臺選擇會受到限制

       - 如果選擇在雲平臺中執行受限網路安裝,仍然需要訪問其雲 API 。必定需要訪問網際網路

       - 必須建立映象 registry

受限網路中的叢集還有以下額外限制:

    ClusterVersion 狀態包含 Unable to retrieve available updates 錯誤。

    預設情況下,您無法使用 Developer Catalog 的內容,因為您無法訪問所需的 ImageStreamTag

1.3.    OCP 對網際網路和 Telemetry 的訪問

       OCP 4.5 中,您需要訪問網際網路來獲得用來安裝叢集的映象。

       預設執行的 Telemetry 服務提供有關叢集健康狀況和成功更新的指標,這也需要訪問網際網路。如果您的叢集連線到網際網路,Telemetry 會自動執行,而且叢集會註冊到 Red Hat OpenShift Cluster Manager OCM )。

1.4.    叢集的機器要求

l   所需的機器

最小的 OCP 叢集需要下列主機:

    一個臨時 bootstrap 機器

    三臺 control plane master 機器

    至少兩臺計算機器,也稱為 worker 機器

*bootstrap control plane 以及計算(compute )機器必須使用 Red Hat Enterprise Linux CoreOS (RHCOS) 作為作業系統。

l   網路連線要求

       所有 Red Hat Enterprise Linux CoreOS (RHCOS) 機器在啟動過程中需要 initramfs 中的網路從 Machine Config Server 獲取 Ignition 配置檔案。在初次啟動過程中,需要一個 DHCP 伺服器或設定了靜態 IP 地址來建立網路連線,以下載它們的 Ignition 配置檔案。

l   最低資源要求

       每臺叢集機器都必須滿足以下最低要求:             

機器

作業系統

vCPU

虛擬記憶體

儲存

bootstrap

RHCOS

4

16 GB

120 GB

Control plane

RHCOS

4

16 GB

120 GB

Compute

RHCOS 或 RHEL 7.6

2

8 GB

120 GB

l   證書籤名請求管理

       在使用您置備的基礎架構時,叢集只能有限地訪問自動機器管理,因此您必須提供一種在安裝後批准叢集證書籤名請求 (CSR) 的機制。kube-controller-manager 只能批准 kubelet 客戶端 CSR machine-approver 無法保證使用 kubelet 憑證請求的提供證書的有效性,因為它不能確認是正確的機器發出了該請求。您必須決定並實施一種方法,以驗證 kubelet 提供證書請求的有效性並進行批准。

 

l   參考配置列表

角色

作業系統

vcpu/mem/disk

IP 地址

備註

bootstrap

RHCOS 4.6.1

4C16G120G

192.168.4.117

測試叢集2

Control plane

RHCOS 4.6.1

4C16G120G

192.168.4.118


Control plane

RHCOS 4.6.1

4C16G120G

192.168.4.119


Control plane

RHCOS 4.6.1

4C16G120G

192.168.4.120


Compute

RHCOS 4.6.1

2C8G120G

192.168.4.121


Compute

RHCOS 4.6.1

2C8G120G

192.168.4.122


cluster2server

rhel7.7

2C8G100G

192.168.4.123

dns/yum/haproxy/registry

1.5.    準備基礎環境

- 在每個節點上配置 DHCP 或設定靜態 IP 地址。【靜態IP

- 提供所需的負載均衡器

【參考】

    - 配置機器的埠

- 配置 DNS

【參考】

1.6.   Mirror Registry配置

1.6.1.     準備主機

       Linux 上安裝 OpenShift CLI oc )二進位制檔案。

wget

1.6.2.     建立 mirror registry

1)         安裝所需的軟體包

yum -y install podman httpd-tools

mkdir -p /opt/registry/{auth,certs,data}

2)         registry 提供證書

如果您沒有現有的可信證書頒發機構,您可以生成自簽名證書:

$ cd /opt/registry/certs

# openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt

或者

#export MIRRIR_REGISTRY=<FULL-DOMAIN-NAME>

export MIRRIR_REGISTRY=`hostname`

#openssl req -newkey rsa:4096 -nodes -sha256 -keyout /opt/registry/certs/registry.key -x509 -days 365 \

  -out /opt/registry/certs/registry.crt \

  -subj "/C=CN/ST=BEIJING/L=BJ/O=RedHat/OU=OpenShift.RedHat/CN=${MIRRIR_REGISTRY}/emailAddress=admin@${MIRRIR_REGISTRY}"

 

registry 生成使用 bcrpt 格式的使用者名稱和密碼:

# htpasswd -bBc /opt/registry/auth/htpasswd <user_name> <password>

htpasswd -bBc /opt/registry/auth/htpasswd aaa123

 

將自簽名證書新增到可信證書列表中:

將自簽名證書加到執行Mirror Registry 節點的可信證書中,然後確認前幾行就是上一步新增的“OU=OpenShift.RedHat ”的證書。

$ cp /opt/registry/certs/registry.crt /etc/pki/ca-trust/source/anchors/

$ update-ca-trust

$ trust list | head -5

 

3)           建立 mirror-registry 容器以託管 registry

 # podman run --name mirror-registry -p <local_registry_host_port>:5000 \  # 對於 <local_registry_host_port> ,請指定您的映象 registry 用於提供內容的埠

     -v /opt/registry/data:/var/lib/registry:z \

     -v /opt/registry/auth:/auth:z \

     -e "REGISTRY_AUTH=htpasswd" \

     -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \

     -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \

     -v /opt/registry/certs:/certs:z \

     -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \

     -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \

     -e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true \

     -d docker.io/library/registry:2

例項:

# podman run --name mirror-registry -p 5000:5000 \

     -v /opt/registry/data:/var/lib/registry:z \

     -v /opt/registry/auth:/auth:z \

     -e "REGISTRY_AUTH=htpasswd" \

     -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \

     -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \

     -v /opt/registry/certs:/certs:z \

     -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt \

     -e REGISTRY_HTTP_TLS_KEY=/certs/registry.key \

     -e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true \

     -d docker.io/library/registry:2

    

4)         registry 開啟所需的埠:

# firewall-cmd --add-port=<local_registry_host_port>/tcp --zone=internal --permanent

# firewall-cmd --add-port=<local_registry_host_port>/tcp --zone=public   --permanent

# firewall-cmd --reload

例項:

firewall-cmd --add-port=5000/tcp --zone=internal --permanent

firewall-cmd --add-port=5000/tcp --zone=public   --permanent

firewall-cmd --reload

 

5)         確認 registry 可用:

$ curl -u <user_name>:<password> -k

{"repositories":[]}

curl -u mirimg:aaa123 -k

1.6.3.     配置mirror registry 憑證

配置允許對mirror registry 進行mirror 的憑證

1)         下載Pull Secret

Red Hat OpenShift Cluster Manager 站點的 Pull Secret 頁面下載 registry.redhat.io pull secret ,將它儲存為一個 .json 檔案。

       pull secret

 

[root@cluster2 ~]# wget -O jq

[root@cluster2 ~]# chmod +x ./jq

[root@cluster2 ~]# cp jq /usr/bin

 

2)         為您的映象 registry 生成 base64 編碼的使用者名稱和密碼或令牌:

$ echo -n '<user_name>:<password>' | base64 -w0

echo -n 'mirimg:aaa123' |base64 -w0

# 透過 <user_name> <password> 指定 registry 的使用者名稱和密碼。

# echo 'bWlyaOjFxYXo3VUpN' |base64 -d

 

3)         JSON 格式建立您的 pull secret 副本:

$ cat ./pull-secret.text | jq .  > <path>/<pull-secret-file>

[root@cluster2 ~]# cat pull-secret | jq . >all-secret.json

 

編輯新檔案並新增描述 registry 的部分:

 

  "auths": {

    "<mirror_registry>": {

      "auth": "<credentials>",

      "email": "you@example.com"

  },

例項:

  "auths": {

    "cluster2.pocchina.com:5000": {

      "auth": "bWlyaOjFxYXo3VUpN",

      "email": "admin@ pocchina.com"

    },

l   對於 <mirror_registry> ,指定 registry 域名,以及您的映象 registry 用來提供內容的可選埠。例如: registry.example.com registry.example.com:5000

l   使用 <credentials> 為您的映象 registry 指定 base64 編碼的使用者名稱和密碼。

1.6.4.     mirror OCP 映象倉庫

1.6.4.1.   設定所需的環境變數

$ OCP_RELEASE=<release_version>

$ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'

$ LOCAL_REPOSITORY='<local_repository_name>'

$ PRODUCT_REPO='openshift-release-dev'

$ LOCAL_SECRET_JSON='<path_to_pull_secret>'

$ RELEASE_NAME="ocp-release"  # 對於生產環境版本,您必須指定 ocp-release

$ ARCHITECTURE=<server_architecture>   # 例如:x86_64

$ REMOVABLE_MEDIA_PATH=<path>   # 指定完整路徑,包括開始的前斜槓(/) 字元。

例項:

export OCP_RELEASE=4.6.4

export LOCAL_REGISTRY='cluster2.pocchina.com:5000'

export LOCAL_REPOSITORY='ocp4/openshift4'

export PRODUCT_REPO='openshift-release-dev'

export LOCAL_SECRET_JSON=$HOME/all-secret.json

export RELEASE_NAME="ocp-release"

export ARCHITECTURE=x86_64 

export REMOVABLE_MEDIA_PATH=$HOME

export GODEBUG=x509ignoreCN=0

 

1.6.4.2.   將Images映象(mirror)到內部容器registry

l   如果您的映象主機無法訪問網際網路,請執行以下操作:

    將可移動介質連線到連線到網際網路的系統。

       檢視要映象的映象和配置清單:

       $ oc adm -a ${LOCAL_SECRET_JSON} release mirror \

            --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \

            --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \

            --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} --dry-run

       記錄上一命令輸出中的 imageContentSources 部分。您的映象資訊與您的映象儲存庫相對應,您必須在安裝過程中將 imageContentSources 部分新增到 install-config.yaml 檔案中。

      

       image 映象到可移動介質的目錄中:

       $ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}

      

       將介質上傳到受限網路環境中,並將映象上傳到本地容器 registry

       $ oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}

         對於 REMOVABLE_MEDIA_PATH ,您必須使用與映象映象時指定的同一路徑。

 

l   如果本地容器 registry 連線到映象主機,請執行以下操作:

    使用以下命令直接將發行版映象推送到本地 registry:

    $ oc adm -a ${LOCAL_SECRET_JSON} release mirror \

         --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \

         --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \

         --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}

輸出日誌如下:

info: Mirroring 120 images to cluster2.pocchina.com:5000/ocp4/openshift4 ...

cluster2.pocchina.com:5000/

  ocp4/openshift4

    blobs:

      quay.io/openshift-release-dev/ocp-release sha256:26f7cd4cf1fb9d0038d09a2702353455afddeb1d36706f1218d1569342453fc9 1.672KiB

… …

    blobs:

      quay.io/openshift-release-dev/ocp-v4.0-art-dev sha256:04ef0e69dcba4088b009d14d21e86cda00ddbf8e84a4d9746c5d8ec9d61803af 1.379KiB

… …

    manifests:

      sha256:003d999d37f8d2c043ad9370eaf1e7533b9306bcebea47d62546b6456b0f6924 -> 4.6.4-grafana

… …

  stats: shared=5 unique=246 size=6.553GiB ratio=0.98

 

phase 0:

  cluster2.pocchina.com:5000 ocp4/openshift4 blobs=251 mounts=0 manifests=120 shared=5

… …

Success

Update image:  cluster2.pocchina.com:5000/ocp4/openshift4:4.6.4-x86_64

Mirror prefix: cluster2.pocchina.com:5000/ocp4/openshift4

 

To use the new mirrored repository to install, add the following section to the install-config.yaml:

 

imageContentSources:

- mirrors:

  - cluster2.pocchina.com:5000/ocp4/openshift4

  source: quay.io/openshift-release-dev/ocp-release

- mirrors:

  - cluster2.pocchina.com:5000/ocp4/openshift4

  source: quay.io/openshift-release-dev/ocp-v4.0-art-dev

 

 

To use the new mirrored repository for upgrades, use the following to create an ImageContentSourcePolicy:

 

apiVersion: operator.openshift.io/v1alpha1

kind: ImageContentSourcePolicy

metadata:

  name: example

spec:

  repositoryDigestMirrors:

  - mirrors:

    - cluster2.pocchina.com:5000/ocp4/openshift4

    source: quay.io/openshift-release-dev/ocp-release

  - mirrors:

    - cluster2.pocchina.com:5000/ocp4/openshift4

    source: quay.io/openshift-release-dev/ocp-v4.0-art-dev */

  該命令將發行資訊提取為摘要,其輸出包括安裝叢集時所需的 imageContentSources 資料。

記錄上一命令輸出中的 imageContentSources 部分。您的映象資訊與您的映象儲存庫相對應,您必須在安裝過程中將 imageContentSources 部分新增到 install-config.yaml 檔案中。

1.6.4.3.   驗證

$ curl -u <USER>:<PASSWORD> -k {MIRRIR_REGISTRY}:5000/v2/_catalog

例項:

curl -u mirimg:aaa123 -k

 

export OCP_RELEASE=4.6.4

export LOCAL_REGISTRY='cluster2.pocchina.com:5000'

export LOCAL_REPOSITORY='ocp4/openshift4'

export PRODUCT_REPO='openshift-release-dev'

export LOCAL_SECRET_JSON=$HOME/all-secret.json

export RELEASE_NAME="ocp-release"

export ARCHITECTURE=x86_64 

export REMOVABLE_MEDIA_PATH=$HOME

export GODEBUG=x509ignoreCN=0

oc adm release info -a ${LOCAL_SECRET_JSON} "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"

[root@cluster2 ~]# oc adm release info -a ${LOCAL_SECRET_JSON} "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"

Name:      4.6.4

Digest:    sha256:6681fc3f83dda0856b43cecd25f2d226c3f90e8a42c7144dbc499f6ee0a086fc

Created:   2020-11-11T15:13:14Z

OS/Arch:   linux/amd64

Manifests: 444

 

Pull From: cluster2.pocchina.com:5000/ocp4/openshift4@sha256:6681fc3f83dda0856b43cecd25f2d226c3f90e8a42c7144dbc499f6ee0a086fc

 

Release Metadata:

  Version:  4.6.4

  Upgrades: 4.5.16, 4.5.17, 4.5.18, 4.5.19, 4.6.1, 4.6.2, 4.6.3

  Metadata:

    url:

 

Component Versions:

  kubernetes 1.19.0              

  machine-os 46.82.202011061621-0 Red Hat Enterprise Linux CoreOS

 

Images:

  NAME                                           DIGEST

  aws-ebs-csi-driver                             sha256:307d07432e0913c7e3673bffe454ba8b11bdf55d2c537c43eda35c03b19d64e3

  aws-ebs-csi-driver-operator                    sha256:5d396305893a2c5855a331f925a8ca59e1526e93df6c3834b78f36eca0a509fc

… …

  thanos                                         sha256:e9b7708abd519710c58d6f51870cd1085e436283164cf7ddeb44530a2c4ca12f

  tools                                          sha256:4b0c00d40c1f3860c89a7b0d6fd5113ad59c0bb96416850f3cda26071b709f46

 

[root@cluster2 ~]#

至此,mirror registry 已經配置完成

1.6.5.     建立安裝程式

要建立基於您映象內容的安裝程式,請提取內容並 將其固定到發行版中:

l   如果您的映象主機無法訪問網際網路,執行以下命令:

        $ oc adm -a ${LOCAL_SECRET_JSON} release extract --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}"

l   如果本地容器 registry 連線到映象主機,請執行以下命令:

        $ oc adm -a ${LOCAL_SECRET_JSON} release extract --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"

重要:(1) 要確保將正確的映象用於您選擇的 OpenShift Container Platform 版本,您必須從映象內容中提取安裝程式。(2) 您必須在有活躍網際網路連線的機器上執行這個步驟。(3) 如果您位於斷開連線的環境中, 請使用 --image 標誌作為 must-gather 的一部分,指向有效負載映象。

1.6.6.     收集叢集支援資料

使用受限網路的叢集必須匯入預設的 must-gather 映象,以便為紅帽支援收集除錯資料。在預設情況下,must-gather 映象不會被匯入,並且受限網路中的叢集無法訪問網際網路來從遠端儲存庫拉取最新的映象。

$ oc import-image is/must-gather -n openshift

1.6.7.     使用Cluster Samples Operator 映象流

使用帶有備用或映象 registry Cluster Samples Operator 映象流。

openshift 名稱空間中大多數由 Cluster Samples Operator 管理的映象流指向位於 registry.redhat.io 上紅帽容器映象倉庫中的映象。映象功能不適用於這些映象流。

注意:

       cli installer must-gather test 映象流雖然屬於安裝有效負載的一部分,但不由 Cluster Samples Operator 管理。此流程中不涉及這些映象流。

 

先決條件

l   使用具有 cluster-admin 角色的使用者訪問叢集。

l   為您的映象 registry 建立 pull secret

過程:

1)         訪問被映象(mirror )的特定映象流的映象,例如:

$ oc get is <imagestream> -n openshift -o json | jq .spec.tags[].from.name | grep registry.redhat.io

2)         registry.redhat.io 中與您在受限網路環境中需要的任何映象流關聯的映象,映象 (mirror) 成一個定義的映象 (mirror)

$ oc image mirror registry.redhat.io/rhscl/ruby-25-rhel7:latest ${MIRROR_ADDR}/rhscl/ruby-25-rhel7:latest

3)         建立叢集的映象配置物件:

$ oc create configmap registry-config --from-file=${MIRROR_ADDR_HOSTNAME}..5000=$path/ca.crt -n openshift-config

4)         在叢集的映象配置物件中,為映象新增所需的可信 CA

$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-config"}}}' --type=merge

5)         更新 Cluster Samples Operator 配置物件中的 samplesRegistry 欄位,使其包含映象配置中定義的映象位置的 hostname 部分:

$ oc edit configs.samples.operator.openshift.io -n openshift-cluster-samples-operator

...

spec:

  architectures:

  - x86_64

  managementState: Managed

  samplesRegistry: registry.pocchina.com # add lines

 

    注意:這是必要的,因為映象流匯入過程在此刻不使用映象(mirror )或搜尋機制。

6)         將所有未映象的映象流新增到 Cluster Samples Operator 配置物件的 skippedImagestreams 欄位。或者,如果您不想支援任何示例映象流,在 Cluster Samples Operator 配置物件中將 Cluster Samples Operator 設定為 Removed

           openshift 名稱空間中的許多模板都引用映象流。因此,使用 Removed 清除映象流和模板,將避免在因為缺少映象流而導致映象流和模板無法正常工作時使用它們。

1.7.    生成 SSH 私鑰並將其新增到agent中

       $ ssh-keygen -t rsa -b 4096 -N '' -f <path>/<file_name>

       $ eval "$(ssh-agent -s)"

       $ ssh-add <path>/<file_name>

       在安裝 OCP 時,為安裝程式提供 SSH 公鑰。如果在您置備的基礎架構上安裝叢集,您必須將此金鑰提供給叢集的機器。

1.8.    手動建立安裝配置檔案install-config.yaml

建立用來儲存您所需的安裝資產的安裝目錄:$ mkdir <installation_directory>

自定義以下 install-config.yaml 檔案模板,並將它儲存到 <installation_directory> 中。

注意:此配置檔案必須命名為 install-config.yaml

[root@cluster2 ocp4soft]# cat install-config.yaml

apiVersion: v1

baseDomain: pocchina.com

compute:

- hyperthreading: Enabled

  name: worker

  replicas: 0

controlPlane:

  hyperthreading: Enabled

  name: master

  replicas: 3

metadata:

  name: cluster2

networking:

  clusterNetwork:

  - cidr: 10.128.0.0/14

    hostPrefix: 23

  networkType: OpenShiftSDN

  serviceNetwork:

  - 172.30.0.0/16

platform:

  none: {}

fips: false

pullSecret: '{"auths":{"cluster2.pocchina.com:5000": {"auth": "bWlyaOjFxYXo3VUpN","email": "admin@pocchina.com"}}}'

sshKey: 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC90U9/IAZvnawgeciYu4caVbYsy4kqqRBoidOPRxO4aOpuUzKvaYBuz4LJ1W7iThjCVtsg9jZPChht1kZir8v5SrBPE6p7rq+i78bZfWWi5hHKssO4aiRt6wRl97z5P3/HpEyZxXNULI/bchoxjFCIvsRdlbTCF8fzsSVnzcjJPPMMTOIxKJa/VdTCkpTM//Fwf5u81se3lQ4A2aT7DkwDsww4kYRMnutYQSXHvBMaqGOJeBYW6hIwJVaQ== root@cluster2.pocchina.com'

additionalTrustBundle: |

  -----BEGIN CERTIFICATE-----

  MIIGITCCBAmgAwIBAgIJAM1DFeIzMA0GCSqGSIb3DQEBCwUAMIGmMQswCQYD

 wJDTjEQMA4GA1UECAwHQkVJSklORzELMAkGA1UEBwwCQkoxDzANBgNVBAoM

  BlJlZEhhdDEZMBcGA1UECwwQT3BlblNoaWZ0LlJlZEhhdDEfMB0GA1UEAwwWY2x1

  c3RlcjIuYWRkcGNoaW5hLmNvbTErMCkGCSqGSIb3DQEJARYcYWRtaW5AY2x1c3Rl

  cjIuYWRkcGNoaW5hLmNvbTAeFw0yMDEyMTIwNjQzMzVaFw0yMTEyMTIwNjQzMzVa

  MQswCQYDVQQGEwJDTjEQMA4GA1UECAwHQkVJSklORzELMAkGA1UEBwwCQkox

  DzANBgNVBAoMBlJlZEhhdDEZMBcGA1UECwwQT3BlblNoaWZ0LlJlZEhhdDEfMB0G

  A1UEAwwWY2x1c3RlcjIuYWRkcGNoaW5hLmNvbTErMCkGCSqGSIb3DQEJARYcYWRt

  io7FwElhfkSPMvn6N4+xJhS7W6OMEfFCgcoizLZJZEszDYpbvqat1nYqanKS9AkE

  7FlTSeDrwPCpMQRa7mSVUpLyISFrmrxbKshyXAUR+PQZTVgCRXuPVuR7AgMBAAGj

MB0GA1UdDgQWBBS2PZXoEmlgZeOd9f4FlD+ObmEzDTAfBgNVHSMEGDAWgBS2

oEmlgZeOd9f4FlD+ObmEzDTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA

  A4ICAQB5mabSmNh9e9FgL6x/HNGb0/BBzeO13SchBZ2g2m4jGzYH8T5ObZ3rCjxK

  giTfkNg/iyARE2aeMN1Cey9t36OAZHWB6Um+y6Lu93Kw0tf7NZbjZvXe9jnKWWPA

  leObbVwOLw8B89N+7BAuCy3EEbxcekiMl8rkpIFnz/Nsxxx4kXm5Ud4fTLy4VN7x

  Wj2xUx2ZT49FVJJmV9owJumGi5K1e6BxS7aDfGVa2NCymg+OUzeJic0uoLioCDtF

  NN0UdQCzmhZuEifESzz2bI8mao3VLMKR/L+DNhB/Z9lcMRIInQ==

  -----END CERTIFICATE-----

imageContentSources:

- mirrors:

  - cluster2.pocchina.com:5000/ocp4/openshift4

  source: quay.io/openshift-release-dev/ocp-release

- mirrors:

  - cluster2.pocchina.com:5000/ocp4/openshift4

  source: quay.io/openshift-release-dev/ocp-v4.0-art-dev

[root@cluster2 ocp4soft]#

       備份 install-config.yaml 檔案,以便用於安裝多個叢集。

1.9.    配置三節點叢集(只有3個Control plane)

       您可在沒有 worker OCP 中安裝和執行三節點叢集。這為叢集管理員和開發人員提供了較小的、效率更高的叢集,用於開發、生產及測試。

       即:編輯 install-config.yaml 檔案,將計算副本(也稱為 worker 副本)數設為 0

       compute:

       - name: worker

         platform: {}

         replicas: 0

1.10. 建立 Kubernetes 清單和 Ignition 配置檔案

       由於您必須修改一些叢集定義檔案並要手動啟動叢集機器,因此您必須生成 Kubernetes 清單和 Ignition 配置檔案,叢集需要這兩項來建立其機器。

l   為叢集生成 Kubernetes 清單

$ ./openshift-install create manifests --dir=<installation_directory>

              對於 <installation_directory> ,請指定含有您建立的 install-config.yaml 檔案的安裝目錄。

[root@cluster2 ocp4soft]# ./openshift-install create manifests --dir=/root/ocp4inst

INFO Consuming Install Config from target directory

WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings

INFO Manifests created in: /root/ocp4inst/manifests and /root/ocp4inst/openshift

[root@cluster2 ocp4soft]#

       警告: 如果您要執行一個三節點叢集,請跳過以下步驟,以便可以排程 master

       - 修改 <installation_directory>/manifests/cluster-scheduler-02-config.yml mastersSchedulable 引數,並將其值設為 False ,以防止在 control plane 機器上排程 Pod;

 

l   獲取 Ignition 配置檔案

$ ./openshift-install create ignition-configs --dir=<installation_directory>

[root@cluster2 ocp4soft]#  ./openshift-install create ignition-configs --dir=/root/ocp4inst

INFO Consuming Master Machines from target directory

INFO Consuming Common Manifests from target directory

INFO Consuming Openshift Manifests from target directory

INFO Consuming Worker Machines from target directory

INFO Consuming OpenShift Install (Manifests) from target directory

INFO Ignition-Configs created in: /root/ocp4inst and /root/ocp4inst/auth

[root@cluster2 ocp4soft]#

installation_directory 中將生成以下檔案:

                     .

                     ├── auth

                        ├── kubeadmin-password

                        └── kubeconfig

                     ├── bootstrap.ign

                     ├── master.ign

                     ├── metadata.json

                     └── worker.ign

檢視ign 檔案:

cat master.ign |jq

1.11. 建立RHCOS機器

       在您置備的裸機基礎架構上安裝叢集前,必須先建立 RHCOS(Red Hat Enterprise Linux CoreOS) 機器供其使用。要建立機器,請按照步驟操作使用 ISO 映象或網路 PXE 引導。

1)         將安裝程式建立的 control plane compute bootstrap Ignition 配置檔案上傳到 HTTP 伺服器。記下這些檔案的 URL

              【配置http 伺服器】

2)         從紅帽客戶門戶上的產品下載頁面或 RHCOS 映象頁面,獲取您選擇的作業系統例項安裝方法所需的 RHCOS 映象。

              例如: rhcos-<version>-live.<architecture>.iso

3)         使用 ISO 啟動 RHCOS 安裝,使用如下安裝選項之一:將 ISO 映象燒錄到磁碟並直接啟動/ 透過 LOM 介面使用 ISO 重定向

4)         引導 ISO 映象。您應該使用 coreos-installer 命令而不是新增核心引數。如果您在沒有選項或中斷的情況下執行 live 安裝程式,安裝程式將引導至 live 系統上的 shell 提示符,準備好將 RHCOS 安裝到磁碟中。

5)         執行 coreos-installer 命令。您至少必須識別節點型別的 Ignition 配置檔案位置,以及您要安裝到的磁碟位置。

              下面是一個示例:

$ coreos-installer install --ignition-url= /dev/sda

coreos-installer install /dev/sda --ignition-url=http://192.168.4.123/ocp4inst/bootstrap.ign  --insecure-ignition --copy-network

              在執行 coreos-installer 前,請參閱" 高階 RHCOS 安裝參考" 部分,以瞭解配置功能的不同方法,如聯網和磁碟分割槽。

       - 安裝 RHCOS 後,系統會重啟。系統重啟過程中,它會應用您指定的 Ignition 配置檔案。

/* 例項:

coreos-installer install /dev/sda --ignition-url=https://192.168.4.123/ocp4inst/bootstrap.ign  --insecure-ignition \

  --append-karg ip=192.168.4.1.117::192.168.4.1:255.255.255.0:c2b1.pocchina.com:ens192:none \

  --append-karg nameserver=192.168.4.128

 

coreos-installer install /dev/sda --ignition-url=http://192.168.4.123/ocp4inst/bootstrap.ign  --insecure-ignition --copy-network

 

########## c2b1.pocchina.com

sudo su -

hostnamectl set-hostname c2b1.pocchina.com

nmcli conn mod 'Wired Connection' ipv4.address 192.168.4.117/24

nmcli conn mod 'Wired Connection' ipv4.gateway 192.168.4.1

nmcli conn mod 'Wired Connection' ipv4.dns "192.168.4.1 192.168.4.123"

nmcli conn mod 'Wired Connection' ipv4.method manual           

nmcli conn up 'Wired Connection'

或者

sudo su -

hostnamectl set-hostname c2b1.pocchina.com

nmcli conn mod 'Wired Connection' ipv4.address 192.168.4.117/24 ipv4.gateway 192.168.4.1 ipv4.dns 192.168.4.123 ipv4.method manual

nmcli conn up 'Wired Connection'

coreos-installer install /dev/sda --ignition-url=http://192.168.4.123/ocp4inst/bootstrap.ign  --insecure-ignition --copy-network

########## c2m1.pocchina.com

sudo su -

hostnamectl set-hostname c2m1.pocchina.com

nmcli conn mod 'Wired Connection' ipv4.address 192.168.4.118/24

nmcli conn mod 'Wired Connection' ipv4.gateway 192.168.4.1

nmcli conn mod 'Wired Connection' ipv4.dns "192.168.4.1 192.168.4.123"

nmcli conn mod 'Wired Connection' ipv4.method manual           

nmcli conn up 'Wired Connection'

或者

sudo su -

hostnamectl set-hostname c2m1.pocchina.com

nmcli conn mod 'Wired Connection' ipv4.address 192.168.4.118/24 ipv4.gateway 192.168.4.1 ipv4.dns 192.168.4.123 ipv4.method manual

nmcli conn up 'Wired Connection'

示例1 (使用):

coreos-installer install /dev/sda --ignition-url=http://192.168.4.123/ocp4inst/master.ign  --insecure-ignition --append-karg ip=192.168.4.118::192.168.4.1:255.255.255.0:c2m1.pocchina.com:ens192:none --append-karg nameserver=192.168.4.123

示例2

coreos-installer install /dev/sda --ignition-url=http://192.168.4.123/ocp4inst/master.ign  --insecure-ignition --copy-network --insecure

示例3

coreos-installer install /dev/sda --image-url=http://192.168.4.123/ocp4inst/rhcos-4.6.1-x86_64-metal.x86_64.raw.gz --ignition-url=http://192.168.4.123/ocp4inst/master.ign  --insecure-ignition --copy-network --insecure

示例4

coreos-installer install /dev/sda --image-url=http://192.168.4.123/ocp4inst/rhcos-4.6.1-x86_64-metal.x86_64.raw.gz --ignition-url=http://192.168.4.123/ocp4inst/master.ign --insecure --insecure-ignition --append-karg ip=192.168.4.118::192.168.4.1:255.255.255.0:c2m1.pocchina.com:ens192:none --append-karg nameserver=192.168.4.123

*/

6)         重複 coreos-installer 命令,安裝其他叢集機器

1.12. 建立叢集

       要建立 OCP 叢集,請等待您透過安裝程式生成的 Ignition 配置檔案所置備的機器上完成 bootstrap 過程。

       - 監控 bootstrap 過程:$ ./openshift-install --dir=<installation_directory> wait-for bootstrap-complete --log-level=info

              輸出示例:

                            INFO Waiting up to 30m0s for the Kubernetes API at

                            INFO API v1.19.0 up

                            INFO Waiting up to 30m0s for bootstrapping to complete...

                            INFO It is now safe to remove the bootstrap resources

              Kubernetes API 伺服器提示已在 control plane 機器上完成 bootstrap 時,命令執行成功。

[root@cluster2 ocp4soft]# ./openshift-install --dir=/root/ocp4inst/ wait-for bootstrap-complete --log-level=info

INFO Waiting up to 20m0s for the Kubernetes API at  

INFO API v1.19.0+9f84db3 up                      

INFO Waiting up to 30m0s for bootstrapping to complete...

INFO It is now safe to remove the bootstrap resources

INFO Time elapsed: 0s                            

[root@cluster2 ocp4soft]#

       - bootstrap 過程完成後,請從負載均衡器中刪除 bootstrap 機器。

              此時您必須從負載均衡器中刪除 bootstrap 機器。您還可以刪除或重新格式化機器本身。

1.13. 登入叢集

$ export KUBECONFIG=<installation_directory>/auth/kubeconfig

$ oc whoami

export KUBECONFIG=/root/ocp4inst/auth/kubeconfig

1.14. 批准機器的CSR

       將機器新增到叢集時,會為您新增的每臺機器生成兩個待處理證書籤名請求(CSR )。您必須確認這些 CSR 已獲得批准,或根據需要自行批准。

$ oc get nodes

$ oc get csr

  若要單獨批准,請對每個有效的 CSR 執行以下命令:

$ oc adm certificate approve <csr_name>   

  要批准所有待處理的 CSR ,請執行以下命令:

$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve

或者

oc adm certificate approve $(oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}')

 

1.15. 初始 Operator 配置

control plane 初始化後,您必須立即配置一些 Operator 以便它們都可用。

觀察叢集元件上線:

$ watch -n5 oc get clusteroperators

配置不可用的 Operator

1.16. 完成安裝

確認所有叢集元件都已上線:

$ watch -n5 oc get clusteroperators

       當所有叢集 Operator 狀態都是 AVAILABLE 時,您可以完成安裝。

監控叢集完成:

$ ./openshift-install --dir=<installation_directory> wait-for install-complete

輸出示例:

              INFO Waiting up to 30m0s for the cluster to initialize...

Cluster Version Operator 完成從 Kubernetes API 伺服器部署 OCP 叢集時,命令執行成功。

[root@cluster2 ocp4soft]#  ./openshift-install --dir=/root/ocp4inst wait-for install-complete

INFO Waiting up to 40m0s for the cluster at  to initialize...

INFO Waiting up to 10m0s for the openshift-console route to be created...

INFO Install complete!                           

INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/root/ocp4inst/auth/kubeconfig'

INFO Access the OpenShift web-console here:  

INFO Login to the console with user: "kubeadmin", and password: "98rmK-ULvWs-Icu7g-IN8IR"

INFO Time elapsed: 0s                            

重要: 安裝程式生成的 Ignition 配置檔案中所含的證書會在 24 小時後過期。您必須以非降級狀態持續執行叢集 24 小時,以確保完成第一次證書輪轉。

確認 Kubernetes API 伺服器正在與 pod 通訊:

$ oc get pods --all-namespaces

$ oc logs <pod_name> -n <namespace>

Cluster registration 頁面註冊您的叢集:

              OCM Redhat Openshift Cluster Manager -->Cluster --> Register disconnected cluster

1.17. 後續步驟

    自定義叢集。

    如果您用來安裝叢集的映象 registry 具有一個可信任的 CA ,透過配置額外的信任儲存將其新增到叢集中。

如果需要,您可以選擇不使用遠端健康報告。     

【資料】

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16976507/viewspace-2850088/,如需轉載,請註明出處,否則將追究法律責任。

相關文章