6.16. 使用静态 IP 地址进行机器扩展
在将集群部署到使用静态 IP 地址运行节点后,您可以扩展机器实例或机器集以使用这些静态 IP 地址之一。
其他资源
6.16.1. 扩展机器以使用静态 IP 地址
您可以扩展额外的机器集,以使用集群中的预定义静态 IP 地址。对于此配置,您需要创建机器资源 YAML 文件,然后在此文件中定义静态 IP 地址。
先决条件
- 您已部署了至少一个具有配置静态 IP 地址的节点运行的集群。
流程
创建机器资源 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: {}
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 地址的节点运行的集群。
流程
通过在机器集的 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
在
oc
CLI 中输入以下命令来扩展机器集:$ oc scale --replicas=2 machineset <machineset> -n openshift-machine-api
或者:
$ oc edit machineset <machineset> -n openshift-machine-api
扩展每台机器后,机器控制器会创建一个
IPAddresssClaim
资源。可选:输入以下命令检查
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
输入以下命令来创建
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
注意默认情况下,外部控制器会自动扫描机器集中的任何资源,以了解可识别的地址池类型。当外部控制器找到
IPAddress
资源中定义的kind: IPPool
时,控制器会将任何静态 IP 地址绑定到IPAddressClaim
资源。使用对
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