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. 创建裸机主机自定义资源定义
在启用中央基础架构管理服务前,您需要一个裸机主机自定义资源定义。
运行以下命令,检查您已有一个裸机主机自定义资源定义:
oc get crd baremetalhosts.metal3.io
- 如果您有裸机主机自定义资源定义,输出会显示创建资源的日期。
- 如果没有资源,您会收到类似如下的错误:
Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "baremetalhosts.metal3.io" not found
如果您没有裸机主机自定义资源定义,请下载 metal3.io_baremetalhosts.yaml 文件,并通过运行以下命令来创建资源来应用内容:
oc apply -f
1.9.1.3. 创建或修改 置备 资源
在启用中央基础架构管理服务前,您需要一个 Provisioning
资源。
运行以下命令检查是否有
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 集群,请继续 在断开连接的环境中启用中央基础架构管理,或者在连接的环境中启用中央基础架构管理。
运行以下命令,修改
Provisioning
资源以允许 Bare Metal Operator 监视所有命名空间:oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"watchAllNamespaces": true }}'
1.9.1.3.2. 创建 置备 资源
如果您没有 Provisioning
资源,请完成以下步骤:
通过添加以下 YAML 内容来创建
Provisioning
资源:apiVersion: metal3.io/v1alpha1 kind: Provisioning metadata: name: provisioning-configuration spec: provisioningNetwork: "Disabled" watchAllNamespaces: true
运行以下命令来应用内容:
oc apply -f
1.9.1.4. 在断开连接的环境中启用中央基础架构管理
要在断开连接的环境中启用中央基础架构管理,请完成以下步骤:
在与基础架构 Operator 相同的命名空间中创建
ConfigMap
,为镜像 registry 指定ca-bundle.crt
和registry.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 不需要身份验证。-
编写代表您要使用每个
osImage
请求发送的标头和查询参数的密钥对。如果您不需要这两个参数,请只针对标头或查询参数写入密钥对。
重要: 只有使用 HTTPS 时,才会加密标头和查询参数。确保使用 HTTPS 来避免安全问题。
创建名为
headers
的文件并添加类似以下示例的内容:{ "Authorization": "Basic xyz" }
创建名为
query_params
的文件并添加类似以下示例的内容:{ "api_key": "myexampleapikey", }
运行以下命令,从您创建的参数文件创建 secret。如果您只创建一个参数文件,请删除您尚未创建的文件的参数:
oc create secret generic -n multicluster-engine os-images-http-auth --from-file=./query_params --from-file=./headers
如果要将 HTTPS
osImages
与自签名或第三方 CA 证书搭配使用,请将证书添加到image-service-additional-ca
ConfigMap
中。要创建证书,请运行以下命令:oc -n multicluster-engine create configmap image-service-additional-ca --from-file=tls.crt
通过在
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
- 使用 ISO url 替换
iso_url
,例如https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.13/4.13.3/rhcos-4.13.3-x86_64-live.x86_64.iso
。您可以在 rhoc 中找到其他值。
如果您使用带有自签名或第三方 CA 证书的 HTTPS osImages
,请在 OSImageCACertRef
spec 中引用证书。
重要: 如果您使用后绑定功能,且 AgentServiceConfig
自定义资源中的 spec.osImages
发行版本是 4.13 或更高版本的版本,则您在创建集群时使用的 OpenShift Container Platform 发行镜像必须相同。版本 4.13 及更新版本的 Red Hat Enterprise Linux CoreOS 镜像与更早的镜像不兼容。
您可以通过检查 assisted-service
和 assisted-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-service
和 assisted-image-service
部署,确定 pod 已就绪并在运行,来验证其状态是否正常。
1.9.1.6. 使用 Assisted Installer 安装启用了 FIPS 的集群
当您安装一个处于 FIPS 模式的 OpenShift Container Platform 集群版本 4.15 及更早的版本时,您必须指定安装程序在 AgentServiceConfig
资源中运行 Red Hat Enterprise Linux (RHEL)版本 8。
需要的访问权限: 您必须有权访问 AgentServiceConfig
和 AgentClusterInstall
资源。
完成以下步骤以更新 AgentServiceConfig
资源:
使用以下命令登录到受管集群:
oc login
在
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. 其他资源
- 有关零接触置备的更多信息,请参阅 OpenShift Container Platform 文档中的 网络边缘的挑战。
- 使用镜像 pull secret
1.9.2. 在 Amazon Web Services 上启用中央基础架构管理
如果您在 Amazon Web Services 上运行 hub 集群并希望启用中央基础架构管理服务,请在 启用中央基础架构管理服务 后完成以下步骤:
运行以下命令,确保您在 hub 集群中登录,并查找在
assisted-image-service
上配置的唯一域:oc get routes --all-namespaces | grep assisted-image-service
您的域可能类似以下示例:
assisted-image-service-multicluster-engine.apps.<yourdomain>.com
确保您已在 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
-
将
<yourdomain>
添加到IngressController
中的domain
参数,方法是使用<yourdomain>
替换nlb-apps.<domain>.com
的<domain>
。 运行以下命令来应用新的
IngressController
:oc apply -f ingresscontroller.yaml
通过完成以下步骤,确保新
IngressController
的spec.domain
参数的值不与现有IngressController
冲突:运行以下命令列出所有
IngressController
:oc get ingresscontroller -n openshift-ingress-operator
在每个
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
路由。
运行以下命令来编辑
assisted-image-service
路由以使用nlb-apps
位置:oc edit route assisted-image-service -n <namespace>
默认命名空间是您安装 multicluster engine operator 的位置。
在
assisted-image-service
路由中添加以下行:metadata: labels: router-type: nlb name: assisted-image-service
在
assisted-image-service
路由中,找到spec.host
的 URL 值。URL 可能类似以下示例:assisted-image-service-multicluster-engine.apps.<yourdomain>.com
-
将 URL 中的
apps
替换为nlb-apps
,以匹配新IngressController
中配置的域。 要验证中央基础架构管理服务是否在 Amazon Web Services 上启用了,请运行以下命令来验证 pod 是否健康:
oc get pods -n multicluster-engine | grep assist
-
创建新主机清单,并确保下载 URL 使用新的
nlb-apps
URL。
1.9.3. 使用控制台创建主机清单
您可以创建一个主机清单(基础架构环境)来发现您可以在 OpenShift Container Platform 集群上安装的物理或虚拟机。
1.9.3.1. 先决条件
- 您必须启用中央基础架构管理服务。如需更多信息 ,请参阅启用中央基础架构管理服务。
1.9.3.2. 创建主机清单
完成以下步骤,使用控制台创建主机清单:
- 从控制台导航到 Infrastructure > Host inventory,再点 Create infrastructure environment。
在主机清单设置中添加以下信息:
-
名称 :您的基础架构环境的唯一名称。使用控制台创建基础架构环境也会使用您选择的名称为
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 环境):
运行以下命令登录到您的 hub 集群:
oc login
为您的资源创建一个命名空间。
创建名为
namespace.yaml
的文件并添加以下内容:apiVersion: v1 kind: Namespace metadata: name: <your_namespace> 1
- 1
- 对命名空间和基础架构环境使用相同的名称来监控您的控制台中的清单。
运行以下命令来应用 YAML 内容:
oc apply -f namespace.yaml
创建包含 OpenShift Container Platform pull secret 的
Secret
自定义资源。创建基础架构环境。
创建
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
表中的以下字段描述:
字段 | 可选或必需的 | 描述 |
---|---|---|
| 选填 |
定义使用 |
| 选填 |
HTTP 请求的代理 URL。URL 必须以 |
| 选填 |
HTTP 请求的代理 URL。URL 必须以 |
| 选填 | 您不想用代理分开的域和 CIDR 列表。 |
| 选填 | 要添加到所有主机的网络时间协议(NTP)源(主机名或 IP)的列表。它们添加到使用其他选项(如 DHCP)配置的 NTP 源中。 |
| 选填 | 添加到所有主机中的 SSH 公钥,以便在发现阶段用于调试。发现阶段是主机引导发现镜像时。 |
| 必需 | 包含 pull secret 的 Kubernetes secret 名称。 |
| 选填 |
自动添加到 |
| 选填 |
合并高级网络配置,如主机的静态 IP、网桥和绑定。主机网络配置使用您选择的标签在一个或多个 |
| 选填 |
引用描述内部集群的现有 |
| 选填 |
修改 Red Hat CoreOS live 镜像的 ignition 配置,如添加文件。如果需要,请确保只使用 |
| 选填 | 选择以下支持的 CPU 架构之一:x86_64、aarch64、ppc64le 或 s390x。默认值为 x86_64。 |
| 选填 |
当设置为 |
| 选填 |
允许在发现镜像引导时修改内核参数。 |
| 选填 |
如果主机位于带有重新加密 man-in-the-middle (MITM)代理的网络中,或者主机需要为其他目的信任证书(如容器镜像 registry),则通常需要 PEM 编码的 X.509 证书。您的 |
| 选填 |
用于 |
运行以下命令来应用 YAML 内容:
oc apply -f infra-env.yaml
要验证主机清单是否已创建,请使用以下命令检查状态:
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. 使用命令行界面配置高级网络
要使用命令行界面为您的基础架构环境配置高级网络,请完成以下步骤:
创建名为
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"
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必需 | 使用与您要配置的主机或主机相关的名称。 |
| 必需 |
命名空间必须与 |
| 必需 |
添加一个或多个与 |
| 选填 |
描述 |
| 选填 |
描述主机上指定 |
注: 镜像服务会在更新任何 InfraEnv
属性时自动创建新镜像,或更改与其标签选择器匹配的 NMStateConfig
资源。如果您在创建 InfraEnv
资源后添加 NMStateConfig
资源,请通过检查 InfraEnv
中的 createdTime
属性来确保 InfraEnv
创建新的 Discovery 镜像。如果您已经引导的主机,请使用最新的发现镜像再次引导它们。
运行以下命令来应用 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 文件:
- 在控制台中选择 Infrastructure > Host inventory。
- 从列表中选择您的基础架构环境。
点 Add hosts 并选择 With Discovery ISO。
现在,您会看到一个 URL 来下载 ISO 文件。引导的主机出现在主机清单表中。显示主机可能需要几分钟时间。
注: 默认情况下,提供的 ISO 是 最小 ISO。最小 ISO 不包含根文件系统
RootFS
。稍后下载RootFS
。要显示完整的 ISO,请将 URL 中的minimal.iso
替换为full.iso
。- 批准每个主机,以便您可以使用它。您可以单击 Actions 并选择 Approve,从 inventory 表中选择主机。
1.9.6.3. 使用命令行界面添加主机
在 isoDownloadURL
属性中下载 ISO 文件的 URL 处于 InfraEnv
资源的状态。如需有关 InfraEnv
资源的更多信息 ,请参阅使用命令行界面创建主机清单。
每个引导的主机在同一命名空间中创建一个 Agent
资源。
运行以下命令,以查看
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
。使用 URL 下载 ISO 文件并使用 ISO 文件引导主机。
接下来,您需要批准每个主机。请参见以下步骤:
运行以下命令列出所有
代理
:oc get agent -n <infra env namespace>
您会收到类似以下输出的输出:
NAME CLUSTER APPROVED ROLE STAGE 24a92a6f-ea35-4d6f-9579-8f04c0d3591e false auto-assign
使用错误批准状态,从列表中
批准
任何代理
。运行以下命令:oc patch agent -n <infra env namespace> <agent name> -p '{"spec":{"approved":true}}' --type merge
运行以下命令确认批准状态:
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. 使用控制台添加裸机主机
完成以下步骤,使用控制台自动将裸机主机添加到主机清单中:
- 在控制台中选择 Infrastructure > Host inventory。
- 从列表中选择您的基础架构环境。
- 点 Add hosts 并选择 With BMC Form。
- 添加所需信息并点 Create。
1.9.7.3. 使用命令行界面添加裸机主机
完成以下步骤,使用命令行界面自动将裸机主机添加到主机清单中。
通过应用以下 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
的命名空间相同。
通过应用以下 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 集群中有一个裸机主机,并希望从受管集群中删除受管集群,请完成以下步骤:
在您要删除的节点的
BareMetalHost
资源中添加以下注解:bmac.agent-install.openshift.io/remove-agent-and-node-on-delete: true
运行以下命令来删除
BareMetalHost
资源。将<bmh-name
> 替换为BareMetalHost
的名称:oc delete bmh <bmh-name>
1.9.7.4.2. 在没有裸机主机的情况下删除受管集群节点
如果您在 hub 集群中没有裸机主机,并希望从受管集群中删除受管集群,请按照 OpenShift Container Platform 文档中的 Deleting 节点 说明进行操作。
1.9.7.5. 其他资源
- 有关零接触置备的更多信息,请参阅 OpenShift Container Platform 文档中的 网络边缘集群。
- 要了解使用裸机主机所需的端口,请参阅 OpenShift Container Platform 文档中的 带外管理 IP 地址的端口。
- 要了解 root 设备提示,请参阅 OpenShift Container Platform 文档中的 裸机配置。
- 使用镜像 pull secret
- 为内部环境创建凭证
- 如需了解更多有关扩展计算机器的信息,请参阅 OpenShift Container Platform 文档中的手动扩展计算机器集。https://docs.redhat.com/en/documentation/openshift_container_platform/4.15/html-single/machine_management/index#manually-scaling-machineset
1.9.8. 管理主机清单
您可以使用控制台管理主机清单并编辑现有主机,或者使用命令行界面并编辑 Agent
资源。
1.9.8.1. 使用控制台管理主机清单
使用 Discovery ISO 成功引导的每个主机都显示为主机清单中的一行。您可以使用控制台编辑和管理您的主机。如果您手动引导主机且没有使用裸机 Operator 自动化,则必须在控制台中批准主机,才能使用它。已准备好作为 OpenShift 节点安装的主机具有 Available
状态。
1.9.8.2. 使用命令行界面管理主机清单
Agent
资源代表每个主机。您可以在 Agent
资源中设置以下属性:
clusterDeploymentName
如果要将此属性设置为您要使用的
ClusterDeployment
的命名空间和名称,如果要将主机作为集群中的节点安装。可选:
role
设置集群中主机的角色。可能的值有
master
、worker
和auto-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 条件,并带有
True
或False
值:-
SpecSynced:如果成功应用所有指定的属性,则为
True
。如果遇到
一些错误,则为 false。 -
connected: 如果代理连接到安装服务没有混淆,则为
True
。如果代理一段时间未联系安装服务,则为 false。 -
RequirementsMet:如果主机准备好开始安装,则为
True
。 -
validated: 如果所有主机验证都通过,则为
True
。 -
installed :如果主机作为 OpenShift 节点安装,则为
True
。 -
Bound :如果主机绑定到集群,则为
True
。 -
cleanup:如果删除
Agent
resouce 的请求失败,则为False
。
-
SpecSynced:如果成功应用所有指定的属性,则为
debugInfo
包含下载安装日志和事件的 URL。
validationsInfo
包含有关验证的信息,代理在主机被发现后运行,以确保安装成功。如果值为
False
,则进行故障排除。installation_disk_id
您选择的安装磁盘的 ID 在主机清单中可见。