admin 管理员组

文章数量: 887021

OpenShift Container Platform 4.12 在任意平台上安装

  • 前言
  • 在任意平台上安装
  • 第 1 章 在任意平台上安装集群
    • 1.1. 先决条件
    • 1.2. OpenShift Container Platform 互联网访问
      • 1.2.1 注册Redhat账号【实操】
      • 1.2.2 准备Harbor并离线镜像【实操】
    • 1.3. 具有用户置备基础架构的集群的要求
      • 1.3.1. 集群安装所需的机器
      • 1.3.3. 证书签名请求管理
      • 1.3.4. 用户置备的基础架构对网络的要求
        • 1.3.4.1. 通过 DHCP 设置集群节点主机名
        • 1.3.4.2. 网络连接要求
        • 1.3.4.3. 安装chrony时间同步服务器【实操】
      • 1.3.5. 用户置备的 DNS 要求
        • 1.3.5.1. 用户置备的集群的 DNS 配置示例
        • 1.3.5.2. 用户置备的集群的 DNS 配置【实操】
      • 1.3.6. 用户置备的基础架构的负载均衡要求
        • 1.3.6.1. 用户置备的集群的负载均衡器配置示例
        • 1.3.6.2. 用户置备的集群的负载均衡器配置【实操】
    • 1.4. 准备用户置备的基础架构
    • 1.5. 验证用户置备的基础架构的 DNS 解析
    • 1.6 为集群节点 SSH 访问生成密钥对
      • 1.6.1 为集群节点 SSH 访问生成密钥对【实操】
    • 1.7. 获取安装程序
      • 1.7.1.获取安装程序【实操】
    • 1.8. 通过下载二进制文件安装 OpenShift CLI
      • 在 Linux 上安装 OpenShift CLI
      • 在 Windows 上安装 OpenShift CLI
      • 在 macOS 上安装 OpenShift CLI
      • 1.8.1. 通过下载二进制文件安装 OpenShift CLI【实操】
    • 1.9. 手动创建安装配置文件
      • 1.9.1. 其他平台的 install-config.yaml 文件示例
      • 1.9.2. 在安装过程中配置集群范围的代理
      • 1.9.3. 配置三节点集群

前言

本文档结合官方文档 + 自己的工作经验进行编写,生产亦可以使用该文档进行操作。欢迎到大家点赞收藏。

有问题可以私聊我解决。
有改进意见,环境留言

官方网址:https://docs.redhat/zh_hans/documentation/openshift_container_platform_installation/4.12/html/installing_on_any_platform

在任意平台上安装

法律通告
版权所有© 2024 Red Hat, Inc.
本文档中的文本和插图由 Red Hat 根据 Creative Commons 署名-相同方式共享 3.0 未移植许可证 (“CC-BY-SA”) 授权。CC-BY-SA 的说明可在http://creativecommons/licenses/by-sa/3.0/上找到。根据 CC-BY-SA,如果您分发本文档或其改编版本,则必须提供原始版本的 URL。
作为本文档的许可方,Red Hat 放弃在适用法律允许的最大范围内执行 CC-BY-SA 第 4d 条的权利,并同意不主张该权利。
Red Hat、Red Hat Enterprise Linux、Shadowman 徽标、Red Hat 徽标、JBoss、OpenShift、Fedora、Infinity 徽标和 RHCE 是 Red Hat, Inc. 在美国和其他国家注册的商标。
Linux®是 Linus Torvalds 在美国和其他国家的注册商标。
Java®是 Oracle 和/或其附属公司的注册商标。
XFS®是 Silicon Graphics International Corp. 或其子公司在美国和/或其他国家/地区的商标。
MySQL®是MySQL AB在美国、欧盟和其他国家的注册商标。
Node.js®是 Joyent 的官方商标。Red Hat 与官方 Joyent Node.js 开源或商业项目没有正式关系或获得其认可。
OpenStack ® 文字 标记和 OpenStack 徽标是 OpenStack Foundation 在美国和其他国家/地区的注册商标/服务标记或商标/服务标记,经 OpenStack Foundation 许可使用。我们与 OpenStack Foundation 或 OpenStack 社区没有任何关联、支持或赞助。
所有其他商标均为其各自所有者的财产。

摘要
本文档论述了如何在任何平台中安装 OpenShift Container Platform

第 1 章 在任意平台上安装集群

在 OpenShift Container Platform 版本 4.12 中,您可以在您置备的任何基础架构上安装集群,包括虚拟化和云环境。

重要

  • 在尝试在虚拟化或云环境中安装 OpenShift Container Platform 集群前,请参阅有关在未经测试的平台上部署 OpenShift Container Platform 的指南 中的信息。

1.1. 先决条件

您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
如果使用防火墙,则会 将其配置为允许集群需要访问的站点。

注意
如果要配置代理,请务必查看此站点列表。

1.2. OpenShift Container Platform 互联网访问

在 OpenShift Container Platform 4.12 中,您需要访问互联网来安装集群。

您必须具有以下互联网访问权限:

  • 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
  • 访问 Quay.io,以获取安装集群所需的软件包。
  • 获取执行集群更新所需的软件包。

重要
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。

1.2.1 注册Redhat账号【实操】

no-cost rhel subscription /红帽免费开发者订阅
1.注册账户和激活订阅
首先,登录 https://access.redhat/ 去创建一个账号

2.申请开发者
然后访问: https://developers.redhat/products/rhel/download ,点击Activate your subscription

3.接下来,我们确认一下我们的账号是否有 developer subscription, 访问 https://access.redhat/management

有Openshift的订阅就行.

1.2.2 准备Harbor并离线镜像【实操】

CPU 内存 磁盘 : 1c 8Gb 100GB
ip: 192.168.2.51
需要有外网访问权限
采用RHEL8.8操作系统最小化安装,参考vmware安装RHEL8.8

0.关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
reboot

1.获取OCP 4.12最新版本号

export OCP_VER=$(curl -s https://mirror.openshift/pub/openshift-v4/clients/ocp/stable-4.12/release.txt | \grep 'Name:' | awk '{print $NF}')
echo ${OCP_VER}
4.12.64

2.创建目录

mkdir -p 
export OCP_PATH=/data/OCP-4.12.64/ocp

3.准备下载环境

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

export SUB_USER=xxx

export SUB_PASSWD=xxx

subscription-manager register --force --user ${SUB_USER} --password ${SUB_PASSWD}

subscription-manager refresh

subscription-manager list --available --matches '*OpenShift Container Platform*' | grep "Pool ID"
Pool ID:             xxxxxxxx

4.下载并安装OCP客户端

wget https://mirror.openshift/pub/openshift-v4/clients/ocp/4.12.64/openshift-client-linux-4.12.64.tar.gz \
  -P /data/OCP-4.12.64/ocp/ocp-client
 
tar -xzf /data/OCP-4.12.64/ocp/ocp-client/openshift-client-linux-${OCP_VER}.tar.gz -C /usr/local/sbin/
 
oc version
Client Version: 4.12.64
Kustomize Version: v4.5.7

5.下载OCP核心镜像
获取下载镜像所需密钥
使用RedHat订阅账号登陆https://cloud.redhat/openshift/install/pull-secret,将图中secret复制到/data/OCP-4.12.64/ocp/secret/redhat-secret.json文件中

注意:该文件用来从RedHat网站下载镜像,其有效期只有24小时。在失效前如没有OpenShift完成安装,需要重新下载。
配置指向redhat-secret.json文件的环境变量。

mkdir -p /data/OCP-4.12.64/ocp/secret/

配置环境变量

export PRODUCT_REPO=openshift-release-dev
export RELEASE_NAME=ocp-release

验证待下载的镜像信息

oc adm release info "quay.io/openshift-release-dev/ocp-release:4.12.64-x86_64" 
Name:           4.12.64
Digest:         sha256:669170342e3ae3456b2eb00dd0c45cd817d62af310e0aa2bf214f1da65fae9d0
Created:        2024-08-27T09:24:43Z
OS/Arch:        linux/amd64
Manifests:      647
Metadata files: 1

Pull From: quay.io/openshift-release-dev/ocp-release@sha256:669170342e3ae3456b2eb00dd0c45cd817d62af310e0aa2                                                                                                      bf214f1da65fae9d0

Release Metadata:
  Version:  4.12.64
  Upgrades: 4.11.11, 4.11.12, 4.11.13, 4.11.14, 4.11.16, 4.11.17, 4.11.18, 4.11.19, 4.11.20, 4.11.21, 4.11.                                                                                                      22, 4.11.23, 4.11.24, 4.11.25, 4.11.26, 4.11.27, 4.11.28, 4.11.29, 4.11.30, 4.11.31, 4.11.32, 4.11.33, 4.11                                                                                                      .34, 4.11.35, 4.11.36, 4.11.37, 4.11.38, 4.11.39, 4.11.40, 4.11.41, 4.11.42, 4.11.43, 4.11.44, 4.11.45, 4.1                                                                                                      1.46, 4.11.47, 4.11.48, 4.11.49, 4.11.50, 4.11.51, 4.11.52, 4.11.53, 4.11.54, 4.11.55, 4.11.56, 4.11.57, 4.                                                                                                      11.58, 4.11.59, 4.12.0, 4.12.1, 4.12.2, 4.12.3, 4.12.4, 4.12.5, 4.12.6, 4.12.7, 4.12.8, 4.12.9, 4.12.10, 4.                                                                                                      12.11, 4.12.12, 4.12.13, 4.12.14, 4.12.15, 4.12.16, 4.12.17, 4.12.18, 4.12.19, 4.12.20, 4.12.21, 4.12.22, 4                                                                                                      .12.23, 4.12.24, 4.12.25, 4.12.26, 4.12.27, 4.12.28, 4.12.29, 4.12.30, 4.12.31, 4.12.32, 4.12.33, 4.12.34,                                                                                                       4.12.35, 4.12.36, 4.12.37, 4.12.38, 4.12.39, 4.12.40, 4.12.41, 4.12.42, 4.12.43, 4.12.44, 4.12.45, 4.12.46,                                                                                                       4.12.47, 4.12.48, 4.12.49, 4.12.50, 4.12.51, 4.12.53, 4.12.54, 4.12.55, 4.12.56, 4.12.57, 4.12.58, 4.12.59                                                                                                      , 4.12.60, 4.12.61, 4.12.62, 4.12.63
  Metadata:
    url: https://access.redhat/errata/RHSA-2024:5808

Component Versions:
  kubernetes 1.25.16
  machine-os 412.86.202408230032-0 Red Hat Enterprise Linux CoreOS

Images:
  NAME                                           DIGEST
  agent-installer-api-server                     sha256:ab112a3b43b5a46bca116c3a3b8b560562ec18131de70a1b67f                                                                                                      a23043e55c92b
  agent-installer-csr-approver                   sha256:5253d2731bbde31dc5fdf7533ed46103ba4a464f27d888af0ac                                                                                                      9c599dfb428ca
  agent-installer-node-agent                     sha256:fffb020c04207215d59ba8cf9596e33b515c8aaa3775999504b                                                                                                      ac82845d02bcf
  agent-installer-orchestrator                   sha256:1d04e10366fe2f94dbfe7c62d419696477911a1b544d9e5f85b                                                                                                      8b3d0f7e50ddd
  alibaba-cloud-controller-manager               sha256:79cc533deafc44f45ba44f269f083a1c6d49ed35310db5e81d8                                                                                                      b3041e2c2ce4e
  alibaba-cloud-csi-driver                       sha256:0da080aed4d18270c9aad45ccd6db74d722eed847a743c4e394                                                                                                      d255ea05b0e07
  alibaba-disk-csi-driver-operator               sha256:509fa48283033d4004ed418441ace03d1b6632e4d63f6421ad0                                                                                                      58cbd275b5d02
  alibaba-machine-controllers                    sha256:8456bd2fb2501c37d9dc3efaca17bdb9312d540d454f86eb585                                                                                                      2763f13a9b629
  apiserver-network-proxy                        sha256:d9dc687c78daebd047190e776a7c1bda81f9499f3b57f7b6e55                                                                                                      27d95b2f754b9
  aws-cloud-controller-manager                   sha256:6b9d2e44f4a10d59abb430eedcd19f89e99df41840333564291                                                                                                      fec9befe6dc43
  aws-cluster-api-controllers                    sha256:2192556afac3c99bf2d971d73bd322fce67b86649f71dda3301                                                                                                      3a312d2ceb603
  aws-ebs-csi-driver                             sha256:89980f33c6d713a56117aee150376cee49da4348aa8f1998713                                                                                                      6489c119926bf
  aws-ebs-csi-driver-operator                    sha256:2ccbcb9d5d77619720d68f73a27fcb9cf96cd5a01a0cb78a4d0                                                                                                      4770b0be07b98
  aws-machine-controllers                        sha256:2cac7c761dac22a7998f352926cf0868cd9aa4edcbf395220ea                                                                                                      12b4050ac9920
  aws-pod-identity-webhook                       sha256:72bf4b82c9b45f892e0c97d1dbffbcd1eead0e268177f77a088                                                                                                      2777d10b19bd9
  azure-cloud-controller-manager                 sha256:d94ee32259bffaf1f977cb07d59799d321f09e0c81d0290b689                                                                                                      cdfec7058ebf7
  azure-cloud-node-manager                       sha256:79767b821c6b7becbcf495c19e9497157712c4bee4977ecb708                                                                                                      eeaf009904602
  azure-cluster-api-controllers                  sha256:424c23d3cd66482d93360f7d30938387b3978ee409ccec2a0f9                                                                                                      2956fc882cfcc
  azure-disk-csi-driver                          sha256:7f665152befd0c7e2be8f26c13339afc0564938ba394d5d0fe3                                                                                                      a0a353a8caf49
  azure-disk-csi-driver-operator                 sha256:7f6365b5dc020aa398eefd3b91779435cfeddb279184c64c648                                                                                                      f58cdee0bd6a9
  azure-file-csi-driver                          sha256:d5e2afa70e0b477c089451729f2f0e82f1a1c6e34da27094775                                                                                                      6df5778a10e59
  azure-file-csi-driver-operator                 sha256:4a899a6d9ce34c71afba43d55ce41f52ae8af71020bb6dc740d                                                                                                      f6e7dea907b96
  azure-machine-controllers                      sha256:deac07bbd825d9df791b39428f290e8baf460c0b82bbeed5fa5                                                                                                      68f1ae723ecc7
  baremetal-installer                            sha256:cd4123382403832dd94d81ffcad03b32e68cae0266d06844137                                                                                                      5d2d38091205b
  baremetal-machine-controllers                  sha256:e222cbf86c5e807a863fdb0ee53ec93503231ea1774d36b7f5a                                                                                                      4db16a5232183
  baremetal-operator                             sha256:e21551d00e8c09d999f273071f269533da815a6c6aeacf910e8                                                                                                      95b3b7da177d6
  baremetal-runtimecfg                           sha256:51360e89a090503e93dbb4f540db5aa9c38c157f35c02cbde52                                                                                                      91174a3502142
  cli                                            sha256:0a3d15ae2b411e46be56ab91ea81250b21d123d5f83d5130d3a                                                                                                      5818e7e3327dd
  cli-artifacts                                  sha256:c95904144b15f14690b3ccd6b1d4d39295f3154555d524fb409                                                                                                      ea6632a5ee55a
  cloud-credential-operator                      sha256:5f2268975878d52f174789d8aa57cb9af899b4eaf6b3fd2247e                                                                                                      43b5bd82cdb63
  cloud-network-config-controller                sha256:405f17ab51096a0131f8c0441308550b9cfd1993fa37988b262                                                                                                      79f26af6ab16f
  cluster-authentication-operator                sha256:615a57ef6a910b2added233fb110b227f5f3fe66e02c591ec03                                                                                                      4afa14fd7e64d
  cluster-autoscaler                             sha256:d19edd34bec9760b30c737b8bb6567e2f1f0c9ea358e917c421                                                                                                      5a85848dc0376
  cluster-autoscaler-operator                    sha256:7353ff606170408435c28a925684d01a7d0a8e78af7b4ff70a4                                                                                                      23b20dbea4adb
  cluster-baremetal-operator                     sha256:bd70bd47db459a818478c8cbd6a0b2582e4e7a8238bfdfbdec4                                                                                                      744f26345deef
  cluster-bootstrap                              sha256:9b78b01ebf98cf8da5cf0b6b1eb8f1b63dda6e5aae7145755ec                                                                                                      3dae968c2bc79
  cluster-capi-controllers                       sha256:7bceed42c380f72c94655e427514c9eadc45beefbb1ed4534f1                                                                                                      9abb4a442e5db
  cluster-capi-operator                          sha256:ee0bad48b1851a5a1187c3627e5a6b5d7dc8d46ee3f0d870fd0                                                                                                      fc5bd8da0c56d
  cluster-cloud-controller-manager-operator      sha256:b36aa7615905e97536a2de3f745f4f69bc84a62e7f3c463f143                                                                                                      c7a49165283a6
  cluster-config-operator                        sha256:52c7dc71ddbc8d03dcfc7dad3274355623e544117c9f0ab5a95                                                                                                      01d3300f0d22d
  cluster-control-plane-machine-set-operator     sha256:81d207b262179dec69b9c95a78412b55cfb2313074d94a926ad                                                                                                      222e3aef29053
  cluster-csi-snapshot-controller-operator       sha256:f63034c0bbcffd78e34f161d129ac6fab6f4a7f8e30552cf21c                                                                                                      cd7b97027d55d
  cluster-dns-operator                           sha256:09731a27fa4ef949ab9cc06daf9dd4db7ae5284d4ec8fb8ebfd                                                                                                      a29372fea05f7
  cluster-etcd-operator                          sha256:89b1bdb87b5c384f6d55b602462dc2b8ba607b0ffbebba2c588                                                                                                      f669f4d95d984
  cluster-image-registry-operator                sha256:144661172dcb65e882a5fc78baa86608990601c3e47dde13577                                                                                                      6372c78ff70ec
  cluster-ingress-operator                       sha256:b77430c17a7d29d67006980a3386b5e32b563d4e693ecc7b984                                                                                                      a50cfc08b09eb
  cluster-kube-apiserver-operator                sha256:d9a2339cae078293a31854c28e0ac55a0d780440fa71d32ef22                                                                                                      8c490c1c38cf7
  cluster-kube-cluster-api-operator              sha256:673bef97ec6458937165a8a19e0bc4d52d4ce003c87c1b25bd7                                                                                                      05babeb27091f
  cluster-kube-controller-manager-operator       sha256:c88dd6e2e052e568df5b54f3526fc2c2b44c90270ee4ce16ebf                                                                                                      9e516dd49a754
  cluster-kube-scheduler-operator                sha256:f4f21bfcdc3486375c02388cde366c0269aa5cf6c9942b40093                                                                                                      ef110465ffac1
  cluster-kube-storage-version-migrator-operator sha256:945f032f5188293092443e0b840ef8cd589c79faa9468a0109a                                                                                                      6cd5ccbc2d28e
  cluster-machine-approver                       sha256:6c5be2777855a5e5468df60493f8a5ca63695d1ab09ac4ad657                                                                                                      5d54ace211160
  cluster-monitoring-operator                    sha256:cfdfd6ef4eb95e8b6eef9709cd2f4fc4f0235211f0cee49596a                                                                                                      cc1aa2d84860e
  cluster-network-operator                       sha256:0658285a718a05d2860ceb54271bd3c09e15b7d56deef3a9a1c                                                                                                      b21f0e69c72d6
  cluster-node-tuning-operator                   sha256:967651445e28614ce96174fadf0aa6a9d6f9c72c2b086b1a96e                                                                                                      380c584ebe3e4
  cluster-openshift-apiserver-operator           sha256:7b1dd571f8e7d13aa985c77c90e3d5ceffe18f3bd9cde9c6249                                                                                                      caaae1c2b4221
  cluster-openshift-controller-manager-operator  sha256:c08cc3764f6798bcbec1a92b5f07c699b3d134da88ab3150812                                                                                                      f0d6f8ac5dcc0
  cluster-platform-operators-manager             sha256:6869dd106a29f8ff608aa6dcc867b028ca4f5c66ea4bcfb874d                                                                                                      d615c8de81030
  cluster-policy-controller                      sha256:0e1b653f5930000a095001178b0c730c4f7dd8c9b95a31de174                                                                                                      1739de611c99c
  cluster-samples-operator                       sha256:677b41ab940936342656d8d853e887a6fc9a8ee3b76041c6738                                                                                                      4c63e6882d995
  cluster-storage-operator                       sha256:a03e65d47eac585df5ae524d8766a891c0b9ce6c01667f71180                                                                                                      cb53e4e4000ff
  cluster-update-keys                            sha256:e2df814f625e5806d15a0916fee0a823fb034bf5a97ffe41e73                                                                                                      e576ec67fa816
  cluster-version-operator                       sha256:009a623faf912d630383a02dbdf5219e3259dfece95f99a7855                                                                                                      653aaabe5faac
  configmap-reloader                             sha256:412c1e2160ed7faadc406d58dd8107f6f683fe276da905fc74c                                                                                                      0bf846a821ee7
  console                                        sha256:7e709e012c7f825668a7e4bade3fc3716f754fe9533c9d7d3a8                                                                                                      6dd7e718b58e5
  console-operator                               sha256:66f9eacde81e0b28235c191a4e2dab230e954cf40d23d4e8849                                                                                                      ffd1908b0e170
  container-networking-plugins                   sha256:ad10edf62a554f53558239835ad21d8483876ba5f9ccab1d97e                                                                                                      2f097698e7d80
  coredns                                        sha256:fa311875d683a4df63b8c7653019ea67c68033dd048564a1ec8                                                                                                      6e79af93ca030
  csi-driver-manila                              sha256:9833e6de98443319fdf4ee1d2df7012dbda243801253e8ecdfc                                                                                                      4bed3fdf88313
  csi-driver-manila-operator                     sha256:2bf696120e5ac9f1aaecab5ef04648b9f47f755f74b30e70f19                                                                                                      3c34471577c60
  csi-driver-nfs                                 sha256:f106070c007a36cd36fbf52391c184bccee5f07c85b4b666361                                                                                                      a7442cd4ab484
  csi-driver-shared-resource                     sha256:d30f7819bca252af6b0929c0b92b05c9c2e129d1d7d4e7e0ac2                                                                                                      5bd76f3c86653
  csi-driver-shared-resource-operator            sha256:c347b9b2fb544780dc2e94e8a18dfce5a9c79c9efa7c5752d06                                                                                                      4fa0d75936da1
  csi-driver-shared-resource-webhook             sha256:7f80348db304e58cdaf253e39f01754852158282d3f8552e015                                                                                                      f88e80a16f4a3
  csi-external-attacher                          sha256:5c62adbae2bbf8faac326fc42ab8b80d2119b912227c3db50f2                                                                                                      25e5a1627da4f
  csi-external-provisioner                       sha256:6d6ab3ab3a2f377bacd8ce5ce3fc688bef8fd09070ae1db60bd                                                                                                      6e792f1998ab6
  csi-external-resizer                           sha256:12c1952d3038e8bc1ee93c35dd5cf7c548ac34e44331fd29974                                                                                                      88300d61809e9
  csi-external-snapshotter                       sha256:e1554966c990f3116ca02da746184587992591811305c11fcb2                                                                                                      54e2f91de011f
  csi-livenessprobe                              sha256:85cd35f686f7c36e365624d4b31551615c1107a2efeadea9d5b                                                                                                      69bba00d866cf
  csi-node-driver-registrar                      sha256:c904a8b400f12f380dba692a40d5b57c99b757de599171108a2                                                                                                      6b2ed3a5b4931
  csi-snapshot-controller                        sha256:f14be9bb3302b347c091e52e35d9355c2453459b6b274141b7f                                                                                                      0ff84ec9b1a93
  csi-snapshot-validation-webhook                sha256:76524892d121f820468eb00128f2898e485f344720544b50b39                                                                                                      c788fae1d7e42
  deployer                                       sha256:99f3e400fcd9cb32af62cedd7edd6b9eed504fae4b5c59659c4                                                                                                      e9bf801d6d6e1
  docker-builder                                 sha256:40eede9dec95a129dccf49da887a160abb507fb5671c8a3aac8                                                                                                      c669b11ed12df
  docker-registry                                sha256:bd312db8da0d38f820eb718664caa26c7089bfd21ae0dd5a8ec                                                                                                      d6a1171cdec8f
  driver-toolkit                                 sha256:a88f9d30cef4002c0b6aab570d2693dc55bb022f376cb6a8a03                                                                                                      d66aa1e21367a
  egress-router-cni                              sha256:78ef7194f271fd4067f2eeabce6bd3737cd216a71d1b454b35e                                                                                                      b7b956814fd0d
  etcd                                           sha256:31f28f8750d10a6bc3f6f06a7cc1b27b29ca28878792ec6627e                                                                                                      3e8953d0fe153
  gcp-cloud-controller-manager                   sha256:56d1ff7da9747bebec3eb6c7e399fd096175e7e648bbfd6eaa5                                                                                                      cdb6bbd9bbfdd
  gcp-cluster-api-controllers                    sha256:a8cdcd53a7792a250045dde02bb43ca4d03d4d6794b33a021a7                                                                                                      2f4923e27bff9
  gcp-machine-controllers                        sha256:8c3c59d7ffa7ded7bc2b7fe9214839096fc2def2516385a5032                                                                                                      83ee4990567c0
  gcp-pd-csi-driver                              sha256:d5c4b4fb6a9697ebf0944e396b72c9241dfe64853470d7bd5b2                                                                                                      08bf60b5d90a6
  gcp-pd-csi-driver-operator                     sha256:e837e30d0e0e6497d7d5ba2137181dc61224b7494937efd1a69                                                                                                      f5ec934fbcaee
  haproxy-router                                 sha256:314e586db98f9644efaf814e27b48dc58b51692cf360b65f27b                                                                                                      825008a1b942c
  hyperkube                                      sha256:56edf550e62cccd81a2fc343ef8c6d3afbd609208538bb39ef5                                                                                                      97a8e5e756487
  hypershift                                     sha256:c7dee948f845621efcc7498933b3e29b4be130026de7fb44bbf                                                                                                      996a13f31a822
  ibm-cloud-controller-manager                   sha256:3a7eca438f91aabd2143c52d16f6ed02dfcae05338d67b18e1d                                                                                                      bfcb587ee4cb7
  ibm-vpc-block-csi-driver                       sha256:5c840d7a215dfc8a8ed6921b446a745a9561055c1084dd6b8c4                                                                                                      ba2d706601dbc
  ibm-vpc-block-csi-driver-operator              sha256:f450527ab48a4a0b90a7f8141fe2530a6e392bec81ae3fcb231                                                                                                      ea4c5e99e47a7
  ibm-vpc-node-label-updater                     sha256:6f518b03ee2d3ff1ab5601a6d0bbd6c562989e45d7e39f77998                                                                                                      2f463a01936da
  ibmcloud-cluster-api-controllers               sha256:0f1909cbc0fcea1d764e6f109c2790d60c4d02a2cb760029c44                                                                                                      8f4eb4ac928ef
  ibmcloud-machine-controllers                   sha256:36e09e67e50f5e5f30ed039dcfcbe53b2bcf949aa2771f2b091                                                                                                      2902674d8afb3
  insights-operator                              sha256:bc25816b0375cf5140b171bd56713d66cfa14e5fbbaaf94d081                                                                                                      7c09767e681b6
  installer                                      sha256:bbdf2517dad9cbf5e67d2e01be1612e5ce89bfcf1c36bb03a30                                                                                                      58bda8c71f9c2
  installer-artifacts                            sha256:02f3dee0a9fac87a1aed69d2451e92fea59ac16c62618c55ebf                                                                                                      dc21a072c3930
  ironic                                         sha256:21715287c8ce11a0e7f93bb2d5cc9e7eee4bf9e68f176c8dfcb                                                                                                      d5389acd5b2a7
  ironic-agent                                   sha256:afdd6ecc96d359759c177556ff7e5558b49b0ef3995a2d6ecf1                                                                                                      a6c1158a273d0
  ironic-machine-os-downloader                   sha256:b70e745d6b0de953331191d74eb517a7d77a22c7ccc26fee777                                                                                                      aaf735cc816db
  ironic-static-ip-manager                       sha256:6634c0d8719d8ad6aee08ee00d1231b6fc97d7317c3fdfc08b7                                                                                                      09cb13518daf7
  k8s-prometheus-adapter                         sha256:18470185973481e4c5e616ee9ff9f894c0fae2f6a06c4d74d06                                                                                                      00e2c5cb959de
  keepalived-ipfailover                          sha256:f6be076ec3e836daae50bafb3a4a6847c34957eab37badd9974                                                                                                      c0a1a50896ddb
  kube-proxy                                     sha256:f5fed59d24f029a8ec8bca0939c42d3b4d1974aab93c6fe084e                                                                                                      7778e9e16ff43
  kube-rbac-proxy                                sha256:839d5f4a80c2dcfdcd485265f911d2b3bac9d4746c67382f804                                                                                                      efeaaeedac428
  kube-state-metrics                             sha256:a9e47d0c04589c8ec3937e4d6dd96be1dc63c0c557c51bf890c                                                                                                      e4d1a8746b1d1
  kube-storage-version-migrator                  sha256:f69d32ad58da6ee3ceab875bef934ec756fae954a793232708e                                                                                                      c0066d7b09597
  kubevirt-cloud-controller-manager              sha256:b625f00f6922582140e0039db9aad1ef2304d8c9fa27cb635ec                                                                                                      77a4c023d36fc
  kubevirt-csi-driver                            sha256:f4aaf190a3bea3c6c626f609fb7e164653d7514231a956114f6                                                                                                      935ad40f09e6d
  kuryr-cni                                      sha256:632a279dfc746db0b3353dca518afc01a6dcbafaff1d5eb90e2                                                                                                      8103d2a0b6be3
  kuryr-controller                               sha256:9e54905cffeaafca09d06786e6e5b9ef2a559ab2a54d05c2bd5                                                                                                      c17178a0104d7
  libvirt-machine-controllers                    sha256:77e8954448005717d9b53532d1c40491d35009e5e9537ae69ff                                                                                                      b0b062062c38f
  machine-api-operator                           sha256:82b3a668b55759daa194983e74e2b345fff7827b7f48f954984                                                                                                      497e6a5a350db
  machine-config-operator                        sha256:892a80425c9af0d930738d970247b06af1f753ff285ed471710                                                                                                      833d47e60fc91
  machine-image-customization-controller         sha256:7c9e7e15b64e642848e8b4a35a54a18c2c1c687c06744929372                                                                                                      bf10d62bfc8a7
  machine-os-content                             sha256:d925e8c2336213131a823c0b5b6617714834c8c112a34ca6363                                                                                                      d6197aebe4487
  machine-os-images                              sha256:0eed9c5b7e37a5e8fc0b3e62ccd1476de2da512d239a8e5af38                                                                                                      f664816435d61
  multus-admission-controller                    sha256:93b781976968048ec7a34582d5774900766997a0abd9f5f9039                                                                                                      0d9b4d6196ff0
  multus-cni                                     sha256:42eed93d25179c4d66356671ff061ce4bc8b640b755f92e1932                                                                                                      3edba6d914c52
  multus-networkpolicy                           sha256:66dcb1c89fbc73619ddb247027cae2634d500424fb8037373e7                                                                                                      c904f83faf235
  multus-route-override-cni                      sha256:4008734ba9d3b29f65a8ab3165e0cc88b80538a94cf8d74d74d                                                                                                      183434d7f4181
  multus-whereabouts-ipam-cni                    sha256:bbcc158fee76887d9b31f02a5a42ddd48e061c6479540b151e7                                                                                                      66d309c2c483e
  must-gather                                    sha256:6b1762ae9b7a623d2fb51a7f16fc929007561e48da6debf9326                                                                                                      cbc50ed9fcea9
  network-interface-bond-cni                     sha256:a1fcfb67a3c82b6d38005dfaabc1239d2d4444e2f2caf06f590                                                                                                      c93d34b49254f
  network-metrics-daemon                         sha256:15a6c32a84362694cd2923c7e8d5adf05d07aa8219a7a83f67e                                                                                                      719c1b93ffe98
  network-tools                                  sha256:334b030e89397f0855cce9541c4cb03b50bbd2a0e4f85d1de75                                                                                                      0a32a635668fb
  nutanix-machine-controllers                    sha256:e26ab70907f5b24e74dcf1e20c852d6caea42911477e52d59c7                                                                                                      2f59ba5fa4ccb
  oauth-apiserver                                sha256:4e2b951392bd88bf9a225ce22165e727653476bbc30fa0b5271                                                                                                      ed379085dd9a9
  oauth-proxy                                    sha256:3333a59db3bec11b315ae7c1ef447c870066fa039c8cda414d9                                                                                                      b99e770728aee
  oauth-server                                   sha256:1f0771e3e769901af67a690c821ff0713d157a32f15bd3b6769                                                                                                      a0029e11cb6b9
  oc-mirror                                      sha256:efea29c23056ba790009404106a6f0a4560b73708d5be7e7b7c                                                                                                      1097ddaf936f1
  olm-rukpak                                     sha256:8892981fc5449aff3c26a9ec3ac26d20ff5d4d07df9184794ae                                                                                                      0e74c1da2b2e5
  openshift-apiserver                            sha256:9347d8be26a80fd04b37f691c84799e641c5c5aa7a7b503fd47                                                                                                      6478d90672a40
  openshift-controller-manager                   sha256:6bbd5dc16585d7b17405810efdd1b6ef318620900f50977b882                                                                                                      25d2daa14e7f7
  openshift-state-metrics                        sha256:b66379092b5118033c512150bd74a789cef9ca2a19dca06ea86                                                                                                      6b89dc32c99d6
  openstack-cinder-csi-driver                    sha256:585357fd3639dede3cbbb645d8178d9e9d9895f5554a3b558ef                                                                                                      79a44f3dc2a16
  openstack-cinder-csi-driver-operator           sha256:3117611b507bcdc7a6b93ee235fa77eb9c4f6aef62cc6f0e6e7                                                                                                      5492b29cbe497
  openstack-cloud-controller-manager             sha256:4dc6c04ea009f0286450a6b93aecb79f35b45ebc677b73b278a                                                                                                      ef5e789a3ccb4
  openstack-machine-api-provider                 sha256:9aa965509a861d60755771878d0b2f70b1cd9fc5839d3518d63                                                                                                      bb11c909249ee
  openstack-machine-controllers                  sha256:f865ad23af2c55b0a3ecb905dcbceaa38c5f9db4b96b17c2026                                                                                                      e0e265e577b24
  operator-lifecycle-manager                     sha256:2801e24a0f14bae3e960f9f672d3b0a3966eebe0d0a11f9f598                                                                                                      322e366b08a25
  operator-marketplace                           sha256:7ed52a4481f1bf03091cb53a4ca7ccd4b5f9938a2b7ca1220fa                                                                                                      9219e064a061f
  operator-registry                              sha256:a683be33546f2796630092eb2563cd6dfd5c0abf032744827fc                                                                                                      4dbc7da58c79c
  ovirt-csi-driver                               sha256:3c9c74589ae1ce706974a8c6b9e3f18cee660cbb826a5f13a34                                                                                                      8314b36912027
  ovirt-csi-driver-operator                      sha256:d93625d83c04016fa4e2ede165d60639283294372ad983befa5                                                                                                      47abdb1f5b954
  ovirt-machine-controllers                      sha256:6b09d00d62018a3a04faab819cfa6b80d94eef0ca79e4b49d7a                                                                                                      2446930e1ba51
  ovn-kubernetes                                 sha256:04cdc031a16c62aa61222192382f53e8dfa5921dd367470c74c                                                                                                      628823b168a12
  ovn-kubernetes-microshift                      sha256:b887157f66a86a6edc96db28801bd69fa3eb7fd551ee1937e60                                                                                                      48d9b82697e83
  pod                                            sha256:65507414694b81fd5dfe37cdbfc66e8f11f92001194508a25b9                                                                                                      a988f2ed403e8
  powervs-block-csi-driver                       sha256:bf6d198f51cd2cce1cd1250c3ee4caba467aabfcfd1f7ff941e                                                                                                      9928b4e932c0c
  powervs-block-csi-driver-operator              sha256:94c19edc73722de30c52603247e9fa2f40809e2e42815f9712b                                                                                                      6fb7599185efa
  powervs-cloud-controller-manager               sha256:498722512439f874c64dcc4d4987c5a489a95fd30f3117607d5                                                                                                      08de000033741
  powervs-machine-controllers                    sha256:4d355e4095dd287825deb47c21688e909942c99398dbda0ec6a                                                                                                      c56ee77c8be24
  prom-label-proxy                               sha256:3914e19142ffdf56db9d7cd1a5c186dcd839e8736096bebef24                                                                                                      84c397ac349c7
  prometheus                                     sha256:1625ab00373e55c53f527db7c5114d1d07de8f98c38e1ced59a                                                                                                      8e376bffdf482
  prometheus-alertmanager                        sha256:04eeb459ea935f7fe5126496f4915fc366ada0daa11a0bd3324                                                                                                      63ca705f81809
  prometheus-config-reloader                     sha256:1ebfcb15834c8e3551541af5748501becd2fcc16e9a4f7549fd                                                                                                      63b5adcfde215
  prometheus-node-exporter                       sha256:053f9af83b75cf2946191ecf40001e556ae415bac25ecfc1e5d                                                                                                      c1e7f19ede0da
  prometheus-operator                            sha256:82179dda0b0901274e2721839a60181792e34fc3b7f2f182724                                                                                                      266cc04ddeec6
  prometheus-operator-admission-webhook          sha256:3a8c217bd26353766444e83b6e5c398abbcec0ec7b6c9ed556e                                                                                                      9164b5387b769
  rhel-coreos-8                                  sha256:c2edfee7337e84912ac0ca9028a9294b73a98fe4b5c35d97797                                                                                                      77fc9eeae4e08
  rhel-coreos-8-extensions                       sha256:d27614d577a2f2d33dd1580f9ffdf9cb32a1ee6f9878b79c780                                                                                                      fa9eee41e2acb
  route-controller-manager                       sha256:4d2cde2b981bd72c7c23078f99b21b656a9d2bd469669eb81e8                                                                                                      8d3947ae8c57f
  sdn                                            sha256:82fc78c41976e22d46b4fb9147727867fc6f1a5a00a388d15b0                                                                                                      817a6457d1700
  service-ca-operator                            sha256:5f9f8bfc18343a8897c71d546ebed24e4d1121414ec2c45f5a2                                                                                                      ae62c77ad1735
  telemeter                                      sha256:4409927c76455c37bde5fe610f43b0a2be931e46e7de6c67cdf                                                                                                      db17e0f1ae598
  tests                                          sha256:f6ab30cdb407008a7748d5fb58532e9bf6c7e1cfcaf5173f58c                                                                                                      87d26cd696b27
  thanos                                         sha256:7585c3da3581a9b3599a4d2b4a04f7a90a38b29cf2577376059                                                                                                      5c331ca5a6ea2
  tools                                          sha256:f7472e658beb7385f9a6a6751ba0c2dc579e003e2b11f9cff88                                                                                                      0f1b6374663c8
  vsphere-cloud-controller-manager               sha256:2e74161f6b93e97348ffb3464874b5099e30b173fb215929260                                                                                                      493bad425b13e
  vsphere-cluster-api-controllers                sha256:52fab79c93ed43e9ba92ffb8358d853721133a3e9a646ef6a68                                                                                                      cd9e0cf3caea7
  vsphere-csi-driver                             sha256:12a740c5b26e753170d97cdf19c7fb4191d7bf70591bbf12dfe                                                                                                      f51d4bffee868
  vsphere-csi-driver-operator                    sha256:8d04861438fcae763f144d7e50f7b537e0d5abce6f2f3978b80                                                                                                      19d4548ec24b1
  vsphere-csi-driver-syncer                      sha256:fc8763cc7c006d312ccd8c5005c53149f63db77dc5a65baf0b1                                                                                                      467a1f597ddf7
  vsphere-problem-detector                       sha256:1cea7f8b7fb5650a01f319c4f669d05e919b88d8f3921c8500f                                                                                                      05c64464e2e41

6.启动镜像下载

mkdir -p /data/OCP-4.12.64/ocp/ocp-image/mirror_4.12.64
mkdir -p /data/OCP-4.12.64/ocp/secret/
oc adm release mirror \
     -a /data/OCP-4.12.64/ocp/secret/redhat-secret.json \
     --from=quay.io/openshift-release-dev/ocp-release:4.12.64-x86_64 \
     --to-dir=/data/OCP-4.12.64/ocp/ocp-image/mirror_4.12.64

如果出现如下错误输出,则重新运行上述镜像命令,直至上述输出结果的Success状态

7.安装Harbor作为Register.

docker-ce安装
获取YUM源
使用阿里云开源软件镜像站。

wget https://mirrors.aliyun/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

安装并设置启动及开机自启动

yum -y install docker-ce
systemctl enable --now docker

docker compose安装
下载docker-compose二进制文件

wget https://github/docker/compose/releases/download/v2.29.3/docker-compose-linux-x86_64

移动二进制文件到/usr/bin目录,并更名为docker-compose

mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

为二进制文件添加可执行权限

chmod +x /usr/bin/docker-compose

安装完成后,查看docker-compse版本

docker-compose version
Docker Compose version v2.29.3

获取harbor安装文件
下载harbor离线安装包

wget  https://github/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz

查看已下载的离线安装包

ls
harbor-offline-installer-v2.11.1.tgz

修改配置文件
解压harbor离线安装包

tar xf harbor-offline-installer-v2.11.1.tgz

查看harbor目录

ls harbor
common.sh  harbor.v2.5.1.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

创建配置文件

cd harbor/
mv harbor.yml.tmpl harbor.yml

修改配置文件内容

vim harbor.yml

hostname: harbor.congc
http:
  port: 80
https:
  port: 443
  certificate: /root/harbor/crt/harbor-cert.crt
  private_key: /root/harbor/crt/harbor-key.pem
harbor_admin_password: Harbor12345
data_volume: /data

注意这里一定要有证书,如何自签证书请参考 CA服务搭建

加载镜像到docker image

docker load -i harbor.v2.11.1.tar.gz

执行预备脚本

./prepare
prepare base dir is set to /root/harbor
Clearing the configuration file: /config/portal/nginx.conf
Clearing the configuration file: /config/log/logrotate.conf
Clearing the configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/portal/nginx.conf
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/registryctl/config.yml
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
Generated and saved secret to file: /data/secret/keys/secretkey
Successfully called func: create_root_cert
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir

执行安装脚本

./install.sh
[Step 0]: checking if docker is installed ...
Note: docker version: 20.10.12
[Step 1]: checking docker-compose is installed ...
Note: docker-compose version: 1.25.0
​
[Step 2]: loading Harbor images ...
​
[Step 3]: preparing environment ...
​
[Step 4]: preparing harbor configs ...
prepare base dir is set to /root/harbor
​
[Step 5]: starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-db     ... done
Creating registry      ... done
Creating registryctl   ... done
Creating redis         ... done
Creating harbor-portal ... done
Creating harbor-core   ... done
Creating harbor-jobservice ... done
Creating nginx             ... done
✔ ----Harbor has been installed and started successfully.----

验证运行情况

docker ps

将签发habor证书的CA copy到/etc/pki/ca-trust/source/anchors/,并信任CA

sudo update-ca-trust

开启防火墙:

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent

在windows上访问harbor,添加域名解析
C:\Windows\System32\drivers\etc\

192.168.2.51      harbor.congc

访问harbor UI界面

1.3. 具有用户置备基础架构的集群的要求

1.3.1. 集群安装所需的机器

最小的 OpenShift Container Platform 集群需要以下主机:
表 1.1. 最低所需的主机

主机描述
一个临时 bootstrap 机器集群需要 bootstrap 机器在三台 control plane 机器上部署 OpenShift Container Platform 集群。您可在安装集群后删除 bootstrap 机器。
三台 control plane 机器control plane 机器运行组成 control plane 的 Kubernetes 和 OpenShift Container Platform 服务。
至少两台计算机器,也称为 worker 机器。OpenShift Container Platform 用户请求的工作负载在计算机器上运行。
重要
要保持集群的高可用性,请将独立的物理主机用于这些集群机器。

bootstrap 和 control plane 机器必须使用 Red Hat Enterprise Linux CoreOS(RHCOS)作为操作系统。但是,计算机器可以在 Red Hat Enterprise Linux CoreOS(RHCOS)、Red Hat Enterprise Linux(RHEL) 8.6 和更高的版本。

请注意,RHCOS 基于 Red Hat Enterprise Linux(RHEL)8,并继承其所有硬件认证和要求。查看 红帽企业 Linux 技术功能和限制。

表 1.2. 最低资源要求

机器操作系统vCPU [1]虚拟内存Storage每秒输入/输出 (IOPS) [2]
bootstrapRHCOS416 GB100 GB300
Control plane(控制平面)RHCOS416 GB100 GB300
ComputeRHCOS、RHEL 8.6 及更新版本 [3]28 GB100 GB300
  1. 当未启用并发多线程(SMT)或超线程时,一个 vCPU 相当于一个物理内核。启用后,使用以下公式来计算对应的比例:(每个内核数的线程)× sockets = vCPU。
  2. OpenShift Container Platform 和 Kubernetes 对磁盘性能非常敏感,建议使用更快的存储速度,特别是 control plane 节点上需要 10 ms p99 fsync 持续时间的 etcd。请注意,在许多云平台上,存储大小和 IOPS 可一起扩展,因此您可能需要过度分配存储卷来获取足够的性能。
  3. 与所有用户置备的安装一样,如果您选择在集群中使用 RHEL 计算机器,则负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁和完成所有其他必要的任务。RHEL 7 计算机器的使用已弃用,并已在 OpenShift Container Platform 4.10 及更新的版本中删除。
    如果平台的实例类型满足集群机器的最低要求,则 OpenShift Container Platform 支持使用它。

1.3.3. 证书签名请求管理

在使用您置备的基础架构时,集群只能有限地访问自动机器管理,因此您必须提供一种在安装后批准集群证书签名请求 (CSR) 的机制。kube-controller-manager 只能批准 kubelet 客户端 CSR。machine-approver 无法保证使用 kubelet 凭证请求的提供证书的有效性,因为它不能确认是正确的机器发出了该请求。您必须决定并实施一种方法,以验证 kubelet 提供证书请求的有效性并进行批准。

1.3.4. 用户置备的基础架构对网络的要求

所有 Red Hat Enterprise Linux CoreOS(RHCOS)机器都需要在启动时在 initramfs 中配置联网,以获取它们的 Ignition 配置文件。

在初次启动过程中,机器需要 IP 地址配置,该配置通过 DHCP 服务器或静态设置,提供所需的引导选项。建立网络连接后,机器会从 HTTP 或 HTTPS 服务器下载 Ignition 配置文件。然后,Ignition 配置文件用于设置每台机器的确切状态。Machine Config Operator 在安装后完成对机器的更多更改,如应用新证书或密钥。

建议使用 DHCP 服务器对集群机器进行长期管理。确保 DHCP 服务器已配置为向集群机器提供持久的 IP 地址、DNS 服务器信息和主机名。

注意
如果用户置备的基础架构没有 DHCP 服务,您可以在 RHCOS 安装时向节点提供 IP 网络配置和 DNS 服务器地址。如果要从 ISO 镜像安装,这些参数可作为引导参数传递。如需有关静态 IP 置备和高级网络选项的更多信息,请参阅 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程 部分。

Kubernetes API 服务器必须能够解析集群机器的节点名称。如果 API 服务器和 worker 节点位于不同的区域中,您可以配置默认 DNS 搜索区域,以允许 API 服务器解析节点名称。另一种支持的方法是始终通过节点对象和所有 DNS 请求中的完全限定域名引用主机。

1.3.4.1. 通过 DHCP 设置集群节点主机名

在 Red Hat Enterprise Linux CoreOS(RHCOS)机器上,主机名是通过 NetworkManager 设置的。默认情况下,机器通过 DHCP 获取其主机名。如果主机名不是由 DHCP 提供,请通过内核参数或者其它方法进行静态设置,请通过反向 DNS 查找获取。反向 DNS 查找在网络初始化后进行,可能需要一些时间来解决。其他系统服务可以在此之前启动,并将主机名检测为 localhost 或类似的内容。您可以使用 DHCP 为每个集群节点提供主机名来避免这种情况。

另外,通过 DHCP 设置主机名可以绕过实施 DNS split-horizon 的环境中的手动 DNS 记录名称配置错误。

1.3.4.2. 网络连接要求

您必须配置机器之间的网络连接,以允许 OpenShift Container Platform 集群组件进行通信。每台机器都必须能够解析集群中所有其他机器的主机名。

本节详细介绍了所需的端口。

重要
在连接的 OpenShift Container Platform 环境中,所有节点都需要访问互联网才能为平台容器拉取镜像,并向红帽提供遥测数据。[但是我们使用了harbor离线了镜像,所有也可以在离线环境中安装]

表 1.3. 用于全机器到所有机器通信的端口

协议port描述
ICMPN/A网络可访问性测试
TCP1936指标
9000-9999主机级别的服务,包括端口 9 100-9101 上的节点导出器,以及端口 9099 上的 Cluster Version Operator。
10250-10259Kubernetes 保留的默认端口
10256openshift-sdn
UDP4789VXLAN
6081Geneve
9000-9999主机级别的服务,包括端口 9100到9101 上的节点导出器。
500IPsec IKE 数据包
123IPsec NAT-T 数据包
4500UDP 端口 123 上的网络时间协议 (NTP).如果配置了外部 NTP 时间服务器,需要打开 UDP 端口 123。
4789VXLAN
TCP/UDP30000-32767Kubernetes 节点端口
ESPN/AIPsec Encapsulating Security Payload(ESP)

表 1.4. 用于所有机器控制平面通信的端口

协议port描述
TCP6443Kubernetes API

表 1.5. control plane 机器用于 control plane 机器通信的端口

协议port描述
TCP2379-2380etcd 服务器和对等端口

用户置备的基础架构的 NTP 配置
OpenShift Container Platform 集群被配置为默认使用公共网络时间协议(NTP)服务器。如果要使用本地企业 NTP 服务器,或者集群部署在断开连接的网络中,您可以将集群配置为使用特定的时间服务器。如需更多信息,请参阅配置 chrony 时间服务 的文档。

如果 DHCP 服务器提供 NTP 服务器信息,Red Hat Enterprise Linux CoreOS(RHCOS)机器上的 chrony 时间服务会读取信息,并可以把时钟与 NTP 服务器同步。

其他资源
配置 chrony 时间服务

1.3.4.3. 安装chrony时间同步服务器【实操】

1.设置正确的时区

timedatectl list-timezones |grep Asia/Shanghai
timedatectl set-timezone Asia/Shanghai

2.安装chrony

yum -y install chrony
systemctl enable chronyd --now
systemctl status chronyd

3.配置chrony

#先备份原始chrony.conf配置文件,在修改配置文件
cp /etc/chrony.conf{,.bak}
 
sed -i -e "s/^server*/#&/g" \
       -e "s/#local stratum 10/local stratum 10/g" \
       -e "s/#allow 192.168.0.0\/16/allow all/g" \
       /etc/chrony.conf
 
cat >> /etc/chrony.conf << EOF
server ntp.congc iburst
EOF

cat /etc/chrony.conf
pool 2.rhel.pool.ntp iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow all
local stratum 10
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony
server ntp.congc iburst

其中 ntp.congc是我为时间服务设置的域名,后面会加到DNS服务器解析中的。

4.重启chrony服务

systemctl restart chronyd

5.检查chrony服务端启动

ps -auxw |grep chrony
chrony   13882  0.0  0.0  22524  1160 ?        S    14:57   0:00 /usr/sbin/chronyd
root     13911  0.0  0.0 112708   976 pts/0    R+   15:12   0:00 grep --color=auto chrony
 
ss -lnup |grep chronyd
UNCONN     0      0            *:123                      *:*                   users:(("chronyd",pid=14217,fd=3))
UNCONN     0      0      127.0.0.1:323                      *:*                   users:(("chronyd",pid=14217,fd=1))
UNCONN     0      0          ::1:323                     :::*                   users:(("chronyd",pid=14217,fd=2))
 
chronyc tracking
Reference ID    : C0A81E0B (ntp.example.internal)
Stratum         : 12
Ref time (UTC)  : Fri Mar 20 13:46:44 2020
System time     : 0.000002813 seconds fast of NTP time
Last offset     : -0.002774593 seconds
RMS offset      : 0.003830482 seconds
Frequency       : 32.672 ppm fast
Residual freq   : -24.591 ppm
Skew            : 41.876 ppm
Root delay      : 0.000733790 seconds
Root dispersion : 0.052910943 seconds
Update interval : 64.9 seconds
Leap status     : Normal

6.关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld

1.3.5. 用户置备的 DNS 要求

在 OpenShift Container Platform 部署中,以下组件需要 DNS 名称解析:

  • The Kubernetes API
  • OpenShift Container Platform 应用程序通配符
  • bootstrap、control plane 和计算机器
    Kubernetes API、bootstrap 机器、control plane 机器和计算机器也需要反向 DNS 解析。

DNS A/AAAA 或 CNAME 记录用于名称解析,PTR 记录用于反向名称解析。反向记录很重要,因为 Red Hat Enterprise Linux CoreOS(RHCOS)使用反向记录为所有节点设置主机名,除非 DHCP 提供主机名。另外,反向记录用于生成 OpenShift Container Platform 需要操作的证书签名请求(CSR)。

注意
建议使用 DHCP 服务器为每个群集节点提供主机名。如需更多信息,请参阅用户置备的基础架构部分的 DHCP 建议。

用户置备的 OpenShift Container Platform 集群需要以下 DNS 记录,这些记录必须在安装前就位。在每个记录中,<cluster_name> 是集群名称,<base_domain> 是您在 install-config.yaml 文件中指定的基域。完整的 DNS 记录采用以下形式: .<cluster_name>.<base_domain>.。

表 1.6. 所需的 DNS 记录

注意
在 OpenShift Container Platform 4.4 及更新的版本中,您不需要在 DNS 配置中指定 etcd 主机和 SRV 记录。

提示
您可以使用 dig 命令验证名称和反向名称解析。如需了解详细的 验证步骤,请参阅为用户置备的基础架构验证 DNS 解析 一节。

1.3.5.1. 用户置备的集群的 DNS 配置示例

本节提供 A 和 PTR 记录配置示例,它们满足了在用户置备的基础架构上部署 OpenShift Container Platform 的 DNS 要求。样本不是为选择一个 DNS 解决方案提供建议。

在这个示例中,集群名称为 ocp4,基域是 example。

用户置备的集群的 DNS A 记录配置示例

以下示例是 BIND 区域文件,其中显示了用户置备的集群中名称解析的 A 记录示例。

例 1.1. DNS 区数据库示例

$TTL 1W
@	IN	SOA	ns1.example.	root (
			2019070700	; serial
			3H		; refresh (3 hours)
			30M		; retry (30 minutes)
			2W		; expiry (2 weeks)
			1W )		; minimum (1 week)
	IN	NS	ns1.example.
	IN	MX 10	smtp.example.
;
;
ns1.example.		IN	A	192.168.1.5
smtp.example.		IN	A	192.168.1.5
;
helper.example.		IN	A	192.168.1.5
helper.ocp4.example.	IN	A	192.168.1.5
;
api.ocp4.example.		IN	A	192.168.1.5 ①
api-int.ocp4.example.	IN	A	192.168.1.5 ②
;
*.apps.ocp4.example.	IN	A	192.168.1.5 
;
bootstrap.ocp4.example.	IN	A	192.168.1.96 
;
control-plane0.ocp4.example.	IN	A	192.168.1.97 ⑤
control-plane1.ocp4.example.	IN	A	192.168.1.98 ⑥
control-plane2.ocp4.example.	IN	A	192.168.1.99 ⑦
;
compute0.ocp4.example.	IN	A	192.168.1.11 ⑧
compute1.ocp4.example.	IN	A	192.168.1.7 ⑨
;
;EOF

① 为 Kubernetes API 提供名称解析。记录引用 API 负载均衡器的 IP 地址。
②为 Kubernetes API 提供名称解析。记录引用 API 负载均衡器的 IP 地址,用于内部集群通信。
③为通配符路由提供名称解析。记录引用应用程序入口负载均衡器的 IP 地址。应用程序入口负载均衡器以运行 Ingress Controller Pod 的机器为目标。默认情况下,Ingress Controller Pod 在计算机器上运行。
注意
在这个示例中,将相同的负载均衡器用于 Kubernetes API 和应用入口流量。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。
④为 bootstrap 机器提供名称解析。
⑤ ⑥ ⑦为 control plane 机器提供名称解析。
⑧ ⑨为计算机器提供名称解析。
用户置备的集群的 DNS PTR 记录配置示例

以下示例 BIND 区域文件显示了用户置备的集群中反向名称解析的 PTR 记录示例。

例 1.2. 反向记录的 DNS 区数据库示例

$TTL 1W
@	IN	SOA	ns1.example.	root (
			2019070700	; serial
			3H		; refresh (3 hours)
			30M		; retry (30 minutes)
			2W		; expiry (2 weeks)
			1W )		; minimum (1 week)
	IN	NS	ns1.example.
;
5.1.168.192.in-addr.arpa.	IN	PTR	api.ocp4.example. ①
5.1.168.192.in-addr.arpa.	IN	PTR	api-int.ocp4.example. ②
;
96.1.168.192.in-addr.arpa.	IN	PTR	bootstrap.ocp4.example. ③
;
97.1.168.192.in-addr.arpa.	IN	PTR	control-plane0.ocp4.example. ④
98.1.168.192.in-addr.arpa.	IN	PTR	control-plane1.ocp4.example. ⑤ 
99.1.168.192.in-addr.arpa.	IN	PTR	control-plane2.ocp4.example.  ⑥
;
11.1.168.192.in-addr.arpa.	IN	PTR	compute0.ocp4.example. ⑦ 
7.1.168.192.in-addr.arpa.	IN	PTR	compute1.ocp4.example. ⑧
;
;EOF

①为 Kubernetes API 提供反向 DNS 解析。PTR 记录引用 API 负载均衡器的记录名称。
②为 Kubernetes API 提供反向 DNS 解析。PTR 记录引用 API 负载均衡器的记录名称,用于内部集群通信。
③为 bootstrap 机器提供反向 DNS 解析。
④ ⑤ ⑥为 control plane 机器提供反向 DNS 解析。
⑧ 为计算机器提供反向 DNS 解析。

注意
OpenShift Container Platform 应用程序通配符不需要 PTR 记录。

1.3.5.2. 用户置备的集群的 DNS 配置【实操】

1.安装BIND服务

yum -y install bind bind-utils
systemctl enable named --now

2.设置BIND配置文件
先备份原始BIND配置文件,然后修改BIND配置,并重新加载配置

cp /etc/named.conf{,_bak}
sed -i -e "s/listen-on port.*/listen-on port 53 { any; };/" /etc/named.conf
sed -i -e "s/allow-query.*/allow-query { any; };/" /etc/named.conf
rndc reload
grep -E 'listen-on port|allow-query' /etc/named.conf 

💡 NOTE
如果有外网的解析需求,则请确保DNS服务器可以访问外网,并添加如下配置:

sed -i '/recursion yes;/a \
        forward first; \
        forwarders { 114.114.114.114; 8.8.8.8; };' /etc/named.conf
sed -i -e "s/dnssec-enable.*/dnssec-enable no;/" /etc/named.conf
sed -i -e "s/dnssec-validation.*/dnssec-validation no;/" /etc/named.conf
rndc reload

3.设置DNS环境变量

export DOMAIN=congc
export OCP_CLUSTER_ID=ocp4
export BASTION_IP=192.168.2.53
export HELPER_IP=192.168.2.52
export DNS_IP=192.168.2.50
export NTP_IP=192.168.2.54
export YUM_IP=192.168.2.53
export REGISTRY_IP=192.168.2.51
export NFS_IP=192.168.2.56
export LB_IP=192.168.2.55
export BOOTSTRAP_IP=192.168.2.60
export MASTER1_IP=192.168.2.61
export MASTER2_IP=192.168.2.62
export MASTER3_IP=192.168.2.63
export WORKER1_IP=192.168.2.64
export WORKER2_IP=192.168.2.65

说明 DNS_IP 为DNS服务器IP

4.配置Zone区域
添加解析Zone区域
执行以下命令添加3个解析ZONE(如果要执行多次,需要手动删除以前增加的内容),它们分别为:
域名后缀 解释
congc 集群内部域名后缀:集群内部所有节点的主机名均采用该域名后缀
ocp4.congc OCP集群的域名,如本例中的集群名为ocp4,则域名为ocp4.congc
168.192.in-addr.arpa 用于集群内所有节点的反向解析

cat >> /etc/named.rfc1912.zones << EOF

zone "congc" IN {
       type master;
       file "congc.zone";
       allow-transfer { any; };
};

zone "ocp4.congc" IN {
       type master;
       file "ocp4.congc.zone";
       allow-transfer { any; };
};

zone "168.192.in-addr.arpa" IN {
       type master;
       file "168.192.in-addr.arpa.zone";
       allow-transfer { any; };
};

EOF

创建congc.zone区域配置文件

cat > /var/named/congc.zone << EOF
$ORIGIN congc.
$TTL 1D
@           IN SOA  congc. admin.congc. (
                                        0          ; serial
                                        1D         ; refresh
                                        1H         ; retry
                                        1W         ; expire
                                        3H )       ; minimum

@             IN NS                         dns.congc.

bastion       IN A                          192.168.2.53
support       IN A                          192.168.2.52
dns           IN A                          192.168.2.50
ntp           IN A                          192.168.2.54
yum           IN A                          192.168.2.53
harbor        IN A                          192.168.2.51
nfs           IN A                          192.168.2.56
EOF

创建ocp4.congc.zone区域配置文件

cat > /var/named/ocp4.congc.zone << EOF
$ORIGIN ocp4.congc.
$TTL 1D
@           IN SOA  ocp4.congc. admin.ocp4.congc. (
                                        0          ; serial
                                        1D         ; refresh
                                        1H         ; retry
                                        1W         ; expire
                                        3H )       ; minimum

@             IN NS                         dns.congc.

dns.congc           IN A                          192.168.2.50

lb             IN A                          192.168.2.55

api            IN A                          192.168.2.55
api-int        IN A                          192.168.2.55
*.apps         IN A                          192.168.2.55

bootstrap      IN A                          192.168.2.60


master-1       IN A                          192.168.2.61
master-2       IN A                          192.168.2.62
master-3       IN A                          192.168.2.63


worker-1       IN A                          192.168.2.64
worker-2       IN A                          192.168.2.65
EOF

创建168.192.in-addr.arpa.zone反向解析区域配置文件
注意:以下脚本中的反向IP如果有变化需要在此手动修改。

cat > /var/named/168.192.in-addr.arpa.zone << EOF
$TTL 1D
@           IN SOA  congc. admin.congc. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

@                              IN NS       dns.congc.

53.2.168.192.in-addr.arpa.     IN PTR      bastion.congc.

52.2.168.192.in-addr.arpa.     IN PTR      support.congc.
50.2.168.192.in-addr.arpa.     IN PTR      dns.congc.
54.2.168.192.in-addr.arpa.     IN PTR      ntp.congc.
53.2.168.192.in-addr.arpa.     IN PTR      yum.congc.
51.2.168.192.in-addr.arpa.     IN PTR      harbor.congc.
56.2.168.192.in-addr.arpa.     IN PTR      nfs.congc.
55.2.168.192.in-addr.arpa.     IN PTR      lb.ocp4.congc.
55.2.168.192.in-addr.arpa.     IN PTR      api.ocp4.congc.
55.2.168.192.in-addr.arpa.     IN PTR      api-int.ocp4.congc.

60.2.168.192.in-addr.arpa.    IN PTR      bootstrap.ocp4.congc.

61.2.168.192.in-addr.arpa.    IN PTR      master-1.ocp4.congc.
62.2.168.192.in-addr.arpa.    IN PTR      master-2.ocp4.congc.
63.2.168.192.in-addr.arpa.    IN PTR      master-3.ocp4.congc.

64.2.168.192.in-addr.arpa.    IN PTR      worker-1.ocp4.congc.
65.2.168.192.in-addr.arpa.    IN PTR      worker-2.ocp4.congc.

EOF

5.重启BIND服务
重启BIND服务,然后检查没有错误日志。

systemctl restart named
rndc reload
journalctl -u named

6.测试正反向DNS解析
正向解析测试

dig harbor.${DOMAIN} +short
dig ntp.${DOMAIN} +short
dig lb.${OCP_CLUSTER_ID}.${DOMAIN} +short
dig api.${OCP_CLUSTER_ID}.${DOMAIN} +short
dig api-int.${OCP_CLUSTER_ID}.${DOMAIN} +short
dig bootstrap.${OCP_CLUSTER_ID}.${DOMAIN} +short
dig master-1.${OCP_CLUSTER_ID}.${DOMAIN} +short
dig master-2.${OCP_CLUSTER_ID}.${DOMAIN} +short
dig master-3.${OCP_CLUSTER_ID}.${DOMAIN} +short
dig worker-1.${OCP_CLUSTER_ID}.${DOMAIN} +short
dig worker-2.${OCP_CLUSTER_ID}.${DOMAIN} +short
dig *.apps.${OCP_CLUSTER_ID}.${DOMAIN} +short

反向解析测试

dig -x 192.168.2.xx +short

1.3.6. 用户置备的基础架构的负载均衡要求

在安装 OpenShift Container Platform 前,您必须置备 API 和应用程序入口负载均衡基础架构。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。

注意
如果要使用 Red Hat Enterprise Linux (RHEL) 实例部署 API 和应用程序入口负载均衡器,您必须单独购买 RHEL 订阅。

负载平衡基础架构必须满足以下要求:

1.API 负载均衡器 :提供一个通用端点,供用户(包括人工和机器)与平台交互和配置。配置以下条件:

  • 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
  • 无状态负载平衡算法。这些选项根据负载均衡器的实施而有所不同。

重要
不要为 API 负载均衡器配置会话持久性。为 Kubernetes API 服务器配置会话持久性可能会导致出现过量 OpenShift Container Platform 集群应用程序流量,以及过量的在集群中运行的 Kubernetes API。

在负载均衡器的前端和后端配置以下端口:
表 1.7. API 负载均衡器

port后端机器(池成员)internal外部描述
6443Bootstrap 和 control plane.bootstrap 机器初始化集群 control plane 后,您要从负载均衡器中删除 bootstrap 机器。您必须为 API 服务器健康检查探测配置 /readyz 端点。XXKubernetes API 服务器
22623Bootstrap 和 control plane.bootstrap 机器初始化集群 control plane 后,您要从负载均衡器中删除 bootstrap 机器。X机器配置服务器

注意
负载均衡器必须配置为,从 API 服务器关闭 /readyz 端点到从池中移除 API 服务器实例时最多需要 30 秒。在 /readyz 返回错误或健康后的时间范围内,端点必须被删除或添加。每 5 秒或 10 秒探测一次,有两个成功请求处于健康状态,三个成为不健康的请求是经过良好测试的值。

2.应用程序入口负载均衡器 :为应用程序流量从集群外部流提供入口点。OpenShift Container Platform 集群需要正确配置入口路由器。

配置以下条件:

  • 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
  • 建议根据可用选项以及平台上托管的应用程序类型,使用基于连接的或基于会话的持久性。

提示
如果应用程序入口负载均衡器可以看到客户端的真实 IP 地址,启用基于 IP 的会话持久性可以提高使用端到端 TLS 加密的应用程序的性能。

在负载均衡器的前端和后端配置以下端口:
表 1.8. 应用程序入口负载均衡器

port后端机器(池成员)internal外部描述
443默认情况下,运行 Ingress Controller Pod、计算或 worker 的机器。XXHTTPS 流量
80默认情况下,运行 Ingress Controller Pod、计算或 worker 的机器。XXHTTP 流量

注意
如果要部署一个带有零计算节点的三节点集群,Ingress Controller Pod 在 control plane 节点上运行。在三节点集群部署中,您必须配置应用程序入口负载均衡器,将 HTTP 和 HTTPS 流量路由到 control plane 节点。

1.3.6.1. 用户置备的集群的负载均衡器配置示例

复制链接
本节提供了一个满足用户置备集群的负载均衡要求的 API 和应用程序入口负载均衡器配置示例。示例是 HAProxy 负载均衡器的 /etc/haproxy/haproxy.cfg 配置。这个示例不是为选择一个负载平衡解决方案提供建议。

在这个示例中,将相同的负载均衡器用于 Kubernetes API 和应用入口流量。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。

注意
如果您使用 HAProxy 作为负载均衡器,并且 SELinux 设置为 enforcing,您必须通过运行 setsebool -P haproxy_connect_any=1 来确保 HAProxy 服务可以绑定到配置的 TCP 端口。

例 1.3. API 和应用程序入口负载均衡器配置示例

global
  log         127.0.0.1 local2
  pidfile     /var/run/haproxy.pid
  maxconn     4000
  daemon
defaults
  mode                    http
  log                     global
  option                  dontlognull
  option http-server-close
  option                  redispatch
  retries                 3
  timeout http-request    10s
  timeout queue           1m
  timeout connect         10s
  timeout client          1m
  timeout server          1m
  timeout http-keep-alive 10s
  timeout check           10s
  maxconn                 3000
listen api-server-6443 
  bind *:6443 ①
  mode tcp
  option  httpchk GET /readyz HTTP/1.0
  option  log-health-checks
  balance roundrobin
  server bootstrap bootstrap.ocp4.example:6443 verify none check check-ssl inter 10s fall 2 rise 3 backup  ②
  server master0 master0.ocp4.example:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
  server master1 master1.ocp4.example:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
  server master2 master2.ocp4.example:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
listen machine-config-server-22623 
  bind *:22623 ③ 
  mode tcp
  server bootstrap bootstrap.ocp4.example:22623 check inter 1s backup ④
  server master0 master0.ocp4.example:22623 check inter 1s
  server master1 master1.ocp4.example:22623 check inter 1s
  server master2 master2.ocp4.example:22623 check inter 1s
listen ingress-router-443 ⑤
  bind *:443 
  mode tcp
  balance source
  server worker0 worker0.ocp4.example:443 check inter 1s
  server worker1 worker1.ocp4.example:443 check inter 1s
listen ingress-router-80 ⑥
  bind *:80
  mode tcp
  balance source
  server worker0 worker0.ocp4.example:80 check inter 1s
  server worker1 worker1.ocp4.example:80 check inter 1s

①端口 6443 处理 Kubernetes API 流量并指向 control plane 机器。
②④ bootstrap 条目必须在 OpenShift Container Platform 集群安装前就位,且必须在 bootstrap 过程完成后删除它们。
③端口 22623 处理机器配置服务器流量并指向 control plane 机器。
⑤端口 443 处理 HTTPS 流量,并指向运行 Ingress Controller pod 的机器。默认情况下,Ingress Controller Pod 在计算机器上运行。
⑥端口 80 处理 HTTP 流量,并指向运行 Ingress Controller pod 的机器。默认情况下,Ingress Controller Pod 在计算机器上运行。

注意
如果要部署一个带有零计算节点的三节点集群,Ingress Controller Pod 在 control plane 节点上运行。在三节点集群部署中,您必须配置应用程序入口负载均衡器,将 HTTP 和 HTTPS 流量路由到 control plane 节点。
提示
如果您使用 HAProxy 作为负载均衡器,您可以通过在 HAProxy 节点上运行 netstat -nltupe 来检查 haproxy 进程是否在侦听端口 6443、22623、443 和 80。

1.3.6.2. 用户置备的集群的负载均衡器配置【实操】

部署HAProxy负载均衡服务

安装Haproxy
yum -y install haproxy
systemctl enable haproxy --now
添加haproxy.cfg配置文件

cat > /etc/haproxy/haproxy.cfg << EOF
global
  log         127.0.0.1 local2
  pidfile     /var/run/haproxy.pid
  maxconn     4000
  daemon
defaults
  mode                    http
  log                     global
  option                  dontlognull
  option http-server-close
  option                  redispatch
  retries                 3
  timeout http-request    10s
  timeout queue           1m
  timeout connect         10s
  timeout client          1m
  timeout server          1m
  timeout http-keep-alive 10s
  timeout check           10s
  maxconn                 3000
frontend stats
  bind *:1936
  mode            http
  log             global
  maxconn 10
  stats enable
  stats hide-version
  stats refresh 30s
  stats show-node
  stats show-desc Stats for ocp4 cluster
  stats auth admin:ocp4
  stats uri /stats
listen api-server-6443
  bind *:6443
  mode tcp
  option  httpchk GET /readyz HTTP/1.0
  option  log-health-checks
  balance roundrobin
  server master-1 master-1.ocp4.congc:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
  server master-2 master-2.ocp4.congc:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
  server master-3 master-3.ocp4.congc:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
listen machine-config-server-22623
  bind *:22623
  mode tcp
  server master-1 master-1.ocp4.congc:22623 check inter 1s
  server master-2 master-2.ocp4.congc:22623 check inter 1s
  server master-3 master-3.ocp4.congc:22623 check inter 1s
listen ingress-router-443
  bind *:443
  mode tcp
  balance source
  server worker-1 worker-1.ocp4.congc:443 check inter 1s
  server worker-2 worker-2.ocp4.congc:443 check inter 1s
listen ingress-router-80
  bind *:80
  mode tcp
  balance source
  server worker-1 worker-1.ocp4.congc:80 check inter 1s
  server worker-2 worker-2.ocp4.congc:80 check inter 1s
EOF
  1. 重启HAProxy服务
systemctl restart haproxy
  1. 检查HAProxy服务端口
ss -lntp |grep haproxy
LISTEN     0      128          *:9000                     *:*                   users:(("haproxy",pid=5968,fd=5))
LISTEN     0      128          *:6443                     *:*                   users:(("haproxy",pid=5968,fd=7))
LISTEN     0      128          *:80                       *:*                   users:(("haproxy",pid=5968,fd=9))
LISTEN     0      128          *:443                      *:*                   users:(("haproxy",pid=5968,fd=10))
LISTEN     0      128          *:22623                    *:*                   users:(("haproxy",pid=5968,fd=8)) 

4.开放防火墙

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --add-port=6443/tcp --permanent
firewall-cmd --add-port=22623/tcp --permanent
firewall-cmd --reload

5.访问如下页面 http://lb.ocp4.congc:9000/ ,确认每行颜色和下图一致。

集群安装完成之后应该都是绿色,没安装之前是红色。

1.4. 准备用户置备的基础架构

在用户置备的基础架构上安装 OpenShift Container Platform 之前,您必须准备底层基础架构。

本节详细介绍了设置集群基础架构以准备 OpenShift Container Platform 安装所需的高级别步骤。这包括为您的集群节点配置 IP 网络和网络连接,通过防火墙启用所需的端口,以及设置所需的 DNS 和负载均衡基础架构。

准备后,集群基础架构必须满足 带有用户置备的基础架构部分的集群要求。

先决条件

您已参阅 OpenShift Container Platform 4.x Tested Integrations 页面。
您已查看了 具有用户置备基础架构的集群要求部分中详述的基础架构 要求。
流程

1.如果您使用 DHCP 向集群节点提供 IP 网络配置,请配置 DHCP 服务。

  • 将节点的持久 IP 地址添加到您的 DHCP 服务器配置。在您的配置中,将相关网络接口的 MAC 地址与每个节点的预期 IP 地址匹配。
  • 当您使用 DHCP 为集群机器配置 IP 寻址时,机器还通过 DHCP 获取 DNS 服务器信息。定义集群节点通过 DHCP 服务器配置使用的持久性 DNS 服务器地址。

注意
如果没有使用 DHCP 服务,则必须在 RHCOS 安装时为节点提供 IP 网络配置和 DNS 服务器地址。如果要从 ISO 镜像安装,这些参数可作为引导参数传递。如需有关静态 IP 置备和高级网络选项的更多信息,请参阅 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程 部分。

  • 在 DHCP 服务器配置中定义集群节点的主机名。有关 主机名注意事项的详情,请参阅通过 DHCP 设置集群节点 主机名部分。

注意
如果没有使用 DHCP 服务,集群节点可以通过反向 DNS 查找来获取其主机名。

2.确保您的网络基础架构提供集群组件之间所需的网络连接。有关 要求的详情,请参阅用户置备的基础架构 的网络要求部分。
3.将防火墙配置为启用 OpenShift Container Platform 集群组件进行通信所需的端口。如需有关所需端口的详细信息,请参阅用户置备的基础架构 部分的网络要求。

重要
默认情况下,OpenShift Container Platform 集群可以访问端口 1936,因为每个 control plane 节点都需要访问此端口。

避免使用 Ingress 负载均衡器公开此端口,因为这样做可能会导致公开敏感信息,如统计信息和指标(与 Ingress Controller 相关的统计信息和指标)。

4.为集群设置所需的 DNS 基础架构。

  • 为 Kubernetes API、应用程序通配符、bootstrap 机器、control plane 机器和计算机器配置 DNS 名称解析。
  • 为 Kubernetes API、bootstrap 机器、control plane 机器和计算机器配置反向 DNS 解析。

如需有关 OpenShift Container Platform DNS 要求的更多信息,请参阅用户置备 DNS 要求部分。

5.验证您的 DNS 配置。

  • 从安装节点,针对 Kubernetes API 的记录名称、通配符路由和集群节点运行 DNS 查找。验证响应中的 IP 地址是否与正确的组件对应。
    从安装节点,针对负载均衡器和集群节点的 IP 地址运行反向 DNS 查找。验证响应中的记录名称是否与正确的组件对应。

  • 有关详细的 DNS 验证步骤,请参阅用户置备的基础架构 验证 DNS 解析部分。

6.置备所需的 API 和应用程序入口负载平衡基础架构。有关 要求的更多信息,请参阅用户置备的基础架构的负载平衡 要求部分。
注意
某些负载平衡解决方案要求在初始化负载平衡之前,对群集节点进行 DNS 名称解析。

1.5. 验证用户置备的基础架构的 DNS 解析

您可以在在用户置备的基础架构上安装 OpenShift Container Platform 前验证 DNS 配置。
重要
本节中详述的验证步骤必须在安装集群前成功。

先决条件
已为您的用户置备的基础架构配置了所需的 DNS 记录。

流程

1.从安装节点,针对 Kubernetes API 的记录名称、通配符路由和集群节点运行 DNS 查找。验证响应中包含的 IP 地址是否与正确的组件对应。

1.1 对 Kubernetes API 记录名称执行查询。检查结果是否指向 API 负载均衡器的 IP 地址:

dig +noall +answer @<nameserver_ip> api.<cluster_name>.<base_domain>

将 <nameserver_ip> 替换为 nameserver 的 IP 地址,<cluster_name> 替换为您的集群名称,<base_domain> 替换为您的基本域名。
输出示例

api.ocp4.example.		604800	IN	A	192.168.1.5

1.2 对 Kubernetes 内部 API 记录名称执行查询。检查结果是否指向 API 负载均衡器的 IP 地址:

dig +noall +answer @<nameserver_ip> api-int.<cluster_name>.<base_domain>

输出示例

api-int.ocp4.example.		604800	IN	A	192.168.1.5

1.3 测试 *.apps.<cluster_name>.<base_domain> DNS 通配符查找示例。所有应用程序通配符查询都必须解析为应用程序入口负载均衡器的 IP 地址:

dig +noall +answer @<nameserver_ip> random.apps.<cluster_name>.<base_domain>

输出示例

random.apps.ocp4.example.		604800	IN	A	192.168.1.5

注意
在示例中,将相同的负载均衡器用于 Kubernetes API 和应用程序入口流量。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。

您可以使用另一个通配符值替换 random。例如,您可以查询到 OpenShift Container Platform 控制台的路由:

dig +noall +answer @<nameserver_ip> console-openshift-console.apps.<cluster_name>.<base_domain>

输出示例

console-openshift-console.apps.ocp4.example. 604800 IN	A 192.168.1.5

1.4 针对 bootstrap DNS 记录名称运行查询。检查结果是否指向 bootstrap 节点的 IP 地址:

dig +noall +answer @<nameserver_ip> bootstrap.<cluster_name>.<base_domain>

输出示例

bootstrap.ocp4.example.		604800	IN	A	192.168.1.96

1.5 使用此方法对 control plane 和计算节点的 DNS 记录名称执行查找。检查结果是否与每个节点的 IP 地址对应。

2.从安装节点,针对负载均衡器和集群节点的 IP 地址运行反向 DNS 查找。验证响应中包含的记录名称是否与正确的组件对应。

2.1 对 API 负载均衡器的 IP 地址执行反向查找。检查响应是否包含 Kubernetes API 和 Kubernetes 内部 API 的记录名称:

dig +noall +answer @<nameserver_ip> -x 192.168.1.5

输出示例

5.1.168.192.in-addr.arpa. 604800	IN	PTR	api-int.ocp4.example.①
5.1.168.192.in-addr.arpa. 604800	IN	PTR	api.ocp4.example. ②

① 为 Kubernetes 内部 API 提供记录名称。
② 为 Kubernetes API 提供记录名称。

注意
OpenShift Container Platform 应用程序通配符不需要 PTR 记录。针对应用程序入口负载均衡器的 IP 地址解析反向 DNS 解析不需要验证步骤。

2.2 对 bootstrap 节点的 IP 地址执行反向查找。检查结果是否指向 bootstrap 节点的 DNS 记录名称:

dig +noall +answer @<nameserver_ip> -x 192.168.1.96

输出示例

96.1.168.192.in-addr.arpa. 604800	IN	PTR	bootstrap.ocp4.example.

3.使用此方法对 control plane 和计算节点的 IP 地址执行反向查找。检查结果是否与每个节点的 DNS 记录名称对应。

1.6 为集群节点 SSH 访问生成密钥对

在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core 用户的 ~/.ssh/authorized_keys 列表中,这将启用免密码身份验证。

将密钥传递给节点后,您可以使用密钥对作为用户 核心 通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。

如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather 命令还需要在集群节点上设置 SSH 公钥。

重要
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。

注意
您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对。

流程

  1. 如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
ssh-keygen -t ed25519 -N '' -f <path>/<file_name>

① 指定新 SSH 密钥的路径和文件名,如 ~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于 ~/.ssh 目录中。

注意
如果您计划在 x86_64、ppc64le 和 s390x 架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用 ed25519 算法的密钥。相反,创建一个使用 rsa 或 ecdsa 算法的密钥。

2.查看公共 SSH 密钥:

cat <path>/<file_name>.pub

例如,运行以下命令来查看 ~/.ssh/id_ed25519.pub 公钥:

cat ~/.ssh/id_ed25519.pub

3.将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用 ./openshift-install gather 命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。

注意
在某些发行版中,自动管理默认 SSH 私钥身份,如 ~/.ssh/id_rsa 和 ~/.ssh/id_dsa。

3.1 如果 ssh-agent 进程尚未为您的本地用户运行,请将其作为后台任务启动:

eval "$(ssh-agent -s)"

输出示例

Agent pid 31874

注意

  • 如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。

将 SSH 私钥添加到 ssh-agent :

ssh-add <path>/<file_name>

指定 SSH 私钥的路径和文件名,如 ~/.ssh/id_ed25519.pub
输出示例

Identity added: /home/<you>/<path>/<file_name> (<computer_name>)

后续步骤

安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。如果在您置备的基础架构上安装集群,则必须为安装程序提供密钥。

1.6.1 为集群节点 SSH 访问生成密钥对【实操】

在helper机器上执行

# 创建OCP安装目录 
mkdir -p /opt/install/ocp/


# 生成ssh-key文件,用于登录bootstrap和master节点
ssh-keygen -t rsa -b 4096 -N '' -f /opt/install/id_rsa

@ 启动ssh-agent
eval "$(ssh-agent -s)"
ssh-add /opt/install/id_rsa

1.7. 获取安装程序

在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。

先决条件

您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。

流程

1.访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
2.选择您的基础架构供应商。
3.进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。

重要

  • 安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。

重要

  • 删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。

4.提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:

tar -xvf openshift-install-linux.tar.gz

5.从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。

1.7.1.获取安装程序【实操】

在helper机器上执行

wget https://mirror.openshift/pub/openshift-v4/clients/ocp/4.12.64/openshift-install-linux-4.12.64.tar.gz \
  -P /data/OCP-4.12.64/ocp/ocp-installer
 
ll -h /data/OCP-4.12.64/ocp/ocp-installer

total 338M
-rw-r--r--. 1 root root 338M Aug 27 23:34 openshift-install-linux-4.12.64.tar.gz


tar zxvf openshift-install-linux-4.12.64.tar.gz

mv openshift-install /usr/local/bin

1.8. 通过下载二进制文件安装 OpenShift CLI

您可以安装 OpenShift CLI(oc)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc。
重要
如果安装了旧版本的 oc,则无法使用 OpenShift Container Platform 4.12 中的所有命令。下载并安装新版本的 oc。

在 Linux 上安装 OpenShift CLI

您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc)二进制文件。

流程

1.导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
2.从 产品变体 下拉列表中选择架构。
3.从 版本 下拉列表中选择适当的版本。
4.点 OpenShift v4.12 Linux Client 条目旁的 Download Now 来保存文件。
5.解包存档:

$ tar xvf <file>

将 oc 二进制文件放到 PATH 中的目录中。

6.要查看您的 PATH,请执行以下命令:

$ echo $PATH

验证

安装 OpenShift CLI 后,可以使用 oc 命令:

$ oc <command>

在 Windows 上安装 OpenShift CLI

您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc)二进制文件。

1.导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
2.从 版本 下拉列表中选择适当的版本。
3.点 **OpenShift v4.12 Windows Client ** 条目旁的 Download Now 来保存文件。
4.使用 ZIP 程序解压存档。
5.将 oc 二进制文件移到 PATH 中的目录中。

要查看您的 PATH,请打开命令提示并执行以下命令:

C:\> path

验证

  • 安装 OpenShift CLI 后,可以使用 oc 命令:
C:\> oc <command>

在 macOS 上安装 OpenShift CLI

您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc)二进制文件。

1.导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
2.从 版本 下拉列表中选择适当的版本。
3.点 OpenShift v4.12 macOS Client 条目旁的 Download Now 来保存文件。
4.使用 ZIP 程序解压存档。
5.将 oc 二进制文件移到 PATH 中的目录中。

要查看您的 PATH,请打开命令提示并执行以下命令:

echo $PATH

验证

  • 安装 OpenShift CLI 后,可以使用 oc 命令:
oc <command>

1.8.1. 通过下载二进制文件安装 OpenShift CLI【实操】

我们选择在linux中安装
操作节点:helper

wget https://mirror.openshift/pub/openshift-v4/clients/ocp/4.12.64/openshift-client-linux-4.12.64.tar.gz \
  -P /data/OCP-4.12.64/ocp/ocp-client
 
tar -xzf /data/OCP-4.12.64/ocp/ocp-client/openshift-client-linux-4.12.64.tar.gz -C /usr/local/sbin/
 
oc version
Client Version: 4.12.64
Kustomize Version: v4.5.7

1.9. 手动创建安装配置文件

安装集群要求您手动创建安装配置文件。

先决条件

您在本地机器上有一个 SSH 公钥来提供给安装程序。该密钥将用于在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程

1.创建一个安装目录来存储所需的安装资产:

mkdir <installation_directory>

重要
您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。

2.自定义提供的 install-config.yaml 文件模板示例,并将其保存在 <installation_directory> 中。
注意
此配置文件必须命名为 install-config.yaml。

3.备份 install-config.yaml 文件,以便您可以使用它安装多个集群。

重要
install-config.yaml 文件会在安装过程的下一步中使用。现在必须备份它。

1.9.1. 其他平台的 install-config.yaml 文件示例

您可以自定义 install-config.yaml 文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。

apiVersion: v1
baseDomain: example  ①
compute:- hyperthreading: Enabled ③
  name: worker
  replicas: 0 ④
controlPlane:hyperthreading: Enabled ⑥
  name: master
  replicas: 3 ⑦
metadata:
  name: test ⑧
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14 ⑨
    hostPrefix: 23 ⑩
  networkType: OVNKubernetes ⑪
  serviceNetwork:- 172.30.0.0/16
platform:
  none: {}fips: false ⑭
pullSecret: '{"auths": ...}' ⑮
sshKey: 'ssh-ed25519 AAAA...' ⑯


集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
②⑤
controlPlane 部分是一个单个映射,但 compute 部分是一系列映射。为满足不同数据结构的要求,compute 部分的第一行必须以连字符 - 开头,controlPlane 部分 的第一行则不以连字符开头。仅使用一个 control plane 池。
③⑥
指定要启用或禁用并发多线程(SMT)还是超线程。默认情况下,启用 SMT 可提高机器中内核的性能。您可以通过将 参数值设置为 Disabled 来禁用它。如果禁用 SMT,则必须在所有集群机器中禁用它;这包括 control plane 和计算机器。
注意
默认启用并发多线程(SMT)。如果您的 BIOS 设置中没有启用 SMT,超线程 参数无效。

重要
如果您禁用 超线程,无论是在 BIOS 中,还是在 install-config.yaml 文件中,请确保您的容量规划考虑机器性能显著降低的情况。


在用户置备的基础架构上安装 OpenShift Container Platform 时,必须将这个值设置为 0。在安装程序置备的安装中,参数控制集群为您创建和管理的计算机器数量。在用户置备的安装中,您必须在完成集群安装前手动部署计算机器。
注意
如果要安装一个三节点集群,在安装 Red Hat Enterprise Linux CoreOS(RHCOS)机器时不要部署任何计算机器。


您添加到集群的 control plane 机器数量。由于集群使用这些值作为集群中的 etcd 端点数量,所以该值必须与您部署的 control plane 机器数量匹配。

您在 DNS 记录中指定的集群名称。

从中分配 Pod IP 地址的 IP 地址块。此块不得与现有物理网络重叠。这些 IP 地址用于 pod 网络。如果需要从外部网络访问 pod,您必须配置负载均衡器和路由器来管理流量。
注意
类 E CIDR 范围被保留以供以后使用。要使用 Class E CIDR 范围,您必须确保您的网络环境接受 Class E CIDR 范围内的 IP 地址。

分配给每个节点的子网前缀长度。例如,如果 hostPrefix 设为 23,则每个节点从 given cidr 中分配 a /23 子网,这样就能有 510(2^(32 - 23)- 2)个 pod IP 地址。如果需要从外部网络访问节点,请配置负载均衡器和路由器来管理流量。

要安装的集群网络插件。支持的值有 OVNKubernetes 和 OpenShiftSDN。默认值为 OVNKubernetes。

用于服务 IP 地址的 IP 地址池。您只能输入一个 IP 地址池。此块不得与现有物理网络重叠。如果您需要从外部网络访问服务,请配置负载均衡器和路由器来管理流量。

您必须将平台设置为 none。您无法为您的平台提供额外的平台配置变量。
重要
使用平台类型 none 安装的集群无法使用一些功能,如使用 Machine API 管理计算机器。即使附加到集群的计算机器安装在通常支持该功能的平台上,也会应用这个限制。在安装后无法更改此参数。

是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。
重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在 x86_64、ppc64le 和 s390x 架构的 OpenShift Container Platform 部署中才支持使用 FIPS 验证的或Modules In Process 加密库。


Red Hat OpenShift Cluster Manager 中的 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。

Red Hat Enterprise Linux CoreOS(RHCOS)中 core 用户的 SSH 公钥。
注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

1.9.2. 在安装过程中配置集群范围的代理

生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml 文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。

先决条件

您有一个现有的 install-config.yaml 文件。
您检查了集群需要访问的站点,并确定它们中的任何站点是否需要绕过代理。默认情况下,所有集群出口流量都经过代理,包括对托管云供应商 API 的调用。如果需要,您将在 Proxy 对象的 spec.noProxy 字段中添加站点来绕过代理。

注意
Proxy 对象 status.noProxy 字段使用安装配置中的 networking.machineNetwork[].cidr、networking.clusterNetwork[].cidr 和 networking.serviceNetwork[] 字段的值填充。

对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,Proxy 对象 status.noProxy 字段也会使用实例元数据端点填充(169.254.169.254)。

流程

1.编辑 install-config.yaml 文件并添加代理设置。例如:

apiVersion: v1
baseDomain: my.domain
proxy:
  httpProxy: http://<username>:<pswd>@<ip>:<port>httpsProxy: https://<username>:<pswd>@<ip>:<port>noProxy: example ③
additionalTrustBundle: |-----BEGIN CERTIFICATE-----
    <MY_TRUSTED_CA_CERT>
    -----END CERTIFICATE-----
additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle>

①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳


用于创建集群外 HTTP 连接的代理 URL。URL 方案必须是 http。

用于创建集群外 HTTPS 连接的代理 URL。

要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。在域前面加上 . 以仅匹配子域。例如,.y 匹配 x.y,但不匹配 y。使用 * 绕过所有目的地的代理。

如果提供,安装程序会在 openshift-config 命名空间中生成名为 user-ca-bundle 的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建 trusted-ca-bundle 配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并, Proxy 对象的 trustedCA 字段中也会引用此配置映射。additionalTrustBundle 字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。

可选:决定 Proxy 对象的配置以引用 trustedCA 字段中 user-ca-bundle 配置映射的策略。允许的值是 Proxyonly 和 Always。仅在配置了 http/https 代理时,使用 Proxyonly 引用 user-ca-bundle 配置映射。使用 Always 始终引用 user-ca-bundle 配置映射。默认值为 Proxyonly。
注意
安装程序不支持代理的 readinessEndpoints 字段。

注意
如果安装程序超时,重启并使用安装程序的 wait-for 命令完成部署。例如:

$ ./openshift-install wait-for install-complete --log-level debug

2.保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec。

注意
只支持名为 cluster 的 Proxy 对象,且无法创建额外的代理。

1.9.3. 配置三节点集群

另外,您可以在只由三台 control plane 机器组成的裸机集群中部署零台计算机器。这为集群管理员和开发人员提供了更小、效率更高的集群,用于测试、开发和生产。

在三节点 OpenShift Container Platform 环境中,三台 control plane 机器可以调度,这意味着应用程序工作负载被调度到它们上运行。

先决条件

您有一个现有的 install-config.yaml 文件。
流程

确保 install-config.yaml 文件中的计算副本数量设置为 0,如以下 计算 小节所示:

compute:
- name: worker
  platform: {}
  replicas: 0

注意
在用户置备的基础架构上安装 OpenShift Container Platform 时,无论您要部署的计算机器数量有多少,您必须将计算机器的 replicas 参数值设置为 0。在安装程序置备的安装中,参数控制集群为您创建和管理的计算机器数量。这不适用于手动部署计算机器的用户置备安装。

对于三节点集群安装,请按照以下步骤执行:

如果要部署一个带有零计算节点的三节点集群,Ingress Controller Pod 在 control plane 节点上运行。在三节点集群部署中,您必须配置应用程序入口负载均衡器,将 HTTP 和 HTTPS 流量路由到 control plane 节点。如需更多信息,请参阅用户置备的基础架构的负载平衡要求 部分。
在以下步骤中创建 Kubernetes 清单文件时,请确保 <installation_directory>/manifests/cluster-scheduler-02-config.yml 文件中的 mastersSchedulable 参数被设置为 true。这可让应用程序工作负载在 control plane 节点上运行。
在创建 Red Hat Enterprise Linux CoreOS(RHCOS)机器时,不要部署任何计算节点。

本文标签: 教程 更新中 OpenShift