6.16. 使用静态 IP 地址进行机器扩展


在将集群部署到使用静态 IP 地址运行节点后,您可以扩展机器实例或机器集以使用这些静态 IP 地址之一。

6.16.1. 扩展机器以使用静态 IP 地址

您可以扩展额外的机器集,以使用集群中的预定义静态 IP 地址。对于此配置,您需要创建机器资源 YAML 文件,然后在此文件中定义静态 IP 地址。

先决条件

  • 您已部署了至少一个具有配置静态 IP 地址的节点运行的集群。

流程

  1. 创建机器资源 YAML 文件,并在 network 参数中定义静态 IP 地址网络信息。

    使用 network 参数中定义的静态 IP 地址信息的机器资源 YAML 文件示例。

    apiVersion: machine.openshift.io/v1beta1
    kind: Machine
    metadata:
      creationTimestamp: null
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id>
        machine.openshift.io/cluster-api-machine-role: <role>
        machine.openshift.io/cluster-api-machine-type: <role>
        machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
      name: <infrastructure_id>-<role>
      namespace: openshift-machine-api
    spec:
      lifecycleHooks: {}
      metadata: {}
      providerSpec:
        value:
          apiVersion: machine.openshift.io/v1beta1
          credentialsSecret:
            name: vsphere-cloud-credentials
          diskGiB: 120
          kind: VSphereMachineProviderSpec
          memoryMiB: 8192
          metadata:
            creationTimestamp: null
          network:
            devices:
            - gateway: 192.168.204.1 1
              ipAddrs:
              - 192.168.204.8/24 2
              nameservers: 3
              - 192.168.204.1
              networkName: qe-segment-204
          numCPUs: 4
          numCoresPerSocket: 2
          snapshot: ""
          template: <vm_template_name>
          userDataSecret:
            name: worker-user-data
          workspace:
            datacenter: <vcenter_data_center_name>
            datastore: <vcenter_datastore_name>
            folder: <vcenter_vm_folder_path>
            resourcepool: <vsphere_resource_pool>
            server: <vcenter_server_ip>
    status: {}

    1
    网络接口默认网关的 IP 地址。
    2
    列出安装程序传递给网络接口的 IPv4、IPv6 或两个 IP 地址。两个 IP 系列都必须为默认网络使用相同的网络接口。
    3
    列出 DNS 名称服务器。您可以定义最多 3 个 DNS 名称服务器。如果一个 DNS 名称服务器变得不可访问,请考虑定义多个 DNS 名称服务器以利用 DNS 解析。
    • 在终端中输入以下命令来创建 machine 自定义资源(CR):

      $ oc create -f <file_name>.yaml

6.16.2. 使用配置的静态 IP 地址的机器设置扩展

您可以使用机器集来扩展带有配置的静态 IP 地址的机器。

在将机器集配置为为机器请求静态 IP 地址后,机器控制器会在 openshift-machine-api 命名空间中创建 IPAddressClaim 资源。然后,外部控制器会创建一个 IPAddress 资源,并将任何静态 IP 地址绑定到 IPAddressClaim 资源。

重要

您的组织可能会使用许多类型的 IP 地址管理(IPAM)服务。如果要在 OpenShift Container Platform 上启用特定的 IPAM 服务,您可能需要在 YAML 定义中手动创建 IPAddressClaim 资源,然后在 oc CLI 中输入以下命令来将静态 IP 地址绑定到这个资源:

$ oc create -f <ipaddressclaim_filename>

以下示例演示了 IPAddressClaim 资源的示例:

kind: IPAddressClaim
metadata:
  finalizers:
  - machine.openshift.io/ip-claim-protection
  name: cluster-dev-9n5wg-worker-0-m7529-claim-0-0
  namespace: openshift-machine-api
spec:
  poolRef:
    apiGroup: ipamcontroller.example.io
    kind: IPPool
    name: static-ci-pool
status: {}

机器控制器更新状态为 IPAddressClaimed 的机器,以指示静态 IP 地址被成功绑定到 IPAddressClaim 资源。机器控制器将相同的状态应用到具有多个 IPAddressClaim 资源的机器,每个都包含一个绑定静态 IP 地址。机器控制器会创建一个虚拟机,并将静态 IP 地址应用到机器配置的 providerSpec 中列出的任何节点。

6.16.3. 使用机器集扩展带有配置的静态 IP 地址的机器

您可以使用机器集来扩展带有配置的静态 IP 地址的机器。

该流程中的示例演示了使用控制器在机器集中扩展机器。

先决条件

  • 您已部署了至少一个具有配置静态 IP 地址的节点运行的集群。

流程

  1. 通过在机器集的 YAML 文件的 network.devices.addressesFromPools schema 中指定 IP 池信息来配置机器集:

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      annotations:
        machine.openshift.io/memoryMb: "8192"
        machine.openshift.io/vCPU: "4"
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id>
      name: <infrastructure_id>-<role>
      namespace: openshift-machine-api
    spec:
      replicas: 0
      selector:
        matchLabels:
          machine.openshift.io/cluster-api-cluster: <infrastructure_id>
          machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
      template:
        metadata:
          labels:
            ipam: "true"
            machine.openshift.io/cluster-api-cluster: <infrastructure_id>
            machine.openshift.io/cluster-api-machine-role: worker
            machine.openshift.io/cluster-api-machine-type: worker
            machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
        spec:
          lifecycleHooks: {}
          metadata: {}
          providerSpec:
            value:
              apiVersion: machine.openshift.io/v1beta1
              credentialsSecret:
                name: vsphere-cloud-credentials
              diskGiB: 120
              kind: VSphereMachineProviderSpec
              memoryMiB: 8192
              metadata: {}
              network:
                devices:
                - addressesFromPools: 1
                  - group: ipamcontroller.example.io
                    name: static-ci-pool
                    resource: IPPool
                  nameservers:
                  - "192.168.204.1" 2
                  networkName: qe-segment-204
              numCPUs: 4
              numCoresPerSocket: 2
              snapshot: ""
              template: rvanderp4-dev-9n5wg-rhcos-generated-region-generated-zone
              userDataSecret:
                name: worker-user-data
              workspace:
                datacenter: IBMCdatacenter
                datastore: /IBMCdatacenter/datastore/vsanDatastore
                folder: /IBMCdatacenter/vm/rvanderp4-dev-9n5wg
                resourcePool: /IBMCdatacenter/host/IBMCcluster//Resources
                server: vcenter.ibmc.devcluster.openshift.com
    1
    指定一个 IP 池,它列出了静态 IP 地址或静态 IP 地址的范围。IP 池可以是对自定义资源定义 (CRD) 或 IPAddressClaims 资源处理器支持的资源的引用。机器控制器访问机器集配置中列出的静态 IP 地址,然后为每个机器分配每个地址。
    2
    列出名称服务器.您必须为接收静态 IP 地址的节点指定名称服务器,因为动态主机配置协议 (DHCP) 网络配置不支持静态 IP 地址。
  2. oc CLI 中输入以下命令来扩展机器集:

    $ oc scale --replicas=2 machineset <machineset> -n openshift-machine-api

    或者:

    $ oc edit machineset <machineset> -n openshift-machine-api

    扩展每台机器后,机器控制器会创建一个 IPAddresssClaim 资源。

  3. 可选:输入以下命令检查 openshift-machine-api 命名空间中是否存在 IPAddressClaim 资源:

    $ oc get ipaddressclaims.ipam.cluster.x-k8s.io -n openshift-machine-api

    列出 openshift-machine-api 命名空间中列出两个 IP 池的 oc CLI 输出示例

    NAME                                         POOL NAME        POOL KIND
    cluster-dev-9n5wg-worker-0-m7529-claim-0-0   static-ci-pool   IPPool
    cluster-dev-9n5wg-worker-0-wdqkt-claim-0-0   static-ci-pool   IPPool

  4. 输入以下命令来创建 IPAddress 资源:

    $ oc create -f ipaddress.yaml

    以下示例显示了带有定义网络配置信息的 IPAddress 资源,以及一个定义的静态 IP 地址:

    apiVersion: ipam.cluster.x-k8s.io/v1alpha1
    kind: IPAddress
    metadata:
      name: cluster-dev-9n5wg-worker-0-m7529-ipaddress-0-0
      namespace: openshift-machine-api
    spec:
      address: 192.168.204.129
      claimRef: 1
        name: cluster-dev-9n5wg-worker-0-m7529-claim-0-0
      gateway: 192.168.204.1
      poolRef: 2
        apiGroup: ipamcontroller.example.io
        kind: IPPool
        name: static-ci-pool
      prefix: 23
    1
    目标 IPAddressClaim 资源的名称。
    2
    有关节点的静态 IP 地址或地址的详情。
    注意

    默认情况下,外部控制器会自动扫描机器集中的任何资源,以了解可识别的地址池类型。当外部控制器找到 IPAddress 资源中定义的 kind: IPPool 时,控制器会将任何静态 IP 地址绑定到 IPAddressClaim 资源。

  5. 使用对 IPAddress 资源的引用更新 IPAddressClaim 状态:

    $ oc --type=merge patch IPAddressClaim cluster-dev-9n5wg-worker-0-m7529-claim-0-0 -p='{"status":{"addressRef": {"name": "cluster-dev-9n5wg-worker-0-m7529-ipaddress-0-0"}}}' -n openshift-machine-api --subresource=status
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.