1.9. 主机清单简介


主机清单管理和内部集群安装可使用多集群引擎 operator 中央基础架构管理功能。

中央基础架构管理功能是 multicluster engine operator 的 Red Hat OpenShift Container Platform 安装体验,它专注于在生命周期内管理裸机主机。

Assisted Installer 是 OpenShift Container Platform 的安装方法,它使用代理在目标主机上运行预安装的验证,以及一个中央服务来评估和跟踪安装进度。

Red Hat OpenShift 的基础架构 Operator 是一个多集群引擎 operator 组件,它管理和安装运行 Assisted Installer 服务的工作负载。

您可以使用控制台创建主机清单,这是可用于创建内部 OpenShift Container Platform 集群的裸机或虚拟机池。这些集群可以独立,使用专用的 control plane 或 托管 control plane,其中 control plane 作为 hub 集群上的 pod 运行。

您可以使用 Zero Touch Provisioning (ZTP)使用控制台、API 或 GitOps 安装独立集群。如需有关 ZTP 的更多信息,请参阅 Red Hat OpenShift Container Platform 文档中的在断开连接的环境中安装 GitOps ZTP。

使用发现镜像引导后,机器将加入主机清单。Discovery Image 是一个 Red Hat CoreOS live 镜像,包含以下内容:

  • 执行发现、验证和安装任务的代理。
  • 在 hub 集群中访问服务所需的配置,包括端点、令牌和静态网络配置(如果适用)。

您为每个基础架构环境有一个发现镜像,这是一组共享一组通用属性的主机。InfraEnv 自定义资源定义表示此基础架构环境和关联的发现镜像。您可以通过在 InfraEnv 自定义资源中设置 osImageVersion 字段来指定用于 Discovery Image 的 Red Hat Core OS 版本。如果没有指定值,则使用最新的 Red Hat Core OS 版本。

主机引导和代理联系该服务后,该服务会在代表该主机的 hub 集群上创建一个新的 Agent 自定义资源。Agent 资源组成主机清单。

您可以稍后将清单中的主机作为 OpenShift 节点安装。代理将操作系统写入磁盘,以及必要的配置,并重启主机。

注: Red Hat Advanced Cluster Management 2.9 及更新的版本,以及中央基础架构管理支持使用 AgentClusterInstall 支持 Nutanix 平台,这需要通过创建 Nutanix 虚拟机来提供额外的配置。如需更多信息,请参阅辅助安装程序文档中的 可选:在 Nutanix 上安装

继续阅读以了解有关主机清单和中央基础架构管理的更多信息:

1.9.1. 启用中央基础架构管理服务

中央基础架构管理服务由 multicluster engine operator 提供,并部署 OpenShift Container Platform 集群。当您在 hub 集群上启用 MultiClusterHub Operator 时,中央基础架构管理服务会自动部署,但您必须手动启用该服务。

1.9.1.1. 先决条件

在启用中央基础架构管理服务前,请查看以下先决条件:

  • 您必须在受支持的 OpenShift Container Platform 版本中部署了 hub 集群,以及一个受支持的 Red Hat Advanced Cluster Management for Kubernetes 版本。
  • 您需要对 hub 集群(连接)或者连接到连接到互联网(断开连接)的内部或镜像 registry 的连接,以检索创建环境所需的镜像。
  • 您必须为裸机置备打开所需的端口。请参阅 OpenShift Container Platform 文档中的 确保所需的端口已打开
  • 您需要裸机主机自定义资源定义。
  • 您需要 OpenShift Container Platform pull secret。如需更多信息,请参阅使用镜像 pull secret
  • 您需要一个配置的默认存储类。
  • 对于断开连接的环境,在 OpenShift Container Platform 文档中的网络边缘 完成集群的步骤。

请参见以下部分:

1.9.1.2. 创建裸机主机自定义资源定义

在启用中央基础架构管理服务前,您需要一个裸机主机自定义资源定义。

  1. 运行以下命令,检查您已有一个裸机主机自定义资源定义:

    oc get crd baremetalhosts.metal3.io
    • 如果您有裸机主机自定义资源定义,输出会显示创建资源的日期。
    • 如果没有资源,您会收到类似如下的错误:
    Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "baremetalhosts.metal3.io" not found
  2. 如果您没有裸机主机自定义资源定义,请下载 metal3.io_baremetalhosts.yaml 文件,并通过运行以下命令来创建资源来应用内容:

    oc apply -f

1.9.1.3. 创建或修改 置备 资源

在启用中央基础架构管理服务前,您需要一个 Provisioning 资源。

  1. 运行以下命令检查是否有 Provisioning 资源:

    oc get provisioning
    • 如果您已有 Provisioning 资源,请通过 修改 Provisioning 资源 来继续。
    • 如果您没有 Provisioning 资源,您会收到 No resources found 错误。通过创建 Provisioning 资源来继续
1.9.1.3.1. 修改 Provisioning 资源

如果您已经有一个 Provisioning 资源,如果 hub 集群安装在以下平台上之一,则必须修改资源:

  • 裸机
  • Red Hat OpenStack Platform
  • VMware vSphere
  • 用户置备的基础架构(UPI)方法,平台为 None

如果在其他平台上安装了 hub 集群,请继续 在断开连接的环境中启用中央基础架构管理或者在连接的环境中启用中央基础架构管理

  1. 运行以下命令,修改 Provisioning 资源以允许 Bare Metal Operator 监视所有命名空间:

    oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"watchAllNamespaces": true }}'
1.9.1.3.2. 创建 置备 资源

如果您没有 Provisioning 资源,请完成以下步骤:

  1. 通过添加以下 YAML 内容来创建 Provisioning 资源:

    apiVersion: metal3.io/v1alpha1
    kind: Provisioning
    metadata:
      name: provisioning-configuration
    spec:
      provisioningNetwork: "Disabled"
      watchAllNamespaces: true
  2. 运行以下命令来应用内容:

    oc apply -f

1.9.1.4. 在断开连接的环境中启用中央基础架构管理

要在断开连接的环境中启用中央基础架构管理,请完成以下步骤:

  1. 在与基础架构 Operator 相同的命名空间中创建 ConfigMap,为镜像 registry 指定 ca-bundle.crtregistry.conf 的值。您的文件 ConfigMap 可能类似以下示例:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: <mirror-config>
      namespace: multicluster-engine
      labels:
        app: assisted-service
    data:
      ca-bundle.crt: |
        <certificate-content>
      registries.conf: |
        unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
        [[registry]]
           prefix = ""
           location = "registry.redhat.io/multicluster-engine"
           mirror-by-digest-only = true
           [[registry.mirror]]
           location = "mirror.registry.com:5000/multicluster-engine"

    注: 您必须将 mirror-by-digest-only 设置为 true,因为发行镜像是使用摘要指定的。

    unqualified-search-registries 列表中的 registry 会自动添加到 PUBLIC_CONTAINER_REGISTRIES 环境变量中的身份验证忽略列表中。当验证受管集群的 pull secret 时,指定的 registry 不需要身份验证。

  2. 编写代表您要使用每个 osImage 请求发送的标头和查询参数的密钥对。如果您不需要这两个参数,请只针对标头或查询参数写入密钥对。

重要: 只有使用 HTTPS 时,才会加密标头和查询参数。确保使用 HTTPS 来避免安全问题。

  1. 创建名为 headers 的文件并添加类似以下示例的内容:

    {
      "Authorization": "Basic xyz"
    }
  2. 创建名为 query_params 的文件并添加类似以下示例的内容:

    {
      "api_key": "myexampleapikey",
    }
    1. 运行以下命令,从您创建的参数文件创建 secret。如果您只创建一个参数文件,请删除您尚未创建的文件的参数:

      oc create secret generic -n multicluster-engine os-images-http-auth --from-file=./query_params --from-file=./headers
    2. 如果要将 HTTPS osImages 与自签名或第三方 CA 证书搭配使用,请将证书添加到 image-service-additional-ca ConfigMap 中。要创建证书,请运行以下命令:

      oc -n multicluster-engine create configmap image-service-additional-ca --from-file=tls.crt
    3. 通过在 agent_service_config.yaml 文件中保存以下 YAML 内容来创建 AgentServiceConfig 自定义资源:

      apiVersion: agent-install.openshift.io/v1beta1
      kind: AgentServiceConfig
      metadata:
       name: agent
      spec:
        databaseStorage:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: <db_volume_size>
        filesystemStorage:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: <fs_volume_size>
        mirrorRegistryRef:
          name: <mirror_config> 1
        unauthenticatedRegistries:
          - <unauthenticated_registry> 2
        imageStorage:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: <img_volume_size> 3
        OSImageAdditionalParamsRef:
      	    name: os-images-http-auth
        OSImageCACertRef:
          name: image-service-additional-ca
        osImages:
          - openshiftVersion: "<ocp_version>" 4
            version: "<ocp_release_version>" 5
            url: "<iso_url>" 6
            cpuArchitecture: "x86_64"
    1
    mirror_config 替换为包含您的镜像 registry 配置详情的 ConfigMap 名称。
    2
    如果您使用不需要身份验证的镜像 registry,请包含可选的 unauthenticated_registry 参数。此列表上的条目不会被验证,或者需要在 pull secret 中有一个条目。
    3
    img_volume_size 替换为 imageStorage 字段的卷大小,例如每个操作系统镜像的 10Gi。最小值为 10Gi,但建议的值至少为 50Gi。这个值指定为集群镜像分配多少存储。您需要为每个运行的 Red Hat Enterprise Linux CoreOS 实例提供 1 GB 的镜像存储。如果 Red Hat Enterprise Linux CoreOS 有多个集群和实例,您可能需要使用更高的值。
    4
    ocp_version 替换为要安装的 OpenShift Container Platform 版本,如 4.14
    5
    ocp_release_version 替换为特定的安装版本,例如:49.83.202103251640-0
    6

如果您使用带有自签名或第三方 CA 证书的 HTTPS osImages,请在 OSImageCACertRef spec 中引用证书。

重要: 如果您使用后绑定功能,且 AgentServiceConfig 自定义资源中的 spec.osImages 发行版本是 4.13 或更高版本的版本,则您在创建集群时使用的 OpenShift Container Platform 发行镜像必须相同。版本 4.13 及更新版本的 Red Hat Enterprise Linux CoreOS 镜像与更早的镜像不兼容。

您可以通过检查 assisted-serviceassisted-image-service 部署并确保其 pod 已就绪,来验证您的中央基础架构管理服务是否健康。

1.9.1.5. 在连接的环境中启用中央基础架构管理

要在连接的环境中启用中央基础架构管理,请通过在 agent_service_config.yaml 文件中保存以下 YAML 内容来创建 AgentServiceConfig 自定义资源:

apiVersion: agent-install.openshift.io/v1beta1
kind: AgentServiceConfig
metadata:
 name: agent
spec:
  databaseStorage:
    accessModes:
    - ReadWriteOnce
    resources:
      requests:
        storage: <db_volume_size> 1
  filesystemStorage:
    accessModes:
    - ReadWriteOnce
    resources:
      requests:
        storage: <fs_volume_size> 2
  imageStorage:
    accessModes:
    - ReadWriteOnce
    resources:
      requests:
        storage: <img_volume_size> 3
1
使用 databaseStorage 字段的卷大小替换 db_volume_size,如 10Gi。这个值指定为存储集群分配的存储量,如数据库表和数据库视图。所需的最小值为 1Gi。如果有多个集群,您可能需要使用较高的值。
2
fs_volume_size 替换为 filesystemStorage 字段的卷大小,例如,每个集群 200M 和每个支持的 OpenShift Container Platform 版本 2-3G。所需的最小值为 1Gi,但推荐的值为至少 100Gi。这个值指定为存储集群的日志、清单和 kubeconfig 文件分配了多少存储。如果有多个集群,您可能需要使用较高的值。
3
img_volume_size 替换为 imageStorage 字段的卷大小,例如每个操作系统镜像的 10Gi。最小值为 10Gi,但建议的值至少为 50Gi。这个值指定为集群镜像分配多少存储。您需要为每个运行的 Red Hat Enterprise Linux CoreOS 实例提供 1 GB 的镜像存储。如果 Red Hat Enterprise Linux CoreOS 有多个集群和实例,您可能需要使用更高的值。

您的中央基础架构管理服务已配置。您可以通过检查 assisted-serviceassisted-image-service 部署,确定 pod 已就绪并在运行,来验证其状态是否正常。

1.9.1.6. 使用 Assisted Installer 安装启用了 FIPS 的集群

当您安装一个处于 FIPS 模式的 OpenShift Container Platform 集群版本 4.15 及更早的版本时,您必须指定安装程序在 AgentServiceConfig 资源中运行 Red Hat Enterprise Linux (RHEL)版本 8。

需要的访问权限: 您必须有权访问 AgentServiceConfigAgentClusterInstall 资源。

完成以下步骤以更新 AgentServiceConfig 资源:

  1. 使用以下命令登录到受管集群:

    oc login
  2. AgentServiceConfig 资源中添加 agent-install.openshift.io/service-image-base: el8 注解。

    您的 AgentServiceConfig 资源可能类似以下 YAML:

    apiVersion: agent-install.openshift.io/v1beta1
    kind: AgentServiceConfig
    metadata:
      annotations:
        agent-install.openshift.io/service-image-base: el8
    ...

1.9.1.7. 其他资源

1.9.2. 在 Amazon Web Services 上启用中央基础架构管理

如果您在 Amazon Web Services 上运行 hub 集群并希望启用中央基础架构管理服务,请在 启用中央基础架构管理服务 后完成以下步骤:

  1. 运行以下命令,确保您在 hub 集群中登录,并查找在 assisted-image-service 上配置的唯一域:

    oc get routes --all-namespaces | grep assisted-image-service

    您的域可能类似以下示例:assisted-image-service-multicluster-engine.apps.<yourdomain>.com

  2. 确保您已在 hub 集群中登录,并使用 NLB type 参数创建带有唯一域的新 IngressController。请参见以下示例:

    apiVersion: operator.openshift.io/v1
    kind: IngressController
    metadata:
      name: ingress-controller-with-nlb
      namespace: openshift-ingress-operator
    spec:
      domain: nlb-apps.<domain>.com
      routeSelector:
          matchLabels:
            router-type: nlb
      endpointPublishingStrategy:
        type: LoadBalancerService
        loadBalancer:
          scope: External
          providerParameters:
            type: AWS
            aws:
              type: NLB
  3. <yourdomain> 添加到 IngressController 中的 domain 参数,方法是使用 <yourdomain> 替换 nlb-apps.<domain>.com<domain>
  4. 运行以下命令来应用新的 IngressController

    oc apply -f ingresscontroller.yaml
  5. 通过完成以下步骤,确保新 IngressControllerspec.domain 参数的值不与现有 IngressController 冲突:

    1. 运行以下命令列出所有 IngressController

      oc get ingresscontroller -n openshift-ingress-operator
    2. 在每个 IngressController 上运行以下命令,除了您刚才创建的 ingress-controller-with-nlb 外:

      oc edit ingresscontroller <name> -n openshift-ingress-operator

      如果缺少 spec.domain 报告,请添加一个与集群中公开的所有路由匹配的默认域,但 nlb-apps.<domain>.com 除外。

      如果提供了 spec.domain 报告,请确保从指定范围中排除 nlb-apps.<domain>.com 路由。

  6. 运行以下命令来编辑 assisted-image-service 路由以使用 nlb-apps 位置:

    oc edit route assisted-image-service -n <namespace>

    默认命名空间是您安装 multicluster engine operator 的位置。

  7. assisted-image-service 路由中添加以下行:

    metadata:
      labels:
        router-type: nlb
      name: assisted-image-service
  8. assisted-image-service 路由中,找到 spec.host 的 URL 值。URL 可能类似以下示例:

    assisted-image-service-multicluster-engine.apps.<yourdomain>.com
  9. 将 URL 中的 apps 替换为 nlb-apps,以匹配新 IngressController 中配置的域。
  10. 要验证中央基础架构管理服务是否在 Amazon Web Services 上启用了,请运行以下命令来验证 pod 是否健康:

    oc get pods -n multicluster-engine | grep assist
  11. 创建新主机清单,并确保下载 URL 使用新的 nlb-apps URL。

1.9.3. 使用控制台创建主机清单

您可以创建一个主机清单(基础架构环境)来发现您可以在 OpenShift Container Platform 集群上安装的物理或虚拟机。

1.9.3.1. 先决条件

  • 您必须启用中央基础架构管理服务。如需更多信息 ,请参阅启用中央基础架构管理服务

1.9.3.2. 创建主机清单

完成以下步骤,使用控制台创建主机清单:

  1. 从控制台导航到 Infrastructure > Host inventory,再点 Create infrastructure environment
  2. 在主机清单设置中添加以下信息:

    • 名称 :您的基础架构环境的唯一名称。使用控制台创建基础架构环境也会使用您选择的名称为 InfraEnv 资源创建新命名空间。如果使用命令行界面创建 InfraEnv 资源,并希望监控控制台中的资源,请对命名空间和 InfraEnv 使用相同的名称。
    • Network type:指定您添加到基础架构环境中的主机是否使用 DHCP 或静态网络。静态网络配置需要额外的步骤。
    • location :指定主机的地理位置。地理位置可用于定义主机所在的数据中心。
    • Labels:可在其中向使用此基础架构环境发现的主机添加标签的可选字段。指定的位置会自动添加到标签列表中。
    • 基础架构供应商凭证 :选择基础架构供应商凭证会自动使用凭证中的信息填充 pull secret 和 SSH 公钥字段。如需更多信息,请参阅 为内部环境创建凭证
    • pull secret:用于访问 OpenShift Container Platform 资源的 OpenShift Container Platform pull secret。如果您选择了基础架构供应商凭证,则会自动填充此字段。
    • SSH 公钥:实现与主机安全通信的 SSH 密钥。您可以使用它来连接到主机以进行故障排除。安装集群后,您无法使用 SSH 密钥连接到主机。密钥通常位于您的 id_rsa.pub 文件中。默认文件路径为 ~/.ssh/id_rsa.pub。如果您选择了包含 SSH 公钥值的基础架构供应商凭证,则会自动填充此字段。
    • 如果要为主机启用代理设置,请选择设置来启用它,并输入以下信息:

      • HTTP 代理 URL:HTTP 请求的代理 URL。
      • HTTPS 代理 URL:HTTP 请求的代理 URL。URL 必须以 HTTP 开头。不支持 HTTPS。如果没有提供值,则 HTTP 代理 URL 默认用于 HTTP 和 HTTPS 连接。
      • 无代理域:您不想使用代理的逗号分开的域列表。使用一个句点(.)启动域名,以包含该域中的所有子域。添加一个星号(*)以绕过所有目的地的代理。
    • (可选)通过提供 NTP 池或服务器的 IP 或域名的逗号分隔列表来添加自己的网络时间协议(NTP)源。

如果您需要控制台中没有的高级配置选项,请使用命令行界面继续 创建主机清单

如果不需要高级配置选项,您可以继续配置静态网络(如果需要),并开始将主机添加到基础架构环境中。

1.9.3.3. 访问主机清单

要访问主机清单,请在控制台中选择 Infrastructure > Host inventory。从列表中选择您的基础架构环境,以查看详情和主机。

1.9.3.4. 其他资源

如果您作为裸机上配置托管的 control plane 的一部分创建了主机清单,请完成以下步骤:

1.9.4. 使用命令行界面创建主机清单

您可以创建一个主机清单(基础架构环境)来发现您可以在 OpenShift Container Platform 集群上安装的物理或虚拟机。使用命令行界面而不是控制台进行自动部署,或用于以下高级配置选项:

  • 自动将发现的主机绑定到现有集群定义
  • 覆盖发现镜像的 ignition 配置
  • 控制 iPXE 行为
  • 为发现镜像修改内核参数
  • 在发现阶段传递您希望主机信任的额外证书
  • 选择要引导的 Red Hat CoreOS 版本用于测试,它不是最新版本的默认选项

1.9.4.1. 前提条件

1.9.4.2. 创建主机清单

完成以下步骤,使用命令行界面创建主机清单(infrastructure 环境):

  1. 运行以下命令登录到您的 hub 集群:

    oc login
  2. 为您的资源创建一个命名空间。

    1. 创建名为 namespace.yaml 的文件并添加以下内容:

      apiVersion: v1
      kind: Namespace
      metadata:
        name: <your_namespace> 1
      1
      对命名空间和基础架构环境使用相同的名称来监控您的控制台中的清单。
    2. 运行以下命令来应用 YAML 内容:

      oc apply -f namespace.yaml
  3. 创建包含 OpenShift Container Platform pull secretSecret 自定义资源。

    1. 创建 pull-secret.yaml 文件并添加以下内容:

      apiVersion: v1
      kind: Secret
      type: kubernetes.io/dockerconfigjson
      metadata:
        name: pull-secret 1
        namespace: <your_namespace>
      stringData:
        .dockerconfigjson: <your_pull_secret> 2
      1
      添加您的 namesapce。
      2
      添加 pull secret。
    2. 运行以下命令来应用 YAML 内容:

      oc apply -f pull-secret.yaml
  4. 创建基础架构环境。

    1. 创建 infra-env.yaml 文件并添加以下内容:根据需要替换值:

      apiVersion: agent-install.openshift.io/v1beta1
      kind: InfraEnv
      metadata:
        name: myinfraenv
        namespace: <your_namespace>
      spec:
        proxy:
          httpProxy: <http://user:password@ipaddr:port>
          httpsProxy: <http://user:password@ipaddr:port>
          noProxy:
        additionalNTPSources:
        sshAuthorizedKey:
        pullSecretRef:
          name: <name>
        agentLabels:
          <key>: <value>
        nmStateConfigLabelSelector:
          matchLabels:
            <key>: <value>
        clusterRef:
          name: <cluster_name>
          namespace: <project_name>
        ignitionConfigOverride: '{"ignition": {"version": "3.1.0"}, …}'
        cpuArchitecture: x86_64
        ipxeScriptType: DiscoveryImageAlways
        kernelArguments:
          - operation: append
            value: audit=0
        additionalTrustBundle: <bundle>
        osImageVersion: <version>

参阅 InfraEnv 表中的以下字段描述:

表 1.6. InfraEnv 字段表
字段可选或必需的描述

proxy

选填

定义使用 InfraEnv 资源的代理和集群的代理设置。如果没有设置 代理 值,代理不会配置为使用代理。

httpProxy

选填

HTTP 请求的代理 URL。URL 必须以 http 开头。不支持 HTTPS。

httpsProxy

选填

HTTP 请求的代理 URL。URL 必须以 http 开头。不支持 HTTPS。

noProxy

选填

您不想用代理分开的域和 CIDR 列表。

additionalNTPSources

选填

要添加到所有主机的网络时间协议(NTP)源(主机名或 IP)的列表。它们添加到使用其他选项(如 DHCP)配置的 NTP 源中。

sshAuthorizedKey

选填

添加到所有主机中的 SSH 公钥,以便在发现阶段用于调试。发现阶段是主机引导发现镜像时。

name

必需

包含 pull secret 的 Kubernetes secret 名称。

agentLabels

选填

自动添加到 Agent 资源的标签,这些资源代表通过 InfraEnv 发现的主机。确保添加您的键和值。

nmStateConfigLabelSelector

选填

合并高级网络配置,如主机的静态 IP、网桥和绑定。主机网络配置使用您选择的标签在一个或多个 NMStateConfig 资源中指定。nmStateConfigLabelSelector 属性是与您选择的标签匹配的 Kubernetes 标签选择器。与这个标签选择器匹配的所有 NMStateConfig 标签的网络配置都包含在 Discovery 镜像中。当您引导时,每个主机会将每个配置与其网络接口进行比较,并应用适当的配置。要了解更多有关高级网络配置的信息,请参阅为基础架构环境配置高级网络

clusterRef

选填

引用描述内部集群的现有 ClusterDeployment 资源。默认不设置。如果没有设置 clusterRef,则主机稍后可以绑定到一个或多个集群。您可以从一个集群中删除主机,并将其添加到另一个集群中。如果设置了 clusterRef,则通过 InfraEnv 发现的所有主机将自动绑定到指定的集群。如果集群还没有安装,则所有发现的主机都是其安装的一部分。如果已安装集群,则会添加所有发现的主机。

ignitionConfigOverride

选填

修改 Red Hat CoreOS live 镜像的 ignition 配置,如添加文件。如果需要,请确保只使用 ignitionConfigOverride。必须使用 ignition 版本 3.1.0,无论集群版本是什么。

cpuArchitecture

选填

选择以下支持的 CPU 架构之一:x86_64、aarch64、ppc64le 或 s390x。默认值为 x86_64。

ipxeScriptType

选填

当设置为 DiscoveryImageAlways 的默认值并使用 iPXE 引导时,会导致镜像服务始终提供 iPXE 脚本。因此,主机从网络发现镜像引导。将值设为 BootOrderControl 会导致镜像服务决定何时返回 iPXE 脚本,具体取决于主机状态,这会导致主机在主机置备并且是集群的一部分时从磁盘引导。

kernelArguments

选填

允许在发现镜像引导时修改内核参数。操作 的可能值有,替换或删除

additionalTrustBundle

选填

如果主机位于带有重新加密 man-in-the-middle (MITM)代理的网络中,或者主机需要为其他目的信任证书(如容器镜像 registry),则通常需要 PEM 编码的 X.509 证书。您的 InfraEnv 发现的主机信任此捆绑包中的证书。从 InfraEnv 发现的主机创建的集群也会信任此捆绑包中的证书。

osImageVersion

选填

用于 InfraEnv 的 Red Hat CoreOS 镜像版本。确保版本引用 AgentServiceConfig.spec.osImages 或默认 OS 镜像列表中指定的 OS 镜像。每个发行版本都有一组特定的 Red Hat CoreOS 镜像版本。OSImageVersion 必须与 OS 镜像列表中的 OpenShift Container Platform 版本匹配。您不能同时指定 OSImageVersionClusterRef。如果要使用默认不存在的 Red Hat CoreOS 镜像的另一个版本,则必须在 AgentServiceConfig.spec.osImages 中指定它来手动添加版本。要了解更多有关添加版本的信息,请参阅 启用中央基础架构管理服务

  1. 运行以下命令来应用 YAML 内容:

    oc apply -f infra-env.yaml
  2. 要验证主机清单是否已创建,请使用以下命令检查状态:

    oc describe infraenv myinfraenv -n <your_namespace>

请参阅以下可显著属性列表:

  • 条件 :指示镜像是否创建的标准 Kubernetes 条件。
  • isoDownloadURL :下载发现镜像的 URL。
  • createdTime :镜像最后一次创建的时间。如果您修改了 InfraEnv,请确保在下载新镜像前更新时间戳。

注: 如果您修改 InfraEnv 资源,请通过查看 createdTime 属性来确保 InfraEnv 已创建新的 Discovery 镜像。如果您已经引导的主机,请使用最新的发现镜像再次引导它们。

如果需要,您可以继续配置静态网络,并开始将主机添加到基础架构环境中。

1.9.4.3. 其他资源

1.9.5. 为基础架构环境配置高级网络

对于在单个接口上需要 DHCP 之外的主机,您必须配置高级网络。所需的配置包括创建一个或多个 NMStateConfig 资源实例,用于描述一个或多个主机的网络。

每个 NMStateConfig 资源都必须包含一个与 InfraEnv 资源上的 nmStateConfigLabelSelector 匹配的标签。请参阅使用命令行界面创建主机清单, 以了解更多有关 nmStateConfigLabelSelector 的信息。

Discovery 镜像包含所有引用的 NMStateConfig 资源中定义的网络配置。启动后,每个主机会将每个配置与其网络接口进行比较,并应用适当的配置。

1.9.5.1. 先决条件

1.9.5.2. 使用命令行界面配置高级网络

要使用命令行界面为您的基础架构环境配置高级网络,请完成以下步骤:

  1. 创建名为 nmstateconfig.yaml 的文件并添加类似以下模板的内容。根据需要替换值:

    apiVersion: agent-install.openshift.io/v1beta1
    kind: NMStateConfig
    metadata:
      name: mynmstateconfig
      namespace: <your-infraenv-namespace>
      labels:
        some-key: <some-value>
    spec:
      config:
        interfaces:
          - name: eth0
            type: ethernet
            state: up
            mac-address: 02:00:00:80:12:14
            ipv4:
              enabled: true
              address:
                - ip: 192.168.111.30
                  prefix-length: 24
              dhcp: false
          - name: eth1
            type: ethernet
            state: up
            mac-address: 02:00:00:80:12:15
            ipv4:
              enabled: true
              address:
                - ip: 192.168.140.30
                  prefix-length: 24
              dhcp: false
        dns-resolver:
          config:
            server:
              - 192.168.126.1
        routes:
          config:
            - destination: 0.0.0.0/0
              next-hop-address: 192.168.111.1
              next-hop-interface: eth1
              table-id: 254
            - destination: 0.0.0.0/0
              next-hop-address: 192.168.140.1
              next-hop-interface: eth1
              table-id: 254
      interfaces:
        - name: "eth0"
          macAddress: "02:00:00:80:12:14"
        - name: "eth1"
          macAddress: "02:00:00:80:12:15"
表 1.7. NMStateConfig 字段表
字段可选或必需的描述

name

必需

使用与您要配置的主机或主机相关的名称。

namespace

必需

命名空间必须与 InfraEnv 资源的命名空间匹配。

some-key

必需

添加一个或多个与 InfraEnv 资源上的 nmStateConfigLabelSelector 匹配的标签。

config

选填

描述 NMstate 格式的网络设置。有关格式规格和其他示例,请参阅 声明网络 API。配置也可以应用到单个主机,其中每个主机有一个 NMStateConfig 资源,或者可以描述单个 NMStateConfig 资源中的多个主机的接口。

interfaces

选填

描述主机上指定 NMstate 配置和 MAC 地址中找到的接口名称之间的映射。确保映射使用主机上存在的物理接口。例如,当 NMState 配置定义了绑定或 VLAN 时,映射只包含父接口的条目。映射具有以下目的:* 允许您在配置中使用与主机上的接口名称不匹配的接口名称。您可能会发现这很有用,因为操作系统会选择接口名称,这可能无法预测。* 告知主机在引导后查找哪些 MAC 地址并应用正确的 NMstate 配置。

注: 镜像服务会在更新任何 InfraEnv 属性时自动创建新镜像,或更改与其标签选择器匹配的 NMStateConfig 资源。如果您在创建 InfraEnv 资源后添加 NMStateConfig 资源,请通过检查 InfraEnv 中的 createdTime 属性来确保 InfraEnv 创建新的 Discovery 镜像。如果您已经引导的主机,请使用最新的发现镜像再次引导它们。

  1. 运行以下命令来应用 YAML 内容:

    oc apply -f nmstateconfig.yaml

1.9.5.3. 其他资源

1.9.6. 使用发现镜像将主机添加到主机清单中

创建主机清单(基础架构环境)后,您可以发现主机并将其添加到清单中。

要将主机添加到清单中,请选择下载 ISO 文件的方法并将其附加到每个服务器。例如,您可以使用虚拟介质下载 ISO 文件,或者将 ISO 文件写入 USB 驱动器。

重要: 要防止安装失败,请在安装过程中保持发现 ISO 介质连接到该设备,并将每个主机设置为一次从设备引导。

1.9.6.1. 先决条件

1.9.6.2. 使用控制台添加主机

通过完成以下步骤下载 ISO 文件:

  1. 在控制台中选择 Infrastructure > Host inventory
  2. 从列表中选择您的基础架构环境。
  3. Add hosts 并选择 With Discovery ISO

    现在,您会看到一个 URL 来下载 ISO 文件。引导的主机出现在主机清单表中。显示主机可能需要几分钟时间。

    注: 默认情况下,提供的 ISO 是 最小 ISO。最小 ISO 不包含根文件系统 RootFS。稍后下载 RootFS。要显示完整的 ISO,请将 URL 中的 minimal.iso 替换为 full.iso

  4. 批准每个主机,以便您可以使用它。您可以单击 Actions 并选择 Approve,从 inventory 表中选择主机。

1.9.6.3. 使用命令行界面添加主机

isoDownloadURL 属性中下载 ISO 文件的 URL 处于 InfraEnv 资源的状态。如需有关 InfraEnv 资源的更多信息 ,请参阅使用命令行界面创建主机清单

每个引导的主机在同一命名空间中创建一个 Agent 资源。

  1. 运行以下命令,以查看 InfraEnv 自定义资源中的下载 URL:

    oc get infraenv -n <infra env namespace> <infra env name> -o jsonpath='{.status.isoDownloadURL}'

    请参见以下输出:

    https://assisted-image-service-assisted-installer.apps.example-acm-hub.com/byapikey/eyJhbGciOiJFUzI1NiIsInC93XVCJ9.eyJpbmZyYV9lbnZfaWQcTA0Y38sWVjYi02MTA0LTQ4NDMtODasdkOGIxYTZkZGM5ZTUifQ.3ydTpHaXJmTasd7uDp2NvGUFRKin3Z9Qct3lvDky1N-5zj3KsRePhAM48aUccBqmucGt3g/4.16/x86_64/minimal.iso

    注: 默认情况下,提供的 ISO 是 最小 ISO。最小 ISO 不包含根文件系统 RootFS。稍后下载 RootFS。要显示完整的 ISO,请将 URL 中的 minimal.iso 替换为 full.iso

  2. 使用 URL 下载 ISO 文件并使用 ISO 文件引导主机。

    接下来,您需要批准每个主机。请参见以下步骤:

  3. 运行以下命令列出所有 代理

    oc get agent -n <infra env namespace>

    您会收到类似以下输出的输出:

    NAME                                   CLUSTER   APPROVED   ROLE          STAGE
    24a92a6f-ea35-4d6f-9579-8f04c0d3591e             false      auto-assign
  4. 使用错误批准状态,从列表中 批准 任何 代理。运行以下命令:

    oc patch agent -n <infra env namespace> <agent name> -p '{"spec":{"approved":true}}' --type merge
  5. 运行以下命令确认批准状态:

    oc get agent -n <infra env namespace>

    您会收到一个类似于以下输出的输出,其值为 true

    NAME                                   CLUSTER   APPROVED   ROLE          STAGE
    173e3a84-88e2-4fe1-967f-1a9242503bec             true       auto-assign

1.9.6.4. 其他资源

1.9.7. 自动将裸机主机添加到主机清单中

创建主机清单(基础架构环境)后,您可以发现主机并将其添加到清单中。您可以通过为每个主机创建 BareMetalHost 资源和相关 BMC secret,使裸机 Operator 与裸机主机的 Baseboard Management Controller (BMC)通信来自动引导基础架构环境的发现镜像。自动化由 BareMetalHost 上的标签设置,该标签引用您的基础架构环境。

自动化执行以下操作:

  • 使用基础架构环境代表的发现镜像引导每个裸机主机
  • 如果基础架构环境或任何关联的网络配置更新,请使用最新的发现镜像重启每个主机
  • 在发现时,将每个 Agent 资源与对应的 BareMetalHost 资源关联
  • 根据 BareMetalHost 的信息更新 代理 资源属性,如主机名、角色和安装磁盘
  • 批准用作集群节点的 Agent

1.9.7.1. 先决条件

1.9.7.2. 使用控制台添加裸机主机

完成以下步骤,使用控制台自动将裸机主机添加到主机清单中:

  1. 在控制台中选择 Infrastructure > Host inventory
  2. 从列表中选择您的基础架构环境。
  3. Add hosts 并选择 With BMC Form
  4. 添加所需信息并点 Create

1.9.7.3. 使用命令行界面添加裸机主机

完成以下步骤,使用命令行界面自动将裸机主机添加到主机清单中。

  1. 通过应用以下 YAML 内容并替换需要的值来创建 BMC secret:

    apiVersion: v1
    kind: Secret
    metadata:
      name: <bmc-secret-name>
      namespace: <your_infraenv_namespace> 1
    type: Opaque
    data:
      username: <username>
      password: <password>
    1
    命名空间必须与 InfraEnv 的命名空间相同。
  2. 通过应用以下 YAML 内容并在需要时替换值来创建裸机主机:

    apiVersion: metal3.io/v1alpha1
    kind: BareMetalHost
    metadata:
      name: <bmh-name>
      namespace: <your_infraenv_namespace> 1
      annotations:
        inspect.metal3.io: disabled
      labels:
        infraenvs.agent-install.openshift.io: <your-infraenv> 2
    spec:
      online: true
      automatedCleaningMode: disabled 3
      bootMACAddress: <your-mac-address>  4
      bmc:
        address: <machine-address> 5
        credentialsName: <bmc-secret-name> 6
      rootDeviceHints:
        deviceName: /dev/sda 7
    1
    命名空间必须与 InfraEnv 的命名空间相同。
    2
    名称必须与您的 InfrEnv 的名称匹配,并位于同一命名空间中。
    3
    如果没有设置值,则会自动使用 metadata 值。
    4
    确保 MAC 地址与主机上其中一个交集的 MAC 地址匹配。
    5
    使用 BMC 的地址。如需更多信息,请参阅带外管理 IP 地址的端口访问
    6
    确保 credentialsName 值与您创建的 BMC secret 的名称匹配。
    7
    可选: 选择安装磁盘。有关可用的 root 设备提示,请参阅 BareMetalHost spec。使用发现镜像引导主机并创建对应的 Agent 资源后,会根据此提示设置安装磁盘。

打开主机后,镜像开始下载。这可能需要几分钟时间。主机被发现后,会自动创建 Agent 自定义资源。

1.9.7.4. 使用命令行界面删除受管集群节点

要从受管集群中删除受管集群,需要一个在受支持的 OpenShift Container Platform 版本上运行的 hub 集群。节点引导所需的静态网络配置都必须可用。在删除代理和裸机主机时,请确保不会删除 NMStateConfig 资源。

1.9.7.4.1. 使用裸机主机删除受管集群节点

如果您在 hub 集群中有一个裸机主机,并希望从受管集群中删除受管集群,请完成以下步骤:

  1. 在您要删除的节点的 BareMetalHost 资源中添加以下注解:

    bmac.agent-install.openshift.io/remove-agent-and-node-on-delete: true
  2. 运行以下命令来删除 BareMetalHost 资源。将 <bmh-name > 替换为 BareMetalHost 的名称:

    oc delete bmh <bmh-name>
1.9.7.4.2. 在没有裸机主机的情况下删除受管集群节点

如果您在 hub 集群中没有裸机主机,并希望从受管集群中删除受管集群,请按照 OpenShift Container Platform 文档中的 Deleting 节点 说明进行操作。

1.9.7.5. 其他资源

1.9.8. 管理主机清单

您可以使用控制台管理主机清单并编辑现有主机,或者使用命令行界面并编辑 Agent 资源。

1.9.8.1. 使用控制台管理主机清单

使用 Discovery ISO 成功引导的每个主机都显示为主机清单中的一行。您可以使用控制台编辑和管理您的主机。如果您手动引导主机且没有使用裸机 Operator 自动化,则必须在控制台中批准主机,才能使用它。已准备好作为 OpenShift 节点安装的主机具有 Available 状态。

1.9.8.2. 使用命令行界面管理主机清单

Agent 资源代表每个主机。您可以在 Agent 资源中设置以下属性:

  • clusterDeploymentName

    如果要将此属性设置为您要使用的 ClusterDeployment 的命名空间和名称,如果要将主机作为集群中的节点安装。

  • 可选: role

    设置集群中主机的角色。可能的值有 masterworkerauto-assign。默认值为 auto-assign

  • hostname

    设置主机的主机名。可选:如果主机自动被分配了有效的主机名,例如使用 DHCP。

  • 已批准

    指明主机是否可以安装为 OpenShift 节点。此属性是一个布尔值,默认值为 False。如果您手动引导主机且没有使用裸机 Operator 自动化,则必须在安装主机前将此属性设置为 True

  • installation_disk_id

    您选择的安装磁盘的 ID 在主机清单中可见。

  • installerArgs

    包含主机的 coreos-installer 参数的 JSON 格式的字符串。您可以使用此属性修改内核参数。请参见以下示例语法:

    ["--append-karg", "ip=192.0.2.2::192.0.2.254:255.255.255.0:core0.example.com:enp1s0:none", "--save-partindex", "4"]
  • ignitionConfigOverrides

    包含主机的 ignition 配置覆盖的 JSON 格式字符串。您可以使用此属性使用 ignition 将文件添加到主机。请参见以下示例语法:

    {"ignition": "version": "3.1.0"}, "storage": {"files": [{"path": "/tmp/example", "contents": {"source": "data:text/plain;base64,aGVscGltdHJhcHBlZGluYXN3YWdnZXJzcGVj"}}]}}
  • nodeLabels

    主机安装后应用到节点的标签列表。

Agent 资源的状态具有以下属性:

  • role

    设置集群中主机的角色。如果您之前在 Agent 资源中设置 了角色,则该值将显示在 状态中

  • 清单(inventory)

    包含主机上运行的代理发现的主机属性。

  • progress

    主机安装进度。

  • ntpSources

    主机的配置的网络时间协议(NTP)源。

  • conditions

    包含以下标准 Kubernetes 条件,并带有 TrueFalse 值:

    • SpecSynced:如果成功应用所有指定的属性,则为 True如果遇到 一些错误,则为 false。
    • connected: 如果代理连接到安装服务没有混淆,则为 True。如果代理一段时间未联系安装服务,则为 false。
    • RequirementsMet:如果主机准备好开始安装,则为 True
    • validated: 如果所有主机验证都通过,则为 True
    • installed :如果主机作为 OpenShift 节点安装,则为 True
    • Bound :如果主机绑定到集群,则为 True
    • cleanup:如果删除 Agent resouce 的请求失败,则为 False
  • debugInfo

    包含下载安装日志和事件的 URL。

  • validationsInfo

    包含有关验证的信息,代理在主机被发现后运行,以确保安装成功。如果值为 False,则进行故障排除。

  • installation_disk_id

    您选择的安装磁盘的 ID 在主机清单中可见。

1.9.8.3. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.