16.4. 部署单节点 OpenShift 集群


16.4.1. 关于用于管理的单节点 OpenShift 的基于镜像的部署

当使用基于镜像的安装预装了单节点 OpenShift 的主机时,技术人员可以在几分钟内轻松重新配置和部署主机。

对于具有 hub 和spoke 架构的集群,要完成预安装主机的部署,您必须首先为每个主机在 hub 集群上定义特定于站点的配置资源。这些资源包含配置信息,如裸机主机的属性、身份验证详情和其他部署和网络信息。

Image Based Install (IBI) Operator 从这些资源创建一个配置 ISO,然后使用附加配置 ISO 启动主机。主机挂载配置 ISO 并运行重新配置过程。重新配置完成后,单节点 OpenShift 集群已就绪。

注意

您必须为每个裸机主机创建不同的配置资源。

请参阅以下高级别步骤,在带有 hub 和spoke 架构的集群中部署预安装的主机:

  1. 在 hub 集群上安装 IBI Operator。
  2. 在 hub 集群中为每个主机创建特定于站点的配置资源。
  3. IBI Operator 从这些资源创建配置 ISO,并使用附加配置 ISO 启动目标主机。
  4. 主机挂载配置 ISO 并运行重新配置过程。重新配置完成后,单节点 OpenShift 集群已就绪。
注意

另外,您可以手动为集群部署预安装的主机,而无需使用 hub 集群。您必须定义 ImageBasedConfig 资源和安装清单,并将其作为 openshift-install 安装程序的输入。如需更多信息,请参阅"使用 openshift-install 程序部署单节点 OpenShift 集群"。

16.4.1.1. 安装 Image Based Install Operator

Image Based Install (IBI) Operator 是裸机主机上预安装的单节点 OpenShift 部署工作流的一部分。

注意

IBI Operator 是 MCE 版本 2.7 的 Kubernetes Operator 的多集群引擎的一部分。

先决条件

  • 以具有 cluster-admin 权限的用户身份登录。
  • 您已部署了 Red Hat Advanced Cluster Management (RHACM) hub 集群,或为 Kubernetes Operator 部署多集群引擎。
  • 您在"基于镜像安装的软件先决条件"部分中查看了所需的软件组件版本。

流程

  • 运行以下命令,将 MultiClusterEngine 资源中 基于 image-install-operator 组件的 启用 的规格设置为 true

    $ oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type json \
    --patch '[{"op": "add", "path":"/spec/overrides/components/-", "value": {"name":"image-based-install-operator","enabled": true}}]'

验证

  • 运行以下命令,检查 Image Based Install Operator pod 是否正在运行:

    $ oc get pods -A | grep image-based

    输出示例

    multicluster-engine             image-based-install-operator-57fb8sc423-bxdj8             2/2     Running     0               5m

16.4.1.2. 使用 IBI Operator 部署受管单节点 OpenShift 集群

在 hub 集群中创建特定于站点的配置资源,以启动预安装主机的基于镜像的部署。

当您在 hub 集群中创建这些配置资源时,Image Based Install (IBI) Operator 会生成配置 ISO,并将其附加到目标主机以开始特定于站点的配置过程。配置过程完成后,单节点 OpenShift 集群已就绪。

注意

有关在 hub 集群中配置配置资源的更多信息,请参阅"用于部署预安装主机的集群配置资源"。

先决条件

  • 已使用基于镜像的安装,预安装了单节点 OpenShift 的主机。
  • 以具有 cluster-admin 权限的用户身份登录。
  • 您已部署了 Red Hat Advanced Cluster Management (RHACM) hub 集群,或部署了 multicluster engine for Kubernetes operator (MCE)。
  • 您已在 hub 集群上安装了 IBI Operator。
  • 您创建了 pull secret 以验证拉取请求。如需更多信息,请参阅"使用镜像 pull secret"。

流程

  1. 运行以下命令来创建 ibi-ns 命名空间:

    $ oc create namespace ibi-ns
  2. 为您的镜像 registry 创建 Secret 资源:

    1. 创建为镜像 registry 定义 Secret 资源的 YAML 文件:

      secret-image-registry.yaml 文件示例

      apiVersion: v1
      kind: Secret
      metadata:
        name: ibi-image-pull-secret
        namespace: ibi-ns
      stringData:
        .dockerconfigjson: <base64-docker-auth-code> 1
      type: kubernetes.io/dockerconfigjson

      1
      您必须提供 base64 编码的凭证详情。有关使用镜像 pull secret 的更多信息,请参阅"添加资源"部分。
    2. 运行以下命令,为您的镜像 registry 创建 Secret 资源:

      $ oc create -f secret-image-registry.yaml
  3. 可选:为主机配置静态网络:

    1. nmstate 格式创建一个包含静态网络配置的 Secret 资源:

      host-network-config-secret.yaml 文件示例

      apiVersion: v1
      kind: Secret
      metadata:
       name: host-network-config-secret 1
       namespace: ibi-ns
      type: Opaque
      stringData:
       nmstate: | 2
        interfaces:
          - name: ens1f0 3
            type: ethernet
            state: up
            ipv4:
              enabled: true
              address:
                - ip: 192.168.200.25
                  prefix-length: 24
              dhcp: false 4
            ipv6:
              enabled: false
        dns-resolver:
          config:
            server:
              - 192.168.15.47 5
              - 192.168.15.48
        routes:
          config: 6
            - destination: 0.0.0.0/0
              metric: 150
              next-hop-address: 192.168.200.254
              next-hop-interface: ens1f0
              table-id: 254

      1
      指定 Secret 资源的名称。
      2
      nmstate 格式定义静态网络配置。
      3
      指定主机上的接口名称。接口的名称必须与操作系统中显示的实际 NIC 名称匹配。要使用 MAC 地址进行 NIC 匹配,请将 identifier 字段设置为 mac-address
      4
      您必须指定 dhcp: false 以确保 nmstate 为接口分配静态 IP 地址。
      5
      指定系统将用于解析域名的一个或多个 DNS 服务器。
      6
      在本例中,默认路由通过 ens1f0 接口配置为下一个跃点 IP 地址 192.168.200.254
  4. 创建 BareMetalHostSecret 资源:

    1. 创建定义 BareMetalHostSecret 资源的 YAML 文件:

      ibi-bmh.yaml 文件示例

      apiVersion: metal3.io/v1alpha1
      kind: BareMetalHost
      metadata:
        name: ibi-bmh 1
        namespace: ibi-ns
      spec:
        online: false 2
        bootMACAddress: 00:a5:12:55:62:64 3
        bmc:
          address: redfish-virtualmedia+http://192.168.111.1:8000/redfish/v1/Systems/8a5babac-94d0-4c20-b282-50dc3a0a32b5 4
          credentialsName: ibi-bmh-bmc-secret 5
        preprovisioningNetworkDataName: host-network-config-secret 6
        automatedCleaningMode: disabled 7
        externallyProvisioned: true 8
      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: ibi-bmh-secret 9
        namespace: ibi-ns
      type: Opaque
      data:
        username: <user_name> 10
        password: <password> 11

      1
      指定 BareMetalHost 资源的名称。
      2
      指定主机是否应在线。
      3
      指定主机引导 MAC 地址。
      4
      指定 BMC 地址。您只能使用支持虚拟介质网络引导的裸机主机驱动程序,如 redfish-virtualmedia 和 idrac-virtualmedia。
      5
      指定裸机主机 Secret 资源的名称。
      6
      可选:如果您需要主机静态网络配置,请指定包含配置的 Secret 资源的名称。
      7
      您必须指定 automatedCleaningMode:disabled,以防止置备服务在磁盘检查过程中删除所有预安装工件,如 seed 镜像。
      8
      您必须指定 externallyProvisioned: true,才能启用主机从预安装的磁盘引导,而不是配置 ISO。
      9
      指定 Secret 资源的名称。
      10
      指定用户名。
      11
      指定密码。
    2. 运行以下命令来创建 BareMetalHostSecret 资源:

      $ oc create -f ibi-bmh.yaml
  5. 创建 ClusterImageSet 资源:

    1. 创建定义 ClusterImageSet 资源的 YAML 文件:

      ibi-cluster-image-set.yaml 文件示例

      apiVersion: hive.openshift.io/v1
      kind: ClusterImageSet
      metadata:
        name: ibi-img-version-arch 1
      spec:
        releaseImage: ibi.example.com:path/to/release/images:version-arch 2

      1
      指定 ClusterImageSet 资源的名称。
      2
      指定用于部署的发行镜像的地址。如果您在生成镜像期间使用不同的镜像 registry,请确保发行镜像的 OpenShift Container Platform 版本保持不变。
    2. 运行以下命令来创建 ClusterImageSet 资源:

      $ oc apply -f ibi-cluster-image-set.yaml
  6. 创建 ImageClusterInstall 资源:

    1. 创建定义 ImageClusterInstall 资源的 YAML 文件:

      ibi-image-cluster-install.yaml 文件示例

      apiVersion: extensions.hive.openshift.io/v1alpha1
      kind: ImageClusterInstall
      metadata:
        name: ibi-image-install 1
        namespace: ibi-ns
      spec:
        bareMetalHostRef:
          name: ibi-bmh 2
          namespace: ibi-ns
        clusterDeploymentRef:
          name: ibi-cluster-deployment 3
        hostname: ibi-host 4
        imageSetRef:
          name: ibi-img-version-arch 5
        machineNetwork: 10.0.0.0/24 6
        proxy: 7
          httpProxy: "http://proxy.example.com:8080"
          #httpsProxy: "http://proxy.example.com:8080"
          #noProxy: "no_proxy.example.com"

      1
      指定 ImageClusterInstall 资源的名称。
      2
      为基于镜像的安装指定您要目标的 BareMetalHost 资源。
      3
      指定要用于目标主机的镜像安装的 ClusterDeployment 资源的名称。
      4
      指定集群的主机名。
      5
      指定用来定义用于部署的容器镜像的 ClusterImageSet 资源的名称。
      6
      指定外部网络的公共 CIDR (Classless Inter-Domain Routing)。
      7
      可选:指定一个用于集群部署的代理。
      重要

      如果您的集群部署需要代理配置,您必须执行以下操作:

      • 从带有代理配置的 seed 集群创建 seed 镜像。代理配置不必相互匹配。
      • 在安装清单中配置 machineNetwork 字段。
    2. 运行以下命令来创建 ImageClusterInstall 资源:

      $ oc create -f ibi-image-cluster-install.yaml
  7. 创建 ClusterDeployment 资源:

    1. 创建定义 ClusterDeployment 资源的 YAML 文件:

      ibi-cluster-deployment.yaml 文件示例

      apiVersion: hive.openshift.io/v1
      kind: ClusterDeployment
      metadata:
        name: ibi-cluster-deployment 1
        namespace: ibi-ns 2
      spec:
        baseDomain: example.com 3
        clusterInstallRef:
          group: extensions.hive.openshift.io
          kind: ImageClusterInstall
          name: ibi-image-install 4
          version: v1alpha1
        clusterName: ibi-cluster 5
        platform:
          none: {}
        pullSecretRef:
          name: ibi-image-pull-secret 6

      1
      指定 ClusterDeployment 资源的名称。
      2
      指定 ClusterDeployment 资源的命名空间。
      3
      指定集群应属于的基域。
      4
      指定 ImageClusterInstall 的名称,在其中定义了用于目标主机的基于镜像安装的容器镜像。
      5
      为集群指定一个名称。
      6
      指定用于从镜像 registry 中拉取镜像的 secret。
    2. 运行以下命令来创建 ClusterDeployment 资源:

      $ oc apply -f ibi-cluster-deployment.yaml
  8. 创建 ManagedCluster 资源:

    1. 创建定义 ManagedCluster 资源的 YAML 文件:

      ibi-managed.yaml 文件示例

      apiVersion: cluster.open-cluster-management.io/v1
      kind: ManagedCluster
      metadata:
        name: sno-ibi 1
      spec:
        hubAcceptsClient: true 2

      1
      指定 ManagedCluster 资源的名称。
      2
      指定 true 以启用 RHACM 管理集群。
    2. 运行以下命令来创建 ManagedCluster 资源:

      $ oc apply -f ibi-managed.yaml

验证

  1. 运行以下命令,检查 hub 集群中 ImageClusterInstall 的状态,以监控目标主机安装的进度:

    $ oc get imageclusterinstall

    输出示例

    NAME       REQUIREMENTSMET           COMPLETED                     BAREMETALHOSTREF
    target-0   HostValidationSucceeded   ClusterInstallationSucceeded  ibi-bmh

    警告

    如果 ImageClusterInstall 资源被删除,IBI Operator 会重新附加 BareMetalHost 资源并重启机器。

  2. 安装完成后,您可以运行以下命令来检索 kubeconfig secret 以登录到受管集群:

    $ oc extract secret/<cluster_name>-admin-kubeconfig -n <cluster_namespace>  --to - > <directory>/<cluster_name>-kubeconfig
    • <CLUSTER_ NAME> 是集群的名称。
    • <cluster_namespace > 是集群的命名空间。
    • < directory> 是在其中创建文件的目录。
16.4.1.2.1. 用于部署预安装主机的集群配置资源

要在远程站点完成预安装主机的部署,您必须在 hub 集群中为每个裸机主机配置以下 site-specifc 集群配置资源。

表 16.6. 集群配置资源参考
资源描述

Namespace

受管单节点 OpenShift 集群的命名空间。

BareMetalHost

描述物理主机及其属性,如置备和硬件配置。

裸机主机的 secret

主机 BMC 的凭证。

裸机主机静态网络配置的 secret

可选:描述目标主机的静态网络配置。

镜像 registry 的 secret

镜像 registry 的凭证。镜像 registry 的 secret 必须是 kubernetes.io/dockerconfigjson 类型。

ImageClusterInstall

引用裸机主机、部署和镜像设置资源。

ClusterImageSet

描述用于集群的发行镜像。

ClusterDeployment

描述网络、身份验证和特定于平台的设置。

ManagedCluster

描述启用 Red Hat Advanced Cluster Management (RHACM)来注册和管理的集群详情。

ConfigMap

可选:描述集群部署的额外配置,如为主机添加可信证书的捆绑包,以确保集群服务的可信通信。

16.4.1.2.2. ImageClusterInstall 资源 API 规格

以下内容描述了 ImageClusterInstall 资源的 API 规格。此资源是 Image Based Install Operator 的端点。

表 16.7. 所需的规格
规格类型描述

imageSetRef

string

指定为部署定义发行镜像的 ClusterImageSet 资源的名称。

hostname

string

指定集群的主机名。

sshKey

string

指定 SSH 密钥,以提供到目标主机的 SSH 访问。

表 16.8. 可选规格
规格类型描述

clusterDeploymentRef

string

指定要用于目标主机的镜像安装的 ClusterDeployment 资源的名称。

clusterMetadata

string

部署完成后,此规格会自动填充有关集群的元数据信息,包括用于登录到集群的 cluster-admin kubeconfig 凭证。

imageDigestSources

string

指定 release-image 内容的源或软件仓库,例如:

imageDigestSources:
  - mirrors:
      - "registry.example.com:5000/ocp4/openshift4"
    source: "quay.io/openshift-release-dev/ocp-release"

extraManifestsRefs

string

指定包含要应用到目标集群的额外清单的 ConfigMap 资源。

bareMetalHostRef

string

指定用于集群部署的 bareMetalHost 资源

machineNetwork

string

指定外部网络的公共 CIDR (Classless Inter-Domain Routing)。

proxy

string

指定集群的代理设置,例如:

proxy:
  httpProxy: "http://proxy.example.com:8080"
  httpsProxy: "http://proxy.example.com:8080"
  noProxy: "no_proxy.example.com"

caBundleRef

string

指定包含主机可信证书捆绑包的 ConfigMap 资源。

16.4.1.3. 额外清单的 ConfigMap 资源

您可以选择创建 ConfigMap 资源,为受管单节点 OpenShift 集群在基于镜像的部署中定义其他清单。

创建 ConfigMap 资源后,在 ImageClusterInstall 资源中引用它。在部署过程中,IBI Operator 在部署中包括额外的清单。

16.4.1.3.1. 创建 ConfigMap 资源以在基于镜像的部署中添加额外的清单

您可以使用 ConfigMap 资源在单节点 OpenShift 集群的基于镜像的部署中添加额外的清单。

以下示例将单根 I/O 虚拟化 (SR-IOV) 网络添加到部署中。

注意

额外清单的文件名不能超过 30 个字符。较长的文件名可能会导致部署失败。

先决条件

  • 已使用基于镜像的安装,预安装了单节点 OpenShift 的主机。
  • 以具有 cluster-admin 权限的用户身份登录。

流程

  1. 创建 SriovNetworkNodePolicySriovNetwork 资源:

    1. 创建定义资源的 YAML 文件:

      sriov-extra-manifest.yaml 文件示例

      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovNetworkNodePolicy
      metadata:
        name: "example-sriov-node-policy"
        namespace: openshift-sriov-network-operator
      spec:
        deviceType: vfio-pci
        isRdma: false
        nicSelector:
          pfNames: [ens1f0]
        nodeSelector:
          node-role.kubernetes.io/master: ""
        mtu: 1500
        numVfs: 8
        priority: 99
        resourceName: example-sriov-node-policy
      ---
      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovNetwork
      metadata:
        name: "example-sriov-network"
        namespace: openshift-sriov-network-operator
      spec:
        ipam: |-
          {
          }
        linkState: auto
        networkNamespace: sriov-namespace
        resourceName: example-sriov-node-policy
        spoofChk: "on"
        trust: "off"

    2. 运行以下命令来创建 ConfigMap 资源:

      $ oc create configmap sr-iov-extra-manifest --from-file=sriov-extra-manifest.yaml -n ibi-ns 1
      1
      指定具有 ImageClusterInstall 资源的命名空间。

      输出示例

      configmap/sr-iov-extra-manifest created

  2. ImageClusterInstall 资源的 spec.extraManifestsRefs 字段中引用 ConfigMap 资源:

    #...
      spec:
        extraManifestsRefs:
        - name: sr-iov-extra-manifest
    #...
16.4.1.3.2. 创建 ConfigMap 资源,以便在基于镜像的部署中添加 CA 捆绑包

您可以使用 ConfigMap 资源将证书颁发机构(CA)捆绑包添加到主机,以确保集群服务的可信通信。

创建 ConfigMap 资源后,在 ImageClusterInstall 资源的 spec.caBundleRef 字段中引用它。

先决条件

  • 已使用基于镜像的安装,预安装了单节点 OpenShift 的主机。
  • 以具有 cluster-admin 权限的用户身份登录。

流程

  1. 创建名为 tls-ca-bundle.pem 的 CA 捆绑包文件:

    tls-ca-bundle.pem 文件示例

    -----BEGIN CERTIFICATE-----
    MIIDXTCCAkWgAwIBAgIJAKmjYKJbIyz3MA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
    ...Custom CA certificate bundle...
    4WPl0Qb27Sb1xZyAsy1ww6MYb98EovazUSfjYr2EVF6ThcAPu4/sMxUV7He2J6Jd
    cA8SMRwpUbz3LXY=
    -----END CERTIFICATE-----

  2. 运行以下命令来创建 ConfigMap 对象:

    $ oc create configmap custom-ca --from-file=tls-ca-bundle.pem -n ibi-ns
    • custom-ca 指定 ConfigMap 资源的名称。
    • tls-ca-bundle.pem 定义 ConfigMap 资源中 data 条目的密钥。您必须使用 tls-ca-bundle.pem 键包含 数据 条目。
    • ibi-ns 指定具有 ImageClusterInstall 资源的命名空间。

      输出示例

      configmap/custom-ca created

  3. ImageClusterInstall 资源的 spec.caBundleRef 字段中引用 ConfigMap 资源:

    #...
      spec:
        caBundleRef:
          name: custom-ca
    #...

16.4.2. 关于单节点 OpenShift 的基于镜像的部署

您可以使用 openshift-install 程序手动生成配置 ISO。将配置 ISO 附加到预安装的目标主机以完成部署。

16.4.2.1. 使用 openshift-install 程序部署单节点 OpenShift 集群

您可以使用 openshift-install 程序配置和部署预安装了基于镜像的安装的主机。要使用特定于站点的详情配置目标主机,您必须创建以下资源:

  • install-config.yaml 安装清单
  • image-based-config.yaml 清单

openshift-install 程序使用这些资源来生成一个配置 ISO,您将它附加到预安装的目标主机来完成部署。

注意

如需有关 image-based-config.yaml 清单规格的更多信息,请参阅"image-based-config.yaml manifest 清单参考规格"。

先决条件

  • 已使用基于镜像的安装,预安装了单节点 OpenShift 的主机。
  • 下载了 openshift-install 程序的最新版本。
  • 您创建了 pull secret 以验证拉取请求。如需更多信息,请参阅"使用镜像 pull secret"。

流程

  1. 运行以下命令来创建工作目录:

    $ mkdir ibi-config-iso-workdir 1
    1
    ibi-config-iso-workdir 替换为工作目录的名称。
  2. 创建安装清单:

    1. 创建定义 install-config 清单的 YAML 文件:

      install-config.yaml 文件示例

      apiVersion: v1
      metadata:
        name: sno-cluster-name
      baseDomain: host.example.com
      compute:
        - architecture: amd64
          hyperthreading: Enabled
          name: worker
          replicas: 0
      controlPlane:
        architecture: amd64
        hyperthreading: Enabled
        name: master
        replicas: 1
      networking:
        clusterNetwork:
        - cidr: 10.128.0.0/14
          hostPrefix: 23
        machineNetwork:
        - cidr: 192.168.200.0/24
        networkType: OVNKubernetes
        serviceNetwork:
        - 172.30.0.0/16
      platform:
        none: {}
      fips: false
      cpuPartitioningMode: "AllNodes"
      pullSecret: '{"auths":{"<your_pull_secret>"}}}'
      sshKey: 'ssh-rsa <your_ssh_pub_key>'

      重要

      如果您的集群部署需要代理配置,您必须执行以下操作:

      • 从带有代理配置的 seed 集群创建 seed 镜像。代理配置不必相互匹配。
      • 在安装清单中配置 machineNetwork 字段。
    2. 将文件保存到工作目录中。
  3. 可选。运行以下命令,在工作目录中创建配置模板:

    $ openshift-install image-based create config-template --dir ibi-config-iso-workdir/

    输出示例

    INFO Config-Template created in: ibi-config-iso-workdir

    该命令在工作目录中创建 image-based-config.yaml 配置模板:

    #
    # Note: This is a sample ImageBasedConfig file showing
    # which fields are available to aid you in creating your
    # own image-based-config.yaml file.
    #
    apiVersion: v1beta1
    kind: ImageBasedConfig
    metadata:
      name: example-image-based-config
    additionalNTPSources:
      - 0.rhel.pool.ntp.org
      - 1.rhel.pool.ntp.org
    hostname: change-to-hostname
    releaseRegistry: quay.io
    # networkConfig contains the network configuration for the host in NMState format.
    # See https://nmstate.io/examples.html for examples.
    networkConfig:
      interfaces:
        - name: eth0
          type: ethernet
          state: up
          mac-address: 00:00:00:00:00:00
          ipv4:
            enabled: true
            address:
              - ip: 192.168.122.2
                prefix-length: 23
            dhcp: false
  4. 编辑配置文件:

    image-based-config.yaml 文件示例

    #
    # Note: This is a sample ImageBasedConfig file showing
    # which fields are available to aid you in creating your
    # own image-based-config.yaml file.
    #
    apiVersion: v1beta1
    kind: ImageBasedConfig
    metadata:
      name: sno-cluster-name
    additionalNTPSources:
      - 0.rhel.pool.ntp.org
      - 1.rhel.pool.ntp.org
    hostname: host.example.com
    releaseRegistry: quay.io
    # networkConfig contains the network configuration for the host in NMState format.
    # See https://nmstate.io/examples.html for examples.
    networkConfig:
        interfaces:
          - name: ens1f0
            type: ethernet
            state: up
            ipv4:
              enabled: true
              dhcp: false
              auto-dns: false
              address:
                - ip: 192.168.200.25
                  prefix-length: 24
            ipv6:
              enabled: false
        dns-resolver:
          config:
            server:
              - 192.168.15.47
              - 192.168.15.48
        routes:
          config:
          - destination: 0.0.0.0/0
            metric: 150
            next-hop-address: 192.168.200.254
            next-hop-interface: ens1f0

  5. 运行以下命令,在工作目录中创建配置 ISO:

    $ openshift-install image-based create config-image --dir ibi-config-iso-workdir/

    输出示例

    INFO Adding NMConnection file <ens1f0.nmconnection>
    INFO Consuming Install Config from target directory
    INFO Consuming Image-based Config ISO configuration from target directory
    INFO Config-Image created in: ibi-config-iso-workdir/auth

    查看工作目录中的输出:

    输出示例

    ibi-config-iso-workdir/
    ├── auth
    │   ├── kubeadmin-password
    │   └── kubeconfig
    └── imagebasedconfig.iso

  6. 使用您首选的方法将 imagebasedconfig.iso 附加到预安装的主机,然后重新启动主机以完成配置过程并部署集群。

验证

当配置过程在主机上完成时,访问集群以验证其状态。

  1. 运行以下命令,将 kubeconfig 环境变量导出到 kubeconfig 文件中:

    $ export KUBECONFIG=ibi-config-iso-workdir/auth/kubeconfig
  2. 运行以下命令验证集群是否响应:

    $ oc get nodes

    输出示例

    NAME                                         STATUS   ROLES                  AGE     VERSION
    node/sno-cluster-name.host.example.com       Ready    control-plane,master   5h15m   v1.30.3

16.4.2.1.1. image-based-config.yaml 清单的规格参考

以下内容介绍了 image-based-config.yaml 清单的规格。

openshift-install 程序使用 image-based-config.yaml 清单为基于镜像的单节点 OpenShift 部署创建特定于站点的配置 ISO。

表 16.9. 所需的规格
规格类型描述

hostname

string

为单节点 OpenShift 集群定义节点的名称。

表 16.10. 可选规格
规格类型描述

networkConfig

string

指定主机的网络配置,例如:

networkConfig:
    interfaces:
      - name: ens1f0
        type: ethernet
        state: up
        ...

如果需要静态网络,您必须在创建实时安装 ISO 的主机上安装 nmstatectl 库。有关使用 nmstate 定义网络配置的详情,请参考 nmstate.io

重要

接口的名称必须与操作系统中显示的实际 NIC 名称匹配。

additionalNTPSources

string

指定所有集群主机的 NTP 源列表。这些 NTP 源会添加到集群中的任何现有 NTP 源中。您可以将主机名或 IP 地址用于 NTP 源。

releaseRegistry

string

指定用于 seed 集群的发行镜像的容器镜像 registry。

nodeLabels

map[string]string

为单节点 OpenShift 节点指定自定义节点标签,例如:

nodeLabels:
  node-role.kubernetes.io/edge: true
  environment: production

16.4.2.2. 为额外清单配置资源

您可以选择为单节点 OpenShift 集群在基于镜像的部署中定义其他资源。

在具有相同工作目录中的 extra-manifests 文件夹中创建其他资源,该资源具有 install-config.yaml基于镜像的-config.yaml 清单。

注意

extra-manifests 目录中其他资源的文件名不能超过 30 个字符。较长的文件名可能会导致部署失败。

16.4.2.2.1. 在 extra-manifests 文件夹中创建资源

您可以在工作目录的 extra-manifests 文件夹中创建资源,以便在单节点 OpenShift 集群的基于镜像的部署中添加额外的清单。

以下示例将单根 I/O 虚拟化 (SR-IOV) 网络添加到部署中。

先决条件

  • 已使用 install-config.yamlimage-based-config.yaml 清单创建了工作目录

流程

  1. 进入您的工作目录并创建 extra-manifests 文件夹:

    $ mkdir extra-manifests
  2. extra-manifests 文件夹中创建 SriovNetworkNodePolicySriovNetwork 资源:

    1. 创建定义资源的 YAML 文件:

      sriov-extra-manifest.yaml 文件示例

      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovNetworkNodePolicy
      metadata:
        name: "example-sriov-node-policy"
        namespace: openshift-sriov-network-operator
      spec:
        deviceType: vfio-pci
        isRdma: false
        nicSelector:
          pfNames: [ens1f0]
        nodeSelector:
          node-role.kubernetes.io/master: ""
        mtu: 1500
        numVfs: 8
        priority: 99
        resourceName: example-sriov-node-policy
      ---
      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovNetwork
      metadata:
        name: "example-sriov-network"
        namespace: openshift-sriov-network-operator
      spec:
        ipam: |-
          {
          }
        linkState: auto
        networkNamespace: sriov-namespace
        resourceName: example-sriov-node-policy
        spoofChk: "on"
        trust: "off"

验证

  • 在创建配置 ISO 时,您可以在工作目录中查看 .openshift_install_state.json 文件中的额外清单的引用:

     "*configimage.ExtraManifests": {
            "FileList": [
                {
                    "Filename": "extra-manifests/sriov-extra-manifest.yaml",
                    "Data": "YXBFDFFD..."
                }
            ]
        }
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.