×

先决条件

在 RHOSP 上安装 OpenShift Container Platform 的资源指南

为了支持 OpenShift Container Platform 安装,您的 Red Hat OpenStack Platform (RHOSP) 配额必须满足以下要求

表 1. RHOSP 上默认 OpenShift Container Platform 集群的推荐资源
资源

浮动 IP 地址

3

端口

15

路由器

1

子网

1

RAM

88 GB

vCPU

22

卷存储

275 GB

实例

7

安全组

3

安全组规则

60

服务器组

2 个 - 每个机器池中每个附加可用区再加 1 个

集群可能可以使用少于推荐资源运行,但其性能无法保证。

如果 RHOSP 对象存储 (Swift) 可用且由具有swiftoperator角色的用户帐户操作,则将其用作 OpenShift Container Platform 镜像注册表的默认后端。在这种情况下,卷存储要求为 175 GB。Swift 空间需求因镜像注册表的大小而异。

默认情况下,您的安全组和安全组规则配额可能较低。如果遇到问题,请以管理员身份运行openstack quota set --secgroups 3 --secgroup-rules 60 <project> 来增加它们。

OpenShift Container Platform 部署包括控制平面机器、计算机器和引导机器。

控制平面机器

默认情况下,OpenShift Container Platform 安装过程会创建三个控制平面机器。

每台机器需要:

  • RHOSP 配额中的一个实例

  • RHOSP 配额中的一个端口

  • 具有至少 16 GB 内存和 4 个 vCPU 的规格

  • RHOSP 配额中至少 100 GB 的存储空间

计算机器

默认情况下,OpenShift Container Platform 安装过程会创建三个计算机器。

每台机器需要:

  • RHOSP 配额中的一个实例

  • RHOSP 配额中的一个端口

  • 具有至少 8 GB 内存和 2 个 vCPU 的规格

  • RHOSP 配额中至少 100 GB 的存储空间

计算机器托管您在 OpenShift Container Platform 上运行的应用程序;尽量运行尽可能多的应用程序。

引导机器

在安装过程中,会临时配置引导机器以启动控制平面。生产控制平面准备就绪后,将取消配置引导机器。

引导机器需要:

  • RHOSP 配额中的一个实例

  • RHOSP 配额中的一个端口

  • 具有至少 16 GB 内存和 4 个 vCPU 的规格

  • RHOSP 配额中至少 100 GB 的存储空间

用户配置基础设施的负载均衡要求

在安装 OpenShift Container Platform 之前,您可以预配自己的 API 和应用程序入口负载均衡基础设施以代替默认的内部负载均衡解决方案。在生产环境中,您可以分别部署 API 和应用程序入口负载均衡器,以便您可以隔离地扩展每个负载均衡器基础设施。

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

负载均衡基础设施必须满足以下要求

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

    • 仅限第 4 层负载均衡。这可以称为原始 TCP 或 SSL 直通模式。

    • 无状态负载均衡算法。选项因负载均衡器实现而异。

    不要为 API 负载均衡器配置会话持久性。为 Kubernetes API 服务器配置会话持久性可能会导致 OpenShift Container Platform 集群和集群内运行的 Kubernetes API 的应用程序流量过多而导致性能问题。

    在负载均衡器的前面和后面配置以下端口:

    表 2. API 负载均衡器
    端口 后端机器(池成员) 内部 外部 描述

    6443

    引导程序和控制平面。引导机器初始化集群控制平面后,您需要从负载均衡器中移除引导机器。您必须为 API 服务器运行状况检查探针配置/readyz端点。

    X

    X

    Kubernetes API 服务器

    22623

    引导程序和控制平面。引导机器初始化集群控制平面后,您需要从负载均衡器中移除引导机器。

    X

    机器配置服务器

    负载均衡器必须配置为从 API 服务器关闭/readyz端点到从池中移除 API 服务器实例的时间最多为 30 秒。在/readyz返回错误或变得健康的时间范围内,必须已移除或添加了端点。探测每 5 秒或 10 秒一次,两次成功的请求才能变得健康,三次才能变得不健康,这些都是经过良好测试的值。

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

    配置以下条件:

    • 仅限第 4 层负载均衡。这可以称为原始 TCP 或 SSL 直通模式。

    • 建议根据可用选项和将在平台上托管的应用程序类型,使用基于连接或基于会话的持久性。

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

    在负载均衡器的前面和后面配置以下端口:

    表 3. 应用程序入口负载均衡器
    端口 后端机器(池成员) 内部 外部 描述

    443

    默认情况下运行 Ingress Controller Pod 的机器,计算或工作程序。

    X

    X

    HTTPS 流量

    80

    默认情况下运行 Ingress Controller Pod 的机器,计算或工作程序。

    X

    X

    HTTP 流量

    如果您部署的是具有零计算节点的三节点集群,则 Ingress Controller Pod 将运行在控制平面节点上。在三节点集群部署中,您必须配置应用程序 Ingress 负载均衡器以将 HTTP 和 HTTPS 流量路由到控制平面节点。

使用用户管理的负载均衡器部署的集群的负载均衡器配置示例

本节提供了一个 API 和应用程序 Ingress 负载均衡器配置示例,该配置满足使用用户管理的负载均衡器部署的集群的负载均衡要求。该示例是一个用于 HAProxy 负载均衡器的 /etc/haproxy/haproxy.cfg 配置文件。本示例并非旨在提供有关选择一种负载均衡解决方案而不是另一种解决方案的建议。

在本例中,同一负载均衡器用于 Kubernetes API 和应用程序入口流量。在生产环境中,您可以分别部署 API 和应用程序入口负载均衡器,以便您可以独立地扩展每个负载均衡器的基础设施。

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

API 和应用程序 Ingress 负载均衡器配置示例
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 (1)
  bind *:6443
  mode tcp
  option  httpchk GET /readyz HTTP/1.0
  option  log-health-checks
  balance roundrobin
  server bootstrap bootstrap.ocp4.example.com:6443 verify none check check-ssl inter 10s fall 2 rise 3 backup (2)
  server master0 master0.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
  server master1 master1.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
  server master2 master2.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3
listen machine-config-server-22623 (3)
  bind *:22623
  mode tcp
  server bootstrap bootstrap.ocp4.example.com:22623 check inter 1s backup (2)
  server master0 master0.ocp4.example.com:22623 check inter 1s
  server master1 master1.ocp4.example.com:22623 check inter 1s
  server master2 master2.ocp4.example.com:22623 check inter 1s
listen ingress-router-443 (4)
  bind *:443
  mode tcp
  balance source
  server compute0 compute0.ocp4.example.com:443 check inter 1s
  server compute1 compute1.ocp4.example.com:443 check inter 1s
listen ingress-router-80 (5)
  bind *:80
  mode tcp
  balance source
  server compute0 compute0.ocp4.example.com:80 check inter 1s
  server compute1 compute1.ocp4.example.com:80 check inter 1s
1 端口 6443 处理 Kubernetes API 流量并指向控制平面机器。
2 引导条目必须在 OpenShift Container Platform 集群安装之前到位,并且必须在引导过程完成后将其移除。
3 端口 22623 处理机器配置服务器流量并指向控制平面机器。
4 端口 443 处理 HTTPS 流量并指向运行 Ingress Controller Pod 的机器。默认情况下,Ingress Controller Pod 运行在计算机器上。
5 端口 80 处理 HTTP 流量并指向运行 Ingress Controller Pod 的机器。默认情况下,Ingress Controller Pod 运行在计算机器上。

如果您部署的是具有零计算节点的三节点集群,则 Ingress Controller Pod 将运行在控制平面节点上。在三节点集群部署中,您必须配置应用程序 Ingress 负载均衡器以将 HTTP 和 HTTPS 流量路由到控制平面节点。

如果您使用 HAProxy 作为负载均衡器,则可以通过在 HAProxy 节点上运行 netstat -nltupe 来检查 haproxy 进程是否正在监听端口 64432262344380

OpenShift Container Platform 的互联网访问

在 OpenShift Container Platform 4.17 中,您需要访问互联网才能安装集群。

您必须具有互联网访问权限才能:

  • 访问 OpenShift 集群管理器 下载安装程序并执行订阅管理。如果集群具有互联网访问权限并且您没有禁用遥测,则该服务会自动授权您的集群。

  • 访问 Quay.io 获取安装集群所需的软件包。

  • 获取执行集群更新所需的软件包。

如果您的集群无法直接访问互联网,则可以在您配置的某些类型的基础设施上执行受限网络安装。在此过程中,您将下载所需的内容并使用它来填充包含安装软件包的镜像注册表。对于某些安装类型,您安装集群的环境将不需要互联网访问。在更新集群之前,请更新镜像注册表的内容。

在 RHOSP 上启用 Swift

Swift 由具有 swiftoperator 角色的用户帐户操作。在运行安装程序之前,请将该角色添加到帐户。

如果 Red Hat OpenStack Platform (RHOSP) 对象存储服务(通常称为 Swift)可用,则 OpenShift Container Platform 将其用作镜像注册表存储。如果不可用,则安装程序将依赖于 RHOSP 块存储服务(通常称为 Cinder)。

如果 Swift 存在并且您想使用它,则必须启用对它的访问。如果它不存在,或者如果您不想使用它,请跳过本节。

RHOSP 17 将 Ceph RGW 的 rgw_max_attr_size 参数设置为 256 个字符。此设置会导致将容器镜像上传到 OpenShift Container Platform 注册表的问题。您必须将 rgw_max_attr_size 的值设置为至少 1024 个字符。

安装前,请检查您的 RHOSP 部署是否受此问题影响。如果是,请重新配置 Ceph RGW。

先决条件
  • 您在目标环境中拥有 RHOSP 管理员帐户。

  • Swift 服务已安装。

  • Ceph RGW 上,启用了 account in url 选项。

步骤

要在 RHOSP 上启用 Swift

  1. 作为 RHOSP CLI 中的管理员,将 swiftoperator 角色添加到将访问 Swift 的帐户。

    $ openstack role add --user <user> --project <project> swiftoperator

您的 RHOSP 部署现在可以使用 Swift 作为镜像注册表。

配置在 RHOSP 上运行的集群上的具有自定义存储的镜像注册表

在 Red Hat OpenStack Platform (RHOSP) 上安装集群后,您可以使用特定可用区中的 Cinder 卷作为注册表存储。

步骤
  1. 创建一个 YAML 文件,指定要使用的存储类和可用区。例如:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: custom-csi-storageclass
    provisioner: cinder.csi.openstack.org
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      availability: <availability_zone_name>

    OpenShift Container Platform 不会验证您选择的可用区是否存在。在应用配置之前,请验证可用区的名称。

  2. 从命令行应用配置:

    $ oc apply -f <storage_class_file_name>
    示例输出:
    storageclass.storage.k8s.io/custom-csi-storageclass created
  3. 创建一个 YAML 文件,指定使用您的存储类和 openshift-image-registry 命名空间的持久卷声明 (PVC)。例如:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: csi-pvc-imageregistry
      namespace: openshift-image-registry (1)
      annotations:
        imageregistry.openshift.io: "true"
    spec:
      accessModes:
      - ReadWriteOnce
      volumeMode: Filesystem
      resources:
        requests:
          storage: 100Gi (2)
      storageClassName: <your_custom_storage_class> (3)
    1 进入 openshift-image-registry 命名空间。此命名空间允许集群镜像注册表操作员使用 PVC。
    2 可选:调整卷大小。
    3 输入您创建的存储类的名称。
  4. 从命令行应用配置:

    $ oc apply -f <pvc_file_name>
    示例输出:
    persistentvolumeclaim/csi-pvc-imageregistry created
  5. 将镜像注册表配置中的原始持久卷声明替换为新的声明。

    $ oc patch configs.imageregistry.operator.openshift.io/cluster --type 'json' -p='[{"op": "replace", "path": "/spec/storage/pvc/claim", "value": "csi-pvc-imageregistry"}]'
    示例输出:
    config.imageregistry.operator.openshift.io/cluster patched

    在接下来的几分钟内,配置将更新。

验证

要确认注册表是否正在使用您定义的资源:

  1. 验证 PVC 声明值是否与您在 PVC 定义中提供的名称相同。

    $ oc get configs.imageregistry.operator.openshift.io/cluster -o yaml
    示例输出:
    ...
    status:
        ...
        managementState: Managed
        pvc:
          claim: csi-pvc-imageregistry
    ...
  2. 验证 PVC 的状态是否为 Bound

    $ oc get pvc -n openshift-image-registry csi-pvc-imageregistry
    示例输出:
    NAME                   STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS             AGE
    csi-pvc-imageregistry  Bound    pvc-72a8f9c9-f462-11e8-b6b6-fa163e18b7b5   100Gi      RWO            custom-csi-storageclass  11m

验证外部网络访问

OpenShift Container Platform 的安装过程需要访问外部网络。您必须为此提供一个外部网络值,否则部署将失败。在开始此过程之前,请验证 Red Hat OpenStack Platform (RHOSP) 中是否存在具有外部路由器类型的网络。

步骤
  1. 使用 RHOSP CLI 验证“外部”网络的名称和 ID。

    $ openstack network list --long -c ID -c Name -c "Router Type"
    示例输出:
    +--------------------------------------+----------------+-------------+
    | ID                                   | Name           | Router Type |
    +--------------------------------------+----------------+-------------+
    | 148a8023-62a7-4672-b018-003462f8d7dc | public_network | External    |
    +--------------------------------------+----------------+-------------+

网络列表中会显示具有外部路由器类型的网络。如果至少不存在一个,请参见 创建默认浮动 IP 网络创建默认提供商网络

如果外部网络的 CIDR 范围与默认网络范围之一重叠,则必须在启动安装过程之前更改install-config.yaml文件中的匹配网络范围。

默认网络范围是:

网络 范围

machineNetwork

10.0.0.0/16

serviceNetwork

172.30.0.0/16

clusterNetwork

10.128.0.0/14

如果安装程序发现多个具有相同名称的网络,它将随机设置其中一个。为避免此行为,请在 RHOSP 中为资源创建唯一名称。

如果启用了 Neutron trunk 服务插件,则默认情况下会创建一个 trunk 端口。更多信息,请参见 Neutron trunk 端口

定义安装程序参数

OpenShift Container Platform 安装程序依赖于一个名为clouds.yaml的文件。该文件描述 Red Hat OpenStack Platform (RHOSP) 配置参数,包括项目名称、登录信息和授权服务 URL。

步骤
  1. 创建clouds.yaml文件

    • 如果您的 RHOSP 发行版包含 Horizon Web UI,请在其中生成clouds.yaml文件。

      请记住向auth字段添加密码。您也可以将密钥保存在 clouds.yaml分开的文件中

    • 如果您的 RHOSP 发行版不包含 Horizon Web UI,或者您不想使用 Horizon,请自行创建该文件。有关clouds.yaml的详细信息,请参阅 RHOSP 文档中的 配置文件

      clouds:
        shiftstack:
          auth:
            auth_url: http://10.10.14.42:5000/v3
            project_name: shiftstack
            username: <username>
            password: <password>
            user_domain_name: Default
            project_domain_name: Default
        dev-env:
          region_name: RegionOne
          auth:
            username: <username>
            password: <password>
            project_name: 'devonly'
            auth_url: 'https://10.10.14.22:5001/v2.0'
  2. 如果您的 RHOSP 安装使用自签名证书颁发机构 (CA) 证书进行端点身份验证

    1. 将证书颁发机构文件复制到您的机器。

    2. cacerts密钥添加到clouds.yaml文件。该值必须是 CA 证书的绝对、非 root 可访问路径。

      clouds:
        shiftstack:
          ...
          cacert: "/etc/pki/ca-trust/source/anchors/ca.crt.pem"

      使用自定义 CA 证书运行安装程序后,您可以通过编辑cloud-provider-config密钥映射中ca-cert.pem密钥的值来更新证书。在命令行上运行:

      $ oc edit configmap -n openshift-config cloud-provider-config
  3. clouds.yaml文件放置在以下位置之一:

    1. OS_CLIENT_CONFIG_FILE环境变量的值

    2. 当前目录

    3. Unix 特定的用户配置目录,例如~/.config/openstack/clouds.yaml

    4. Unix 特定的站点配置目录,例如/etc/openstack/clouds.yaml

      安装程序将按此顺序搜索clouds.yaml

设置 OpenStack 云控制器管理器选项

您可以选择编辑集群的 OpenStack 云控制器管理器 (CCM) 配置。此配置控制 OpenShift Container Platform 如何与 Red Hat OpenStack Platform (RHOSP) 交互。

有关配置参数的完整列表,请参阅“在 OpenStack 上安装”文档中的“OpenStack 云控制器管理器参考指南”页面。

步骤
  1. 如果您尚未为集群生成清单文件,请运行以下命令生成它们:

    $ openshift-install --dir <destination_directory> create manifests
  2. 在文本编辑器中,打开云提供商配置清单文件。例如:

    $ vi openshift/manifests/cloud-provider-config.yaml
  3. 根据 CCM 参考指南修改选项。

    配置 Octavia 进行负载均衡是一个常见的情况。例如:

    #...
    [LoadBalancer]
    lb-provider = "amphora" (1)
    floating-network-id="d3deb660-4190-40a3-91f1-37326fe6ec4a" (2)
    create-monitor = True (3)
    monitor-delay = 10s (4)
    monitor-timeout = 10s (5)
    monitor-max-retries = 1 (6)
    #...
    1 此属性设置负载均衡器使用的 Octavia 提供程序。它接受"ovn""amphora"作为值。如果您选择使用 OVN,还必须将lb-method设置为SOURCE_IP_PORT
    2 如果您想将多个外部网络与您的集群一起使用,则需要此属性。云提供程序将在此处指定的网络上创建浮动 IP 地址。
    3 此属性控制云提供程序是否为 Octavia 负载均衡器创建运行状况监视器。设置为True以创建运行状况监视器。从 RHOSP 16.2 开始,此功能仅适用于 Amphora 提供程序。
    4 此属性设置监视端点的频率。该值必须采用time.ParseDuration()格式。如果create-monitor属性的值为True,则需要此属性。
    5 此属性设置监视请求在超时前打开的时间。该值必须采用time.ParseDuration()格式。如果create-monitor属性的值为True,则需要此属性。
    6 此属性定义在将负载均衡器标记为在线之前需要多少个成功的监视请求。该值必须是整数。如果create-monitor属性的值为True,则需要此属性。

    在保存更改之前,请验证文件的结构是否正确。如果属性未放置在适当的部分,则集群可能会失败。

    如果您使用的服务的.spec.externalTrafficPolicy属性值为Local,则必须将create-monitor属性的值设置为True。RHOSP 16.2 中的 OVN Octavia 提供程序不支持运行状况监视器。因此,当lb-provider的值设置为"ovn"时,ETP参数值设置为Local的服务可能无法响应。

  4. 保存对文件的更改,然后继续安装。

    运行安装程序后,您可以更新云提供商配置。在命令行上运行:

    $ oc edit configmap -n openshift-config cloud-provider-config

    保存更改后,集群将需要一些时间才能重新配置自身。如果您的节点均无SchedulingDisabled状态,则该过程已完成。

获取安装程序

在安装 OpenShift Container Platform 之前,请在用于安装的主机上下载安装文件。

先决条件
  • 您需要一台运行 Linux 或 macOS 的计算机,并具有 500 MB 的本地磁盘空间。

步骤
  1. 转到 Red Hat Hybrid Cloud Console 上的 集群类型 页面。如果您有 Red Hat 帐户,请使用您的凭据登录。如果没有,请创建一个帐户。

  2. 从页面上的“自行运行”部分选择您的基础架构提供程序。

  3. OpenShift 安装程序下的下拉菜单中选择您的主机操作系统和架构,然后单击下载安装程序

  4. 将下载的文件放置到您想要存储安装配置文件的目录中。

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

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

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

    $ tar -xvf openshift-install-linux.tar.gz
  6. 从 Red Hat OpenShift 集群管理器下载您的安装拉取密钥。此拉取密钥允许您对包含的授权机构提供的服务进行身份验证,包括提供 OpenShift Container Platform 组件容器镜像的 Quay.io。

或者,您可以从Red Hat 客户门户检索安装程序,您可以在其中指定要下载的安装程序版本。但是,您必须拥有有效的订阅才能访问此页面。

创建安装配置文件

您可以在 Red Hat OpenStack Platform (RHOSP) 上自定义您安装的 OpenShift Container Platform 集群。

先决条件
  • 您已拥有 OpenShift Container Platform 安装程序和集群的拉取密钥。

步骤
  1. 创建install-config.yaml文件。

    1. 切换到包含安装程序的目录并运行以下命令:

      $ ./openshift-install create install-config --dir <installation_directory> (1)
      1 对于<installation_directory>,请指定存储安装程序创建文件的目录名。

      指定目录时:

      • 验证该目录是否具有execute权限。此权限是运行安装目录下 Terraform 二进制文件的必要条件。

      • 使用空目录。某些安装资源(例如引导 X.509 证书)的有效期较短,因此您不能重复使用安装目录。如果您想重用来自另一个集群安装的单个文件,您可以将它们复制到您的目录中。但是,安装资源的文件名可能会在不同版本之间发生变化。从较早的 OpenShift Container Platform 版本复制安装文件时,请谨慎操作。

    2. 在提示符处,提供云的配置详细信息。

      1. 可选:选择一个 SSH 密钥用于访问您的集群机器。

        对于要在其上执行安装调试或灾难恢复的生产 OpenShift Container Platform 集群,请指定您的ssh-agent进程使用的 SSH 密钥。

      2. 选择openstack作为目标平台。

      3. 指定用于安装集群的 Red Hat OpenStack Platform (RHOSP) 外部网络名称。

      4. 指定用于外部访问 OpenShift API 的浮动 IP 地址。

      5. 指定一个 RHOSP 实例规格,控制平面节点至少具有 16 GB RAM,计算节点至少具有 8 GB RAM。

      6. 选择要将集群部署到的基础域名。所有 DNS 记录都将是此基础域的子域,并且还将包含集群名称。

      7. 输入集群名称。名称必须少于 14 个字符。

  2. 修改install-config.yaml文件。您可以在“安装配置参数”部分找到有关可用参数的更多信息。

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

    install-config.yaml文件在安装过程中会被使用。如果您想重复使用该文件,则现在必须对其进行备份。

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

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

先决条件
  • 您已有一个现有的install-config.yaml文件。

  • 您已查看集群需要访问的站点,并确定其中任何站点是否需要绕过代理。默认情况下,所有集群出站流量都会被代理,包括对托管云提供商 API 的调用。如果必要,您已将站点添加到Proxy对象的spec.noProxy字段以绕过代理。

    Proxy对象的status.noProxy字段将填充您的安装配置中networking.machineNetwork[].cidrnetworking.clusterNetwork[].cidrnetworking.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.com
    proxy:
      httpProxy: http://<username>:<pswd>@<ip>:<port> (1)
      httpsProxy: https://<username>:<pswd>@<ip>:<port> (2)
      noProxy: example.com (3)
    additionalTrustBundle: | (4)
        -----BEGIN CERTIFICATE-----
        <MY_TRUSTED_CA_CERT>
        -----END CERTIFICATE-----
    additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> (5)
    1 用于创建集群外部 HTTP 连接的代理 URL。URL 方案必须为http
    2 用于创建集群外部 HTTPS 连接的代理 URL。
    3 要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。用.作为域名前缀,仅匹配子域。例如,.y.com匹配x.y.com,但不匹配y.com。使用*绕过所有目标的代理。
    4 如果提供,安装程序会在openshift-config命名空间中生成一个名为user-ca-bundle的配置映射,其中包含代理 HTTPS 连接所需的多个附加 CA 证书。集群网络操作员随后会创建一个trusted-ca-bundle配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS (RHCOS) 信任捆绑包合并,此配置映射会在Proxy对象的trustedCA字段中引用。除非代理的身份证书由 RHCOS 信任捆绑包中的授权机构签名,否则需要additionalTrustBundle字段。
    5 可选:确定Proxy对象的配置以在trustedCA字段中引用user-ca-bundle配置映射的策略。允许的值为ProxyonlyAlways。使用Proxyonly仅在配置http/https代理时引用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文件中的代理设置。如果没有提供代理设置,仍然会创建clusterProxy对象,但它将具有 nil spec

仅支持名为clusterProxy对象,并且不能创建其他代理。

RHOSP 部署中的自定义子网

可选地,您可以在您选择的 Red Hat OpenStack Platform (RHOSP) 子网上部署集群。子网的 GUID 作为 `install-config.yaml` 文件中 `platform.openstack.machinesSubnet` 的值传递。

此子网用作集群的主子网。默认情况下,节点和端口在此子网上创建。您可以通过将 `platform.openstack.machinesSubnet` 属性的值设置为子网的 UUID,在不同的 RHOSP 子网上创建节点和端口。

在使用自定义子网运行 OpenShift Container Platform 安装程序之前,请验证您的配置是否满足以下要求:

  • `platform.openstack.machinesSubnet` 使用的子网已启用 DHCP。

  • `platform.openstack.machinesSubnet` 的 CIDR 与 `networking.machineNetwork` 的 CIDR 匹配。

  • 安装程序用户有权在此网络上创建端口,包括具有固定 IP 地址的端口。

使用自定义子网的集群具有以下限制:

  • 如果您计划安装使用浮动 IP 地址的集群,则 `platform.openstack.machinesSubnet` 子网必须连接到连接到 `externalNetwork` 网络的路由器。

  • 如果在 `install-config.yaml` 文件中设置了 `platform.openstack.machinesSubnet` 值,则安装程序不会为您的 RHOSP 机器创建私有网络或子网。

  • 您不能同时使用 `platform.openstack.externalDNS` 属性和自定义子网。要向使用自定义子网的集群添加 DNS,请在 RHOSP 网络上配置 DNS。

默认情况下,API VIP 从网络的 CIDR 块中获取 x.x.x.5,而 Ingress VIP 获取 x.x.x.7。要覆盖这些默认值,请设置 `platform.openstack.apiVIPs` 和 `platform.openstack.ingressVIPs` 的值,这些值应位于 DHCP 分配池之外。

网络的 CIDR 范围在集群安装后不可调整。Red Hat 不提供在集群安装期间确定范围的直接指导,因为它需要仔细考虑每个命名空间中创建的 Pod 数量。

使用裸机部署集群

如果您希望您的集群使用裸机,请修改 `install-config.yaml` 文件。您的集群可以同时在裸机上运行控制平面和计算机器,也可以只运行计算机器。

请确保您的 `install-config.yaml` 文件反映您用于裸机工作节点的 RHOSP 网络是否支持浮动 IP 地址。

先决条件
  • RHOSP 裸机服务 (Ironic) 已启用,可通过 RHOSP 计算 API 访问。

  • 裸机可用作 RHOSP 实例规格

  • 如果您的集群运行在高于 16.1.6 版本且低于 16.2.4 版本的 RHOSP 上,则裸机工作节点由于 已知问题 而无法工作,该问题会导致元数据服务无法为 OpenShift Container Platform 节点上的服务提供服务。

  • RHOSP 网络支持虚拟机和裸机服务器连接。

  • 如果您希望在现有网络上部署机器,则会预配 RHOSP 子网。

  • 如果您希望在安装程序预配的网络上部署机器,则 RHOSP 裸机服务 (Ironic) 能够侦听并与在租户网络上运行的 Preboot eXecution Environment (PXE) 启动机器进行交互。

  • 您在 OpenShift Container Platform 安装过程中创建了 `install-config.yaml` 文件。

步骤
  1. 在 `install-config.yaml` 文件中,编辑机器的实例规格。

    1. 如果您想使用裸机控制平面机器,请将 `controlPlane.platform.openstack.type` 的值更改为裸机实例规格。

    2. 将 `compute.platform.openstack.type` 的值更改为裸机实例规格。

    3. 如果您想在现有网络上部署机器,请将 `platform.openstack.machinesSubnet` 的值更改为网络的 RHOSP 子网 UUID。控制平面和计算机器必须使用相同的子网。

      一个裸机 `install-config.yaml` 文件示例
      controlPlane:
          platform:
            openstack:
              type: <bare_metal_control_plane_flavor> (1)
      ...
      
      compute:
        - architecture: amd64
          hyperthreading: Enabled
          name: worker
          platform:
            openstack:
              type: <bare_metal_compute_flavor> (2)
          replicas: 3
      ...
      
      platform:
          openstack:
            machinesSubnet: <subnet_UUID> (3)
      ...
      1 如果您想要裸机控制平面机器,请将此值更改为裸机实例规格。
      2 将此值更改为用于计算机器的裸机实例规格。
      3 如果您想使用现有网络,请将此值更改为 RHOSP 子网的 UUID。

使用更新后的 `install-config.yaml` 文件完成安装过程。部署过程中创建的计算机器将使用您添加到文件中的实例规格。

安装程序在等待裸机启动时可能会超时。

如果安装程序超时,请重新启动,然后使用安装程序的wait-for命令完成部署。例如:

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

在 RHOSP 提供商网络上部署集群

您可以在 Red Hat OpenStack Platform (RHOSP) 上部署 OpenShift Container Platform 集群,其主网络接口位于提供商网络上。提供商网络通常用于使项目直接访问可用于访问互联网的公共网络。您还可以将提供商网络作为网络创建过程的一部分在项目之间共享。

RHOSP 提供商网络直接映射到数据中心中的现有物理网络。RHOSP 管理员必须创建它们。

在以下示例中,OpenShift Container Platform 工作负载使用提供商网络连接到数据中心。

A diagram that depicts four OpenShift workloads on OpenStack. Each workload is connected by its NIC to an external data center by using a provider network.

安装在提供商网络上的 OpenShift Container Platform 集群不需要租户网络或浮动 IP 地址。安装程序在安装过程中不会创建这些资源。

提供商网络类型的示例包括平面(未标记)和 VLAN(802.1Q 标记)。

集群可以支持与网络类型允许的连接一样多的提供商网络连接。例如,VLAN 网络通常支持多达 4096 个连接。

您可以在 RHOSP 文档 中了解更多关于提供商网络和租户网络的信息。

集群安装的 RHOSP 提供商网络要求

在安装 OpenShift Container Platform 集群之前,您的 Red Hat OpenStack Platform (RHOSP) 部署和提供商网络必须满足许多条件:

  • RHOSP 网络服务 (Neutron) 已启用 并可通过 RHOSP 网络 API 访问。

  • RHOSP 网络服务已 启用端口安全和允许的地址对扩展

  • 提供商网络可以与其他租户共享。

    使用 `openstack network create` 命令和 `--share` 标志创建可以共享的网络。

  • 您用于安装集群的 RHOSP 项目必须拥有提供商网络以及相应的子网。

    要为名为“openshift”的项目创建网络,请输入以下命令
    $ openstack network create --project openshift
    要为名为“openshift”的项目创建子网,请输入以下命令
    $ openstack subnet create --project openshift

    要了解有关在 RHOSP 上创建网络的更多信息,请阅读提供商网络文档

    如果集群由admin用户拥有,则必须以该用户身份运行安装程序才能在网络上创建端口。

    提供商网络必须由用于创建集群的 RHOSP 项目拥有。如果不是,RHOSP 计算服务 (Nova) 将无法从该网络请求端口。

  • 验证提供商网络是否可以访问 RHOSP 元数据服务 IP 地址,默认情况下为169.254.169.254

    根据您的 RHOSP SDN 和网络服务配置,您可能需要在创建子网时提供路由。例如

    $ openstack subnet create --dhcp --host-route destination=169.254.169.254/32,gateway=192.0.2.2 ...
  • 可选:要保护网络,请创建基于角色的访问控制 (RBAC)规则,以将网络访问限制为单个项目。

部署在提供商网络上具有主接口的集群

您可以部署一个主网络接口位于 Red Hat OpenStack Platform (RHOSP) 提供商网络上的 OpenShift Container Platform 集群。

先决条件
  • 您的 Red Hat OpenStack Platform (RHOSP) 部署已按照“集群安装的 RHOSP 提供商网络要求”中所述进行配置。

步骤
  1. 在文本编辑器中,打开install-config.yaml文件。

  2. platform.openstack.apiVIPs属性的值设置为 API VIP 的 IP 地址。

  3. platform.openstack.ingressVIPs属性的值设置为 Ingress VIP 的 IP 地址。

  4. platform.openstack.machinesSubnet属性的值设置为提供商网络子网的 UUID。

  5. networking.machineNetwork.cidr属性的值设置为提供商网络子网的 CIDR 块。

platform.openstack.apiVIPsplatform.openstack.ingressVIPs属性都必须是networking.machineNetwork.cidr块中未分配的 IP 地址。

依赖 RHOSP 提供商网络的集群的安装配置文件部分
        ...
        platform:
          openstack:
            apiVIPs: (1)
              - 192.0.2.13
            ingressVIPs: (1)
              - 192.0.2.23
            machinesSubnet: fa806b2f-ac49-4bce-b9db-124bc64209bf
            # ...
        networking:
          machineNetwork:
          - cidr: 192.0.2.0/24
1 在 OpenShift Container Platform 4.12 及更高版本中,apiVIPingressVIP配置设置已弃用。改为使用列表格式在apiVIPsingressVIPs配置设置中输入值。

使用提供商网络作为主网络接口时,不能设置platform.openstack.externalNetworkplatform.openstack.externalDNS参数。

部署集群时,安装程序使用install-config.yaml文件在提供商网络上部署集群。

您可以将其他网络(包括提供商网络)添加到platform.openstack.additionalNetworkIDs列表中。

部署集群后,您可以将 Pod 附加到其他网络。有关更多信息,请参见了解多个网络

RHOSP 的自定义 install-config.yaml 文件示例

以下install-config.yaml文件示例演示了所有可能的 Red Hat OpenStack Platform (RHOSP) 自定义选项。

此示例文件仅供参考。您必须使用安装程序获取您的install-config.yaml文件。
单栈install-config.yaml文件示例
apiVersion: v1
baseDomain: example.com
controlPlane:
  name: master
  platform: {}
  replicas: 3
compute:
- name: worker
  platform:
    openstack:
      type: ml.large
  replicas: 3
metadata:
  name: example
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  machineNetwork:
  - cidr: 10.0.0.0/16
  serviceNetwork:
  - 172.30.0.0/16
  networkType: OVNKubernetes
platform:
  openstack:
    cloud: mycloud
    externalNetwork: external
    computeFlavor: m1.xlarge
    apiFloatingIP: 128.0.0.1
fips: false
pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...
双栈install-config.yaml文件示例
apiVersion: v1
baseDomain: example.com
controlPlane:
  name: master
  platform: {}
  replicas: 3
compute:
- name: worker
  platform:
    openstack:
      type: ml.large
  replicas: 3
metadata:
  name: example
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  - cidr: fd01::/48
    hostPrefix: 64
  machineNetwork:
  - cidr: 192.168.25.0/24
  - cidr: fd2e:6f44:5dd8:c956::/64
  serviceNetwork:
  - 172.30.0.0/16
  - fd02::/112
  networkType: OVNKubernetes
platform:
  openstack:
    cloud: mycloud
    externalNetwork: external
    computeFlavor: m1.xlarge
    apiVIPs:
    - 192.168.25.10
    - fd2e:6f44:5dd8:c956:f816:3eff:fec3:5955
    ingressVIPs:
    - 192.168.25.132
    - fd2e:6f44:5dd8:c956:f816:3eff:fe40:aecb
    controlPlanePort:
      fixedIPs:
      - subnet:
          name: openshift-dual4
      - subnet:
          name: openshift-dual6
      network:
        name: openshift-dual
fips: false
pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...

配置具有双栈网络的集群

您可以在 RHOSP 上创建双栈集群。但是,只有在使用具有 IPv4 和 IPv6 子网的 RHOSP 网络时,才会启用双栈配置。

RHOSP 不支持将 IPv4 单栈集群转换为双栈集群网络。

部署双栈集群

步骤
  1. 创建具有 IPv4 和 IPv6 子网的网络。ipv6-ra-modeipv6-address-mode字段的可用地址模式为:dhcpv6-statefuldhcpv6-statelessslaac

    双栈网络 MTU 必须同时适应 IPv6 的最小 MTU(即 1280)和 OVN-Kubernetes 封装开销(即 100)。

    必须在子网上启用 DHCP。

  2. 创建 API 和 Ingress VIP 端口。

  3. 将 IPv6 子网添加到路由器以启用路由器广告。如果您使用的是提供商网络,则可以通过将网络添加为外部网关来启用路由器广告,这也会启用外部连接。

  4. 要为集群节点配置 IPv4 和 IPv6 地址端点,请编辑install-config.yaml文件。以下是install-config.yaml文件的示例

    install-config.yaml示例
    apiVersion: v1
    baseDomain: mydomain.test
    compute:
    - name: worker
      platform:
        openstack:
          type: m1.xlarge
      replicas: 3
    controlPlane:
      name: master
      platform:
        openstack:
          type: m1.xlarge
      replicas: 3
    metadata:
      name: mycluster
    networking:
      machineNetwork: (1)
      - cidr: "192.168.25.0/24"
      - cidr: "fd2e:6f44:5dd8:c956::/64"
      clusterNetwork: (1)
      - cidr: 10.128.0.0/14
        hostPrefix: 23
      - cidr: fd01::/48
        hostPrefix: 64
      serviceNetwork: (1)
      - 172.30.0.0/16
      - fd02::/112
    platform:
      openstack:
        ingressVIPs: ['192.168.25.79', 'fd2e:6f44:5dd8:c956:f816:3eff:fef1:1bad'] (2)
        apiVIPs: ['192.168.25.199', 'fd2e:6f44:5dd8:c956:f816:3eff:fe78:cf36'] (3)
        controlPlanePort: (4)
          fixedIPs: (5)
          - subnet: (6)
              name: subnet-v4
              id: subnet-v4-id
          - subnet: (6)
              name: subnet-v6
              id: subnet-v6-id
          network: (7)
            name: dualstack
            id: network-id
    1 您必须为 IPv4 和 IPv6 地址族指定一个 IP 地址范围。
    2 指定 Ingress VIP 服务的虚拟 IP (VIP) 地址端点以提供集群的接口。
    3 指定 API VIP 服务的虚拟 IP (VIP) 地址端点以提供集群的接口。
    4 指定集群中所有节点使用的双栈网络详细信息。
    5 在此字段中指定的任何子网的 CIDR 必须与networks.machineNetwork中列出的 CIDR 匹配。
    6 您可以同时指定nameid的值,也可以只指定其中一个。
    7 ControlPlanePort字段下指定network是可选的。

    或者,如果您想要一个 IPv6 主双栈集群,请按照以下示例编辑install-config.yaml文件

    install-config.yaml示例
    apiVersion: v1
    baseDomain: mydomain.test
    compute:
    - name: worker
      platform:
        openstack:
          type: m1.xlarge
      replicas: 3
    controlPlane:
      name: master
      platform:
        openstack:
          type: m1.xlarge
      replicas: 3
    metadata:
      name: mycluster
    networking:
      machineNetwork: (1)
      - cidr: "fd2e:6f44:5dd8:c956::/64"
      - cidr: "192.168.25.0/24"
      clusterNetwork: (1)
      - cidr: fd01::/48
        hostPrefix: 64
      - cidr: 10.128.0.0/14
        hostPrefix: 23
      serviceNetwork: (1)
      - fd02::/112
      - 172.30.0.0/16
    platform:
      openstack:
        ingressVIPs: ['fd2e:6f44:5dd8:c956:f816:3eff:fef1:1bad', '192.168.25.79'] (2)
        apiVIPs: ['fd2e:6f44:5dd8:c956:f816:3eff:fe78:cf36', '192.168.25.199'] (3)
        controlPlanePort: (4)
          fixedIPs: (5)
          - subnet: (6)
              name: subnet-v6
              id: subnet-v6-id
          - subnet: (6)
              name: subnet-v4
              id: subnet-v4-id
          network: (7)
            name: dualstack
            id: network-id
    1 您必须为 IPv4 和 IPv6 地址族指定一个 IP 地址范围。
    2 指定 Ingress VIP 服务的虚拟 IP (VIP) 地址端点以提供集群的接口。
    3 指定 API VIP 服务的虚拟 IP (VIP) 地址端点以提供集群的接口。
    4 指定集群中所有节点使用的双栈网络详细信息。
    5 在此字段中指定的任何子网的 CIDR 必须与networks.machineNetwork中列出的 CIDR 匹配。
    6 您可以同时指定nameid的值,也可以只指定其中一个。
    7 ControlPlanePort字段下指定network是可选的。

在隔离的双栈网络中使用安装主机时,IPv6 地址在重新启动后可能无法正确重新分配。

要在 Red Hat Enterprise Linux (RHEL) 8 上解决此问题,请创建一个名为/etc/NetworkManager/system-connections/required-rhel8-ipv6.conf的文件,其中包含以下配置

[connection]
type=ethernet
[ipv6]
addr-gen-mode=eui64
method=auto

要在 RHEL 9 上解决此问题,请创建一个名为/etc/NetworkManager/conf.d/required-rhel9-ipv6.conf的文件,其中包含以下配置

[connection]
ipv6.addr-gen-mode=0

创建和编辑文件后,重新启动安装主机。

在使用用户管理的负载均衡器的 OpenStack 上的集群的安装配置

以下install-config.yaml文件示例演示了如何配置使用外部用户管理的负载均衡器而不是默认内部负载均衡器的集群。

apiVersion: v1
baseDomain: mydomain.test
compute:
- name: worker
  platform:
    openstack:
      type: m1.xlarge
  replicas: 3
controlPlane:
  name: master
  platform:
    openstack:
      type: m1.xlarge
  replicas: 3
metadata:
  name: mycluster
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  machineNetwork:
  - cidr: 192.168.10.0/24
platform:
  openstack:
    cloud: mycloud
    machinesSubnet: 8586bf1a-cc3c-4d40-bdf6-c243decc603a (1)
    apiVIPs:
    - 192.168.10.5
    ingressVIPs:
    - 192.168.10.7
    loadBalancer:
      type: UserManaged (2)
1 无论您使用哪个负载均衡器,负载均衡器都将部署到此子网。
2 UserManaged值表示您正在使用用户管理的负载均衡器。

生成用于集群节点 SSH 访问的密钥对

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

将密钥传递给节点后,您可以使用密钥对以core用户身份通过 SSH 登录到 RHCOS 节点。要通过 SSH 访问节点,本地用户的 SSH 必须管理私钥身份。

如果您想 SSH 登录到集群节点以执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather 命令也需要集群节点上存在 SSH 公钥。

在需要灾难恢复和调试的生产环境中,请勿跳过此步骤。

步骤
  1. 如果您的本地机器上没有现有的 SSH 密钥对可用于对集群节点进行身份验证,请创建一个。例如,在使用 Linux 操作系统的计算机上,运行以下命令:

    $ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> (1)
    1 指定新 SSH 密钥的路径和文件名,例如~/.ssh/id_ed25519。如果您有现有的密钥对,请确保您的公钥位于~/.ssh目录中。

    如果您计划安装一个 OpenShift Container Platform 集群,该集群仅在x86_64ppc64les390x架构上使用已提交给 NIST 进行 FIPS 140-2/140-3 验证的 RHEL 加密库,请不要创建使用ed25519算法的密钥。而是创建一个使用rsaecdsa算法的密钥。

  2. 查看 SSH 公钥

    $ cat <path>/<file_name>.pub

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

    $ cat ~/.ssh/id_ed25519.pub
  3. 如果尚未添加 SSH 私钥身份到本地用户的 SSH 代理,请将其添加。密钥的 SSH 代理管理对于对集群节点进行无密码 SSH 身份验证是必需的,或者如果您想使用./openshift-install gather命令。

    在某些发行版中,默认的 SSH 私钥身份(例如~/.ssh/id_rsa~/.ssh/id_dsa)会自动管理。

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

      $ eval "$(ssh-agent -s)"
      示例输出:
      Agent pid 31874

      如果您的集群处于 FIPS 模式,则只能使用符合 FIPS 的算法生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。

  4. 将您的 SSH 私钥添加到ssh-agent

    $ ssh-add <path>/<file_name> (1)
    1 指定 SSH 私钥的路径和文件名,例如~/.ssh/id_ed25519
    示例输出:
    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
  • 安装 OpenShift Container Platform 时,请向安装程序提供 SSH 公钥。

启用对环境的访问

在部署过程中,所有 OpenShift Container Platform 机器都在 Red Hat OpenStack Platform (RHOSP) 租户网络中创建。因此,在大多数 RHOSP 部署中,它们无法直接访问。

您可以在安装过程中使用浮动 IP 地址 (FIP) 配置 OpenShift Container Platform API 和应用程序访问。您也可以在不配置 FIP 的情况下完成安装,但安装程序不会配置外部访问 API 或应用程序的方法。

使用浮动 IP 地址启用访问

创建浮动 IP (FIP) 地址以外部访问 OpenShift Container Platform API 和集群应用程序。

步骤
  1. 使用 Red Hat OpenStack Platform (RHOSP) CLI 创建 API FIP:

    $ openstack floating ip create --description "API <cluster_name>.<base_domain>" <external_network>
  2. 使用 Red Hat OpenStack Platform (RHOSP) CLI 创建应用程序或 Ingress FIP:

    $ openstack floating ip create --description "Ingress <cluster_name>.<base_domain>" <external_network>
  3. 将遵循以下模式的记录添加到您的 DNS 服务器中,用于 API 和 Ingress FIP:

    api.<cluster_name>.<base_domain>.  IN  A  <API_FIP>
    *.apps.<cluster_name>.<base_domain>. IN  A <apps_FIP>

    如果您不控制 DNS 服务器,您可以通过将以下集群域名添加到您的/etc/hosts文件来访问集群:

    • <api_floating_ip> api.<cluster_name>.<base_domain>

    • <application_floating_ip> grafana-openshift-monitoring.apps.<cluster_name>.<base_domain>

    • <application_floating_ip> prometheus-k8s-openshift-monitoring.apps.<cluster_name>.<base_domain>

    • <application_floating_ip> oauth-openshift.apps.<cluster_name>.<base_domain>

    • <application_floating_ip> console-openshift-console.apps.<cluster_name>.<base_domain>

    • application_floating_ip integrated-oauth-server-openshift-authentication.apps.<cluster_name>.<base_domain>

    /etc/hosts文件中的集群域名允许您在本地访问集群的 Web 控制台和监控界面。您也可以使用kubectloc。您可以使用指向<application_floating_ip>的其他条目来访问用户应用程序。此操作使 API 和应用程序仅对您可见,这对于生产部署不适用,但允许进行开发和测试安装。

  4. 将 FIP 添加到install-config.yaml文件,作为以下参数的值:

    • platform.openstack.ingressFloatingIP

    • platform.openstack.apiFloatingIP

如果您使用这些值,还必须在install-config.yaml文件中将外部网络输入为platform.openstack.externalNetwork参数的值。

您可以通过分配浮动 IP 地址并更新防火墙配置,使 OpenShift Container Platform 资源在集群外部可用。

在不使用浮动 IP 地址的情况下完成安装

您可以在不提供浮动 IP 地址的情况下在 Red Hat OpenStack Platform (RHOSP) 上安装 OpenShift Container Platform。

install-config.yaml文件中,不要定义以下参数:

  • platform.openstack.ingressFloatingIP

  • platform.openstack.apiFloatingIP

如果您无法提供外部网络,也可以将platform.openstack.externalNetwork留空。如果您没有为platform.openstack.externalNetwork提供值,则不会为您创建路由器,如果没有其他操作,安装程序将无法从 Glance 检索映像。您必须自行配置外部连接。

如果您从无法访问集群 API 的系统(由于缺少浮动 IP 地址或名称解析)运行安装程序,则安装将失败。为了防止在这些情况下安装失败,您可以使用代理网络或从与您的机器位于同一网络的系统运行安装程序。

您可以通过为 API 和 Ingress 端口创建 DNS 记录来启用名称解析。例如:

api.<cluster_name>.<base_domain>.  IN  A  <api_port_IP>
*.apps.<cluster_name>.<base_domain>. IN  A <ingress_port_IP>

如果您不控制 DNS 服务器,可以将记录添加到您的/etc/hosts文件。此操作使 API 仅对您可见,这对于生产部署不适用,但允许进行开发和测试安装。

部署集群

您可以在兼容的云平台上安装 OpenShift Container Platform。

您只能在初始安装期间运行安装程序的create cluster命令一次。

先决条件
  • 您已拥有 OpenShift Container Platform 安装程序和集群的拉取密钥。

  • 您已验证主机上的云提供商帐户具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示一条错误消息,指出缺少的权限。

步骤
  • 更改到包含安装程序的目录并初始化集群部署:

    $ ./openshift-install create cluster --dir <installation_directory> \ (1)
        --log-level=info (2)
    
    1 对于<installation_directory>,请指定您自定义的./install-config.yaml文件的位置。
    2 要查看不同的安装详细信息,请指定warndebugerror代替info
验证

当集群部署成功完成时:

  • 终端将显示访问集群的说明,包括指向 Web 控制台的链接和kubeadmin用户的凭据。

  • 凭据信息也会输出到<installation_directory>/.openshift_install.log

请勿删除安装程序或安装程序创建的文件。两者都是删除集群所必需的。

示例输出:
...
INFO Install complete!
INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig'
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com
INFO Login to the console with user: "kubeadmin", and password: "password"
INFO Time elapsed: 36m22s
  • 安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,届时会续订这些证书。如果集群在续订证书之前关闭,并在 24 小时后重新启动,则集群会自动恢复过期的证书。例外情况是,您必须手动批准挂起的node-bootstrapper证书签名请求 (CSR) 以恢复 kubelet 证书。有关详细信息,请参阅从过期的控制平面证书中恢复的文档。

  • 建议您在 Ignition 配置文件生成后 12 小时内使用,因为集群安装后 16 到 22 小时之间会轮换 24 小时证书。在 12 小时内使用 Ignition 配置文件,可以避免在安装过程中证书更新导致安装失败。

验证集群状态

您可以在安装期间或安装后验证您的 OpenShift Container Platform 集群的状态。

步骤
  1. 在集群环境中,导出管理员的 kubeconfig 文件。

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig (1)
    1 对于<installation_directory>,请指定您存储安装文件的目录路径。

    kubeconfig 文件包含有关集群的信息,CLI 使用这些信息将客户端连接到正确的集群和 API 服务器。

  2. 查看部署后创建的控制平面和计算机器。

    $ oc get nodes
  3. 查看集群的版本。

    $ oc get clusterversion
  4. 查看您的 Operators 状态。

    $ oc get clusteroperator
  5. 查看集群中所有正在运行的 Pod。

    $ oc get pods -A

使用 CLI 登录集群

您可以通过导出集群kubeconfig文件以默认系统用户的身份登录集群。kubeconfig文件包含有关集群的信息,CLI 使用这些信息将客户端连接到正确的集群和 API 服务器。该文件特定于某个集群,并在 OpenShift Container Platform 安装期间创建。

先决条件
  • 您已部署 OpenShift Container Platform 集群。

  • 您已安装 oc CLI。

步骤
  1. 导出kubeadmin凭据。

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig (1)
    1 对于<installation_directory>,请指定您存储安装文件的目录路径。
  2. 验证您可以使用导出的配置成功运行 oc 命令。

    $ oc whoami
    示例输出:
    system:admin
其他资源
  • 有关访问和了解 OpenShift Container Platform Web 控制台的更多详细信息,请参阅访问 Web 控制台

OpenShift Container Platform 的遥测访问

在 OpenShift Container Platform 4.17 中,默认运行的遥测服务(用于提供有关集群健康状况和更新成功的指标)需要互联网访问。如果您的集群连接到互联网,则遥测会自动运行,并且您的集群会注册到OpenShift 集群管理器

确认您的OpenShift 集群管理器清单正确无误后(由遥测自动维护或使用 OpenShift 集群管理器手动维护),使用订阅监控来跟踪您在帐户或多集群级别上的 OpenShift Container Platform 订阅。

其他资源

后续步骤