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


重要

对于 IBM Z 上的托管 control plane,您必须根据 64 位 x86 架构在机器类型上运行 control plane,以及 IBM Power 或 IBM Z 上的节点池。有关其他架构上的 IBM Z 上托管的 control plane 的信息,请参阅 托管 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 供应商。

  • 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. 使用 CLI 创建托管集群

在裸机基础架构上,您可以创建或导入托管集群。在为多集群引擎 Operator 启用 Assisted Installer 作为附加组件后,您可以使用 Agent 平台创建一个托管集群,HyperShift Operator 会在托管的 control plane 命名空间中安装 Agent Cluster API 供应商。Agent Cluster API 供应商连接托管 control plane 和一个仅由计算节点组成的托管集群的管理集群。

先决条件

  • 每个托管集群都必须具有集群范围的唯一名称。托管的集群名称都不能与任何现有受管集群相同。否则,多集群引擎 Operator 无法管理托管集群。
  • 不要使用单词 cluster 作为托管的集群名称。
  • 您不能在多集群引擎 Operator 受管集群的命名空间中创建托管集群。
  • 为获得最佳安全性和管理实践,请创建一个与其他托管集群分开的托管集群。
  • 验证您是否为集群配置了默认存储类。否则,您可能会看到待处理的持久性卷声明(PVC)。
  • 默认情况下,当使用 hcp create cluster agent 命令时,命令会创建一个带有配置的节点端口的托管集群。裸机上托管集群的首选发布策略通过负载均衡器公开服务。如果使用 Web 控制台或使用 Red Hat Advanced Cluster Management 创建托管集群,要为 Kubernetes API 服务器以外的服务设置发布策略,您必须在 HostedCluster 自定义资源中手动指定 servicePublishingStrategy 信息。
  • 确保您满足裸机上托管 control plane 的 "Requirements for hosted control plane" 中描述的要求,其中包括与基础架构、防火墙、端口和服务相关的要求。例如,这些要求描述了如何在管理集群中的裸机主机中添加适当的区标签,如下例所示:

    $ oc label node [compute-node-1] topology.kubernetes.io/zone=zone1
    $ oc label node [compute-node-2] topology.kubernetes.io/zone=zone2
    $ oc label node [compute-node-3] topology.kubernetes.io/zone=zone3
  • 确保您已将裸机节点添加到硬件清单中。

流程

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

    $ oc create ns <hosted_cluster_namespace>

    <hosted_cluster_namespace > 替换为托管集群命名空间的标识符。HyperShift Operator 创建命名空间。在裸机基础架构上托管集群创建过程中,生成的 Cluster API 供应商角色需要命名空间已存在。

  2. 输入以下命令为托管集群创建配置文件:

    $ 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=<base_domain> \
    4
    
      --api-server-address=api.<hosted_cluster_name>.<base_domain> \
    5
    
      --etcd-storage-class=<etcd_storage_class> \
    6
    
      --ssh-key=<path_to_ssh_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>-multi \
    10
    
      --node-pool-replicas=<node_pool_replica_count> \
    11
    
      --render \
      --render-sensitive \
      --ssh-key <home_directory>/<path_to_ssh_key>/<ssh_key> > hosted-cluster-config.yaml 
    12
    1
    指定托管集群的名称,
    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 组件的可用性策略。支持的选项包括 SingleReplicaHighlyAvailable。默认值为 HighlyAvailable
    10
    指定您要使用的 OpenShift Container Platform 版本,如 4.19.0-multi。如果您使用断开连接的环境,将 <ocp_release_image> 替换为摘要镜像。要提取 OpenShift Container Platform 发行镜像摘要,请参阅 提取 OpenShift Container Platform 发行镜像摘要
    11
    指定节点池副本数,如 3。您必须将副本数指定为 0 或更高,才能创建相同数量的副本。否则,您不会创建节点池。
    12
    --ssh-key 标志后,指定 SSH 密钥的路径,如 user/.ssh/id_rsa
  3. 配置服务发布策略。默认情况下,托管集群使用 NodePort 服务发布策略,因为节点端口始终在没有额外基础架构的情况下可用。但是,您可以将服务发布策略配置为使用负载均衡器。

    • 如果您使用默认的 NodePort 策略,请将 DNS 配置为指向托管的集群计算节点,而不是管理集群节点。如需更多信息,请参阅"裸机上的 DNS 配置"。
    • 对于生产环境,请使用 LoadBalancer 策略,因为此策略提供证书处理和自动 DNS 解析。以下示例演示了在托管集群配置文件中更改服务发布 LoadBalancer 策略:

      # ...
      spec:
        services:
        - service: APIServer
          servicePublishingStrategy:
            type: LoadBalancer 
      1
      
        - service: Ignition
          servicePublishingStrategy:
            type: Route
        - service: Konnectivity
          servicePublishingStrategy:
            type: Route
        - service: OAuthServer
          servicePublishingStrategy:
            type: Route
        - service: OIDC
          servicePublishingStrategy:
            type: Route
        sshKey:
          name: <ssh_key>
      # ...
      1
      指定 LoadBalancer 作为 API 服务器类型。对于所有其他服务,将 Route 指定为类型。
  4. 输入以下命令将更改应用到托管集群配置文件:

    $ oc apply -f hosted_cluster_config.yaml
  5. 输入以下命令检查托管集群、节点池和 pod 的创建:

    $ oc get hostedcluster \
      <hosted_cluster_namespace> -n \
      <hosted_cluster_namespace> -o \
      jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
    $ oc get nodepool \
      <hosted_cluster_namespace> -n \
      <hosted_cluster_namespace> -o \
      jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
    $ oc get pods -n <hosted_cluster_namespace>
  6. 确认托管集群已就绪。Available: True 的状态表示集群的就绪状态,节点池状态显示 AllMachinesReady: True。这些状态表示所有集群 Operator 的运行状况。
  7. 在托管集群中安装 MetalLB:

    1. 从托管集群中提取 kubeconfig 文件,并输入以下命令为托管集群访问设置环境变量:

      $ oc get secret \
        <hosted_cluster_namespace>-admin-kubeconfig \
        -n <hosted_cluster_namespace> \
        -o jsonpath='{.data.kubeconfig}' \
        | base64 -d > \
        kubeconfig-<hosted_cluster_namespace>.yaml
      $ export KUBECONFIG="/path/to/kubeconfig-<hosted_cluster_namespace>.yaml"
    2. 通过创建 install-metallb-operator.yaml 文件来安装 MetalLB Operator:

      apiVersion: v1
      kind: Namespace
      metadata:
        name: metallb-system
      ---
      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: metallb-operator
        namespace: metallb-system
      ---
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: metallb-operator
        namespace: metallb-system
      spec:
        channel: "stable"
        name: metallb-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
        installPlanApproval: Automatic
      # ...
    3. 输入以下命令应用该文件:

      $ oc apply -f install-metallb-operator.yaml
    4. 通过创建 deploy-metallb-ipaddresspool.yaml 文件来配置 MetalLB IP 地址池:

      apiVersion: metallb.io/v1beta1
      kind: IPAddressPool
      metadata:
        name: metallb
        namespace: metallb-system
      spec:
        autoAssign: true
        addresses:
        - 10.11.176.71-10.11.176.75
      ---
      apiVersion: metallb.io/v1beta1
      kind: L2Advertisement
      metadata:
        name: l2advertisement
        namespace: metallb-system
      spec:
        ipAddressPools:
        - metallb
      # ...
    5. 输入以下命令应用配置:

      $ oc apply -f deploy-metallb-ipaddresspool.yaml
    6. 输入以下命令检查 Operator 状态、IP 地址池和 L2Advertisement 资源来验证 MetalLB 的安装:

      $ oc get pods -n metallb-system
      $ oc get ipaddresspool -n metallb-system
      $ oc get l2advertisement -n metallb-system
  8. 为入口配置负载均衡器:

    1. 创建 ingress-loadbalancer.yaml 文件:

      apiVersion: v1
      kind: Service
      metadata:
        annotations:
          metallb.universe.tf/address-pool: metallb
        name: metallb-ingress
        namespace: openshift-ingress
      spec:
        ports:
          - name: http
            protocol: TCP
            port: 80
            targetPort: 80
          - name: https
            protocol: TCP
            port: 443
            targetPort: 443
        selector:
          ingresscontroller.operator.openshift.io/deployment-ingresscontroller: default
        type: LoadBalancer
      # ...
    2. 输入以下命令应用配置:

      $ oc apply -f ingress-loadbalancer.yaml
    3. 输入以下命令验证负载均衡器服务是否按预期工作:

      $ oc get svc metallb-ingress -n openshift-ingress

      输出示例

      NAME              TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)                      AGE
      metallb-ingress   LoadBalancer   172.31.127.129   10.11.176.71   80:30961/TCP,443:32090/TCP   16h

  9. 配置 DNS 以使用负载均衡器:

    1. 通过将 5.2. apps .<hosted_cluster_namespace>.<base_domain> 通配符 DNS 记录指向负载均衡器 IP 地址,为 apps 域配置 DNS。
    2. 输入以下命令验证 DNS 解析:

      $ nslookup console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain> <load_balancer_ip_address>

      输出示例

      Server:         10.11.176.1
      Address:        10.11.176.1#53
      
      Name:   console-openshift-console.apps.my-hosted-cluster.sample-base-domain.com
      Address: 10.11.176.71

验证

  1. 输入以下命令检查集群 Operator:

    $ oc get clusteroperators

    确保所有 Operator 显示 AVAILABLE: True,PROGRESSING: False, 和 DEGRADED: False

  2. 输入以下命令检查节点:

    $ oc get nodes

    确保每个节点都有 READY 状态。

  3. 通过在 Web 浏览器中输入以下 URL 来测试对控制台的访问:

    https://console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain>

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 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部