4.5. 在 IBM Z 上部署托管的 control plane


您可以通过将集群配置为充当管理集群来部署托管的 control plane。管理集群是托管 control plane 的 OpenShift Container Platform 集群。管理集群也称为托管集群。

注意

管理集群不是受管集群。受管集群是 hub 集群管理的集群。

您可以使用 hypershift 附加组件将受管集群转换为管理集群。然后,您可以开始创建托管集群。

multicluster engine Operator 只支持默认的 local-cluster,它是管理的 hub 集群,而 hub 集群作为管理集群。

要在裸机上置备托管的 control plane,您可以使用 Agent 平台。Agent 平台使用中央基础架构管理服务将 worker 节点添加到托管的集群中。如需更多信息,请参阅"启用中央基础架构管理服务"。

每个 IBM Z 系统主机都必须通过中央基础架构管理提供的 PXE 镜像启动。每个主机启动后,它会运行一个代理进程来发现主机的详细信息并完成安装。Agent 自定义资源代表每个主机。

当使用 Agent 平台创建托管集群时,HyperShift Operator 会在托管的 control plane 命名空间中安装 Agent Cluster API 供应商。

4.5.1. 在 IBM Z 上配置托管的 control plane 的先决条件

  • Kubernetes Operator 版本 2.5 或更高版本的多集群引擎必须安装在 OpenShift Container Platform 集群中。您可以从 OpenShift Container Platform OperatorHub 将 multicluster engine Operator 安装为 Operator。
  • multicluster engine Operator 必须至少有一个受管 OpenShift Container Platform 集群。local-cluster 在多集群引擎 Operator 2.5 及更新的版本中自动导入。有关 local-cluster 的更多信息,请参阅 Red Hat Advanced Cluster Management 中的高级配置部分。您可以运行以下命令来检查 hub 集群的状态:

    $ oc get managedclusters local-cluster
  • 您需要一个至少有三个 worker 节点的托管集群来运行 HyperShift Operator。
  • 您需要启用中央基础架构管理服务。如需更多信息,请参阅启用中央基础架构管理服务
  • 您需要安装托管的 control plane 命令行界面。如需更多信息,请参阅安装托管的 control plane 命令行界面

4.5.2. IBM Z 基础架构要求

Agent 平台不会创建任何基础架构,但需要以下基础架构资源:

  • 代理 : 代理 代表使用发现镜像或 PXE 镜像引导的主机,并准备好置备为 OpenShift Container Platform 节点。
  • DNS :API 和入口端点必须可以被路由。

托管的 control plane 功能默认启用。如果您禁用了该功能并希望手动启用它,或者需要禁用该功能,请参阅启用或禁用托管的 control plane 功能

4.5.3. IBM Z 上托管的 control plane 的 DNS 配置

托管集群的 API 服务器作为 NodePort 服务公开。必须存在 api.<hosted_cluster_name>.<base_domain> 的 DNS 条目,指向可以访问 API 服务器的目标。

DNS 条目可以是一个简单的记录,指向运行托管 control plane 的受管集群中的一个节点。

该条目也可以指向部署的负载均衡器,将传入的流量重定向到 Ingress pod。

请参阅以下 DNS 配置示例:

$ cat /var/named/<example.krnl.es.zone>

输出示例

$ TTL 900
@ IN  SOA bastion.example.krnl.es.com. hostmaster.example.krnl.es.com. (
      2019062002
      1D 1H 1W 3H )
  IN NS bastion.example.krnl.es.com.
;
;
api                   IN A 1xx.2x.2xx.1xx 1
api-int               IN A 1xx.2x.2xx.1xx
;
;
*.apps        IN A 1xx.2x.2xx.1xx
;
;EOF

1
记录指的是 API 负载均衡器的 IP 地址,用于处理托管 control plane 的入口和出口流量。

对于 IBM z/VM,添加与代理 IP 地址对应的 IP 地址。

compute-0              IN A 1xx.2x.2xx.1yy
compute-1              IN A 1xx.2x.2xx.1yy

4.5.4. 在裸机上创建托管集群

当使用 Agent 平台创建托管集群时,Hyper HyperShift 会在托管的 control plane 命名空间中安装 Agent Cluster API 供应商。您可以在裸机上创建托管集群或导入一个集群。

在创建托管集群时,请记住以下准则:

  • 每个托管集群都必须具有集群范围的唯一名称。托管的集群名称不能与任何现有的受管集群相同,以便多集群引擎 Operator 可以管理它。
  • 不要使用 clusters 作为托管的集群名称。
  • 无法在多集群引擎 Operator 受管集群的命名空间中创建托管集群。

流程

  1. 输入以下命令来创建托管的 control plane 命名空间:

    $ oc create ns <hosted_cluster_namespace>-<hosted_cluster_name>

    <hosted_cluster_namespace> 替换为托管集群命名空间名称,如 clusters。将 <hosted_cluster_name> 替换为托管集群的名称。

  2. 验证您是否为集群配置了默认存储类。否则,您可能会看到待处理的 PVC。运行以下命令:

    $ hcp create cluster agent \
        --name=<hosted_cluster_name> \1
        --pull-secret=<path_to_pull_secret> \2
        --agent-namespace=<hosted_control_plane_namespace> \3
        --base-domain=<basedomain> \4
        --api-server-address=api.<hosted_cluster_name>.<basedomain> \5
        --etcd-storage-class=<etcd_storage_class> \6
        --ssh-key  <path_to_ssh_public_key> \7
        --namespace <hosted_cluster_namespace> \8
        --control-plane-availability-policy HighlyAvailable \9
        --release-image=quay.io/openshift-release-dev/ocp-release:<ocp_release_image> 10
    1
    指定托管集群的名称,如 example
    2
    指定 pull secret 的路径,例如 /user/name/pullsecret
    3
    指定托管的 control plane 命名空间,如 cluster-example。使用 oc get agent -n <hosted_control_plane_namespace> 命令,确保此命名空间中有代理可用。
    4
    指定您的基域,如 krnl.es
    5
    --api-server-address 标志定义用于托管集群中的 Kubernetes API 通信的 IP 地址。如果没有设置 --api-server-address 标志,您必须登录以连接到管理集群。
    6
    指定 etcd 存储类名称,如 lvm-storageclass
    7
    指定 SSH 公钥的路径。默认文件路径为 ~/.ssh/id_rsa.pub
    8
    指定托管集群命名空间。
    9
    control plane 可用性策略的默认值为 HighlyAvailable
    10
    指定您要使用的 OpenShift Container Platform 版本,如 4.17.0-multi。如果您使用断开连接的环境,将 <ocp_release_image> 替换为摘要镜像。要提取 OpenShift Container Platform 发行镜像摘要,请参阅 提取 OpenShift Container Platform 发行镜像摘要
  3. 片刻后,输入以下命令验证托管 control plane pod 是否正在运行:

    $ oc -n <hosted_control_plane_namespace> get pods

    输出示例

    NAME                                             READY   STATUS    RESTARTS   AGE
    capi-provider-7dcf5fc4c4-nr9sq                   1/1     Running   0          4m32s
    catalog-operator-6cd867cc7-phb2q                 2/2     Running   0          2m50s
    certified-operators-catalog-884c756c4-zdt64      1/1     Running   0          2m51s
    cluster-api-f75d86f8c-56wfz                      1/1     Running   0          4m32s

4.5.5. 为 IBM Z 上托管的 control plane 创建 InfraEnv 资源

InfraEnv 是一个使用 PXE 镜像引导的主机可作为代理加入的环境。在这种情况下,代理会在与您托管的 control plane 相同的命名空间中创建。

流程

  1. 创建 YAML 文件以包含配置。请参见以下示例:

    apiVersion: agent-install.openshift.io/v1beta1
    kind: InfraEnv
    metadata:
      name: <hosted_cluster_name>
      namespace: <hosted_control_plane_namespace>
    spec:
      cpuArchitecture: s390x
      pullSecretRef:
        name: pull-secret
      sshAuthorizedKey: <ssh_public_key>
  2. 将文件保存为 infraenv-config.yaml
  3. 输入以下命令应用配置:

    $ oc apply -f infraenv-config.yaml
  4. 要获取下载 PXE 镜像的 URL,如 initrd.imgkernel.imgrootfs.img,它允许 IBM Z 机器作为代理加入,请输入以下命令:

    $ oc -n <hosted_control_plane_namespace> get InfraEnv <hosted_cluster_name> -o json

4.5.6. 在 InfraEnv 资源中添加 IBM Z 代理

要将计算节点附加到托管的 control plane,请创建有助于您扩展节点池的代理。在 IBM Z 环境中添加代理需要额外的步骤,这在本节中详细介绍。

除非另有说明,否则这些步骤适用于 IBM Z 和 IBM LinuxONE 上的 z/VM 和 RHEL KVM 安装。

4.5.6.1. 将 IBM Z KVM 作为代理添加

对于带有 KVM 的 IBM Z,运行以下命令,使用从 InfraEnv 资源下载的 PXE 镜像启动 IBM Z 环境。创建代理后,主机与 Assisted Service 通信,并注册与管理集群上的 InfraEnv 资源相同的命名空间中。

流程

  1. 运行以下命令:

    virt-install \
       --name "<vm_name>" \ 1
       --autostart \
       --ram=16384 \
       --cpu host \
       --vcpus=4 \
       --location "<path_to_kernel_initrd_image>,kernel=kernel.img,initrd=initrd.img" \ 2
       --disk <qcow_image_path> \ 3
       --network network:macvtap-net,mac=<mac_address> \ 4
       --graphics none \
       --noautoconsole \
       --wait=-1
       --extra-args "rd.neednet=1 nameserver=<nameserver>   coreos.live.rootfs_url=http://<http_server>/rootfs.img random.trust_cpu=on rd.luks.options=discard ignition.firstboot ignition.platform.id=metal console=tty1 console=ttyS1,115200n8 coreos.inst.persistent-kargs=console=tty1 console=ttyS1,115200n8" 5
    1
    指定虚拟机的名称。
    2
    指定 kernel_initrd_image 文件的位置。
    3
    指定磁盘镜像路径。
    4
    指定 Mac 地址。
    5
    指定代理的服务器名称。
  2. 对于 ISO 引导,从 InfraEnv 资源下载 ISO,并运行以下命令来引导节点:

    virt-install \
      --name "<vm_name>" \ 1
      --autostart \
      --memory=16384 \
      --cpu host \
      --vcpus=4 \
      --network network:macvtap-net,mac=<mac_address> \ 2
      --cdrom "<path_to_image.iso>" \ 3
      --disk <qcow_image_path> \
      --graphics none \
      --noautoconsole \
      --os-variant <os_version> \ 4
      --wait=-1
    1
    指定虚拟机的名称。
    2
    指定 Mac 地址。
    3
    指定 image.iso 文件的位置。
    4
    指定您使用的操作系统版本。

4.5.6.2. 添加 IBM Z LPAR 作为代理

您可以在 IBM Z 或 IBM LinuxONE 上将逻辑分区(LPAR)作为计算节点添加到托管的 control plane。

流程

  1. 为代理创建引导参数文件:

    参数文件示例

    rd.neednet=1 cio_ignore=all,!condev \
    console=ttysclp0 \
    ignition.firstboot ignition.platform.id=metal
    coreos.live.rootfs_url=http://<http_server>/rhcos-<version>-live-rootfs.<architecture>.img \1
    coreos.inst.persistent-kargs=console=ttysclp0
    ip=<ip>::<gateway>:<netmask>:<hostname>::none nameserver=<dns> \2
    rd.znet=qeth,<network_adaptor_range>,layer2=1
    rd.<disk_type>=<adapter> \3
    zfcp.allow_lun_scan=0
    ai.ip_cfg_override=1 \4
    random.trust_cpu=on rd.luks.options=discard

    1
    对于 coreos.live.rootfs_url 工件,请为您要启动的 kernelinitramfs 指定匹配的 rootfs 工件。仅支持 HTTP 和 HTTPS 协议。
    2
    对于 ip 参数,请手动分配 IP 地址,如 在 IBM Z 和 IBM LinuxONE 中使用 z/VM 安装集群中所述。
    3
    对于在 DASD 类型磁盘中安装,请使用 rd.dasd 指定要安装 Red Hat Enterprise Linux CoreOS (RHCOS) 的 DASD。对于在 FCP 类型磁盘中安装,请使用 rd.zfcp=<adapter>,<wwpn>,<lun> 指定要安装 RHCOS 的 FCP 磁盘。
    4
    使用 Open Systems Adapter (OSA) 或 HiperSockets 时指定此参数。
  2. InfraEnv 资源下载 .insinitrd.img.addrsize 文件。

    默认情况下,InfraEnv 资源中没有 .insinitrd.img.addrsize 文件的 URL。您必须编辑 URL 来获取这些工件。

    1. 运行以下命令,将内核 URL 端点更新为包含 ins-file

      $ curl -k -L -o generic.ins "< url for ins-file >"

      URL 示例

      https://…/boot-artifacts/ins-file?arch=s390x&version=4.17.0

    2. 更新 initrd URL 端点,使其包含 s390x-initrd-addrsize

      URL 示例

      https://…./s390x-initrd-addrsize?api_key=<api-key>&arch=s390x&version=4.17.0

  3. initrdkernelcommon.insinitrd.img.addrsize 参数文件传输到文件服务器。有关如何使用 FTP 和引导传输文件的更多信息,请参阅"在 LPAR 中安装"。
  4. 启动机器。
  5. 对集群中的所有其他机器重复这个过程。

其他资源

4.5.6.3. 添加 IBM z/VM 作为代理

如果要将静态 IP 用于 z/VM 客户机,您必须为 z/VM 代理配置 NMStateConfig 属性,以便 IP 参数保留在第二个启动中。

完成以下步骤,使用从 InfraEnv 资源下载的 PXE 镜像启动 IBM Z 环境。创建代理后,主机与 Assisted Service 通信,并注册与管理集群上的 InfraEnv 资源相同的命名空间中。

流程

  1. 更新参数文件,以添加 rootfs_urlnetwork_adaptordisk_type 值。

    参数文件示例

    rd.neednet=1 cio_ignore=all,!condev \
    console=ttysclp0  \
    ignition.firstboot ignition.platform.id=metal \
    coreos.live.rootfs_url=http://<http_server>/rhcos-<version>-live-rootfs.<architecture>.img \1
    coreos.inst.persistent-kargs=console=ttysclp0
    ip=<ip>::<gateway>:<netmask>:<hostname>::none nameserver=<dns> \2
    rd.znet=qeth,<network_adaptor_range>,layer2=1
    rd.<disk_type>=<adapter> \3
    zfcp.allow_lun_scan=0
    ai.ip_cfg_override=1 \4

    1
    对于 coreos.live.rootfs_url 工件,请为您要启动的 kernelinitramfs 指定匹配的 rootfs 工件。仅支持 HTTP 和 HTTPS 协议。
    2
    对于 ip 参数,请手动分配 IP 地址,如 在 IBM Z 和 IBM LinuxONE 中使用 z/VM 安装集群中所述。
    3
    对于在 DASD 类型磁盘中安装,请使用 rd.dasd 指定要安装 Red Hat Enterprise Linux CoreOS (RHCOS) 的 DASD。对于在 FCP 类型磁盘中安装,请使用 rd.zfcp=<adapter>,<wwpn>,<lun> 指定要安装 RHCOS 的 FCP 磁盘。
    4
    使用 Open Systems Adapter (OSA) 或 HiperSockets 时指定此参数。
  2. 运行以下命令,将 initrd、内核镜像和参数文件移到客户虚拟机中:

    vmur pun -r -u -N kernel.img $INSTALLERKERNELLOCATION/<image name>
    vmur pun -r -u -N generic.parm $PARMFILELOCATION/paramfilename
    vmur pun -r -u -N initrd.img $INSTALLERINITRAMFSLOCATION/<image name>
  3. 从客户机虚拟机控制台运行以下命令:

    cp ipl c
  4. 要列出代理及其属性,请输入以下命令:

    $ oc -n <hosted_control_plane_namespace> get agents

    输出示例

    NAME    CLUSTER APPROVED    ROLE    STAGE
    50c23cda-cedc-9bbd-bcf1-9b3a5c75804d    auto-assign
    5e498cd3-542c-e54f-0c58-ed43e28b568a    auto-assign

  5. 运行以下命令来批准代理。

    $ oc -n <hosted_control_plane_namespace> patch agent \
      50c23cda-cedc-9bbd-bcf1-9b3a5c75804d -p \
      '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-zvm-0.hostedn.example.com"}}' \1
      --type merge
    1
    另外,您还可以在规格中设置代理 ID <installation_disk_id><hostname>
  6. 运行以下命令验证代理是否已批准:

    $ oc -n <hosted_control_plane_namespace> get agents

    输出示例

    NAME                                            CLUSTER     APPROVED   ROLE          STAGE
    50c23cda-cedc-9bbd-bcf1-9b3a5c75804d             true       auto-assign
    5e498cd3-542c-e54f-0c58-ed43e28b568a             true       auto-assign

4.5.7. 为 IBM Z 上托管集群扩展 NodePool 对象

NodePool 对象在创建托管集群时创建。通过扩展 NodePool 对象,您可以在托管的 control plane 中添加更多计算节点。

当您扩展节点池时,会创建一个机器。Cluster API 供应商会找到已批准的、通过验证的、当前没有被使用但满足节点池规格中指定的要求的代理。您可以通过检查其状态和条件来监控代理的安装。

当您缩减节点池时,代理会从对应的集群绑定。在重复使用集群前,您必须使用 PXE 镜像引导集群以更新节点数。

流程

  1. 运行以下命令,将 NodePool 对象扩展到两个节点:

    $ oc -n <clusters_namespace> scale nodepool <nodepool_name> --replicas 2

    Cluster API 代理供应商会随机选择两个分配给托管集群的代理。这些代理会经历不同的状态,最终将托管集群作为 OpenShift Container Platform 节点加入。代理按以下顺序通过转换阶段:

    • binding
    • discovering
    • insufficient
    • installing
    • install-in-progress
    • added-to-existing-cluster
  2. 运行以下命令,以查看特定扩展代理的状态:

    $ oc -n <hosted_control_plane_namespace> get agent -o \
      jsonpath='{range .items[*]}BMH: {@.metadata.labels.agent-install\.openshift\.io/bmh} \
      Agent: {@.metadata.name} State: {@.status.debugInfo.state}{"\n"}{end}'

    输出示例

    BMH: Agent: 50c23cda-cedc-9bbd-bcf1-9b3a5c75804d State: known-unbound
    BMH: Agent: 5e498cd3-542c-e54f-0c58-ed43e28b568a State: insufficient

  3. 运行以下命令来查看转换阶段:

    $ oc -n <hosted_control_plane_namespace> get agent

    输出示例

    NAME                                   CLUSTER           APPROVED       ROLE        STAGE
    50c23cda-cedc-9bbd-bcf1-9b3a5c75804d   hosted-forwarder   true          auto-assign
    5e498cd3-542c-e54f-0c58-ed43e28b568a                      true          auto-assign
    da503cf1-a347-44f2-875c-4960ddb04091   hosted-forwarder   true          auto-assign

  4. 运行以下命令以生成 kubeconfig 文件来访问托管集群:

    $ hcp create kubeconfig --namespace <clusters_namespace> --name <hosted_cluster_namespace> > <hosted_cluster_name>.kubeconfig
  5. 代理访问 added-to-existing-cluster 状态后,输入以下命令验证您可以看到 OpenShift Container Platform 节点:

    $ oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes

    输出示例

    NAME                             STATUS   ROLES    AGE      VERSION
    worker-zvm-0.hostedn.example.com Ready    worker   5m41s    v1.24.0+3882f8f
    worker-zvm-1.hostedn.example.com Ready    worker   6m3s     v1.24.0+3882f8f

    集群 Operator 开始通过向节点添加工作负载来协调。

  6. 输入以下命令验证在扩展 NodePool 对象时是否创建了两台机器:

    $ oc -n <hosted_control_plane_namespace> get machine.cluster.x-k8s.io

    输出示例

    NAME                                CLUSTER  NODENAME PROVIDERID     PHASE     AGE   VERSION
    hosted-forwarder-79558597ff-5tbqp   hosted-forwarder-crqq5   worker-zvm-0.hostedn.example.com   agent://50c23cda-cedc-9bbd-bcf1-9b3a5c75804d   Running   41h   4.15.0
    hosted-forwarder-79558597ff-lfjfk   hosted-forwarder-crqq5   worker-zvm-1.hostedn.example.com   agent://5e498cd3-542c-e54f-0c58-ed43e28b568a   Running   41h   4.15.0

  7. 运行以下命令来检查集群版本:

    $ oc --kubeconfig <hosted_cluster_name>.kubeconfig get clusterversion,co

    输出示例

    NAME                                         VERSION       AVAILABLE   PROGRESSING   SINCE   STATUS
    clusterversion.config.openshift.io/version   4.15.0-ec.2   True        False         40h     Cluster version is 4.15.0-ec.2

  8. 运行以下命令来检查集群 Operator 状态:

    $ oc --kubeconfig <hosted_cluster_name>.kubeconfig get clusteroperators

对于集群的每个组件,输出显示以下集群操作器状态: NAME,VERSION,AVAILABLE,PROGRESSING,DEGRADED,SINCE, 和 MESSAGE

如需输出示例,请参阅 Initial Operator 配置

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.