在受限網路裸機上安裝Openshift 4.6叢集
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Pulsar本地單機(偽)叢集 (裸機安裝與docker方式安裝) 2.2.0Docker
- 在Ubuntu上安裝OpenShift並使用Ubuntu
- 在Ubuntu 18.04.1上安裝Hadoop叢集UbuntuHadoop
- Ubuntu上kubeadm安裝Kubernetes叢集Ubuntu
- 使用kubeadm安裝kubernetes 1.13高可用叢集(使用calico網路)
- Openshift叢集3.9升級到3.10
- 安裝Kafka叢集Kafka
- 安裝Consul叢集
- 網路分析利器:在 Ubuntu 16.04 上安裝 BroUbuntu
- 安裝配置 zookeeper (單機非叢集模式)模式
- 完整安裝always on叢集
- 快速安裝 kafka 叢集Kafka
- linux安裝redis-6.0.1單機和叢集LinuxRedis
- 在 Rainbond 中一鍵安裝高可用 Nacos 叢集AI
- 003.OpenShift網路
- redis-3.0.6 安裝叢集Redis
- redis 5.0 叢集的安裝Redis
- 安裝Zookeeper和Kafka叢集Kafka
- 虛擬機器Hadoop叢集搭建5安裝Hadoop虛擬機Hadoop
- redis安裝,主從複製,哨兵機制,叢集Redis
- Centos7安裝Nacos單機模式以及叢集模式(包含nignx安裝以及實現叢集)的相關配置CentOS模式
- 002.OpenShift安裝與部署
- Zookeeper3.4.14(單叢集)、Kafka_2.12-2.2.2(叢集)安裝Kafka
- Redis安裝+叢集+效能監控Redis
- CDH安裝大資料叢集大資料
- CentOS7 安裝PG叢集CentOS
- Cloudera Manager安裝 & 搭建CDH叢集Cloud
- 安裝Greenplum 5.2 叢集實戰
- ARM架構安裝Kubernetes叢集架構
- hadoop偽分散式叢集的安裝(不是單機版)Hadoop分散式
- Rancher 系列文章-在騰訊雲的 K3S 上安裝高可用 Rancher 叢集
- 搭建網路負載均衡(叢集nlb)和WDS映像檔案安裝win7負載Win7
- 在Ubuntu上安裝Hadoop單機版UbuntuHadoop
- 使用Gardener在GoogleCloudPlatform上建立Kubernetes叢集GoCloudUDPPlatform
- 在滴滴雲上搭建 MongoDB 叢集 (一):MongoDB
- Zookeeper-3.4.10 叢集的安裝配置
- Cassandra安裝及分散式叢集搭建分散式
- centos安裝k8s叢集CentOSK8S