apiVersion: metal3.io/v1alpha1
kind: Provisioning
metadata:
name: provisioning-configuration
spec:
provisioningNetwork: "Disabled"
watchAllNamespaces: false
部署用户配置的基础架构集群后,您可以使用裸机操作符 (BMO) 和其他metal3组件来扩展集群中的裸机主机。这种方法有助于您以更自动化的方式扩展用户配置的集群。
您可以使用裸机操作符 (BMO) 和其他metal3组件来扩展用户配置的基础架构集群。用户配置的基础架构安装不包含机器API操作符。机器API操作符通常管理集群中裸机节点的生命周期。但是,可以使用BMO和其他metal3组件来扩展用户配置集群中的节点,而无需机器API操作符。
创建一个Provisioning
自定义资源 (CR) 以在用户配置的基础架构集群上启用Metal平台组件。
您已在裸机上安装了用户配置的基础架构集群。
创建一个Provisioning
CR。
将以下YAML保存到provisioning.yaml
文件中
apiVersion: metal3.io/v1alpha1
kind: Provisioning
metadata:
name: provisioning-configuration
spec:
provisioningNetwork: "Disabled"
watchAllNamespaces: false
OpenShift Container Platform 4.17 不支持在使用裸机操作符扩展用户配置的集群时启用预配网络。 |
运行以下命令创建Provisioning
CR
$ oc create -f provisioning.yaml
provisioning.metal3.io/provisioning-configuration created
运行以下命令验证预配服务是否正在运行
$ oc get pods -n openshift-machine-api
NAME READY STATUS RESTARTS AGE
cluster-autoscaler-operator-678c476f4c-jjdn5 2/2 Running 0 5d21h
cluster-baremetal-operator-6866f7b976-gmvgh 2/2 Running 0 5d21h
control-plane-machine-set-operator-7d8566696c-bh4jz 1/1 Running 0 5d21h
ironic-proxy-64bdw 1/1 Running 0 5d21h
ironic-proxy-rbggf 1/1 Running 0 5d21h
ironic-proxy-vj54c 1/1 Running 0 5d21h
machine-api-controllers-544d6849d5-tgj9l 7/7 Running 1 (5d21h ago) 5d21h
machine-api-operator-5c4ff4b86d-6fjmq 2/2 Running 0 5d21h
metal3-6d98f84cc8-zn2mx 5/5 Running 0 5d21h
metal3-image-customization-59d745768d-bhrp7 1/1 Running 0 5d21h
您可以使用裸机操作符 (BMO) 通过创建BareMetalHost
自定义资源 (CR) 来在用户配置的集群中预配裸机主机。
使用 BMO 将裸金属主机预配到集群时,默认情况下会在 |
您创建了一个用户预配的裸金属集群。
您可以访问主机的底板管理控制器 (BMC)。
您通过创建 Provisioning
CR 在集群中部署了预配服务。
为裸金属节点创建配置文件。根据您使用静态配置还是 DHCP 服务器,选择以下示例 bmh.yaml
文件之一,并通过替换 YAML 中的值以匹配您的环境来进行配置。
要使用静态配置进行部署,请创建以下 bmh.yaml
文件:
---
apiVersion: v1
kind: Secret
metadata:
name: openshift-worker-<num>-network-config-secret (1)
namespace: openshift-machine-api
type: Opaque
stringData:
nmstate: | (2)
interfaces: (3)
- name: <nic1_name> (4)
type: ethernet
state: up
ipv4:
address:
- ip: <ip_address> (5)
prefix-length: 24
enabled: true
dns-resolver:
config:
server:
- <dns_ip_address> (6)
routes:
config:
- destination: 0.0.0.0/0
next-hop-address: <next_hop_ip_address> (7)
next-hop-interface: <next_hop_nic1_name> (8)
---
apiVersion: v1
kind: Secret
metadata:
name: openshift-worker-<num>-bmc-secret
namespace: openshift-machine-api
type: Opaque
data:
username: <base64_of_uid> (9)
password: <base64_of_pwd>
---
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
name: openshift-worker-<num>
namespace: openshift-machine-api
spec:
online: true
bootMACAddress: <nic1_mac_address> (10)
bmc:
address: <protocol>://<bmc_url> (11)
credentialsName: openshift-worker-<num>-bmc-secret
disableCertificateVerification: false
customDeploy:
method: install_coreos
userData:
name: worker-user-data-managed
namespace: openshift-machine-api
rootDeviceHints:
deviceName: <root_device_hint> (12)
preprovisioningNetworkDataName: openshift-worker-<num>-network-config-secret
1 | 将所有 <num> 实例替换为 name 、credentialsName 和 preprovisioningNetworkDataName 字段中裸金属节点的唯一计算节点编号。 |
2 | 添加 NMState YAML 语法来配置主机接口。要配置新创建节点的网络接口,请指定包含网络配置的密钥的名称。请遵循 nmstate 语法来定义节点的网络配置。有关配置 NMState 语法的详细信息,请参阅“准备裸金属节点”。 |
3 | 可选:如果您已使用 nmstate 配置网络接口,并且想要禁用接口,请将 state: up 与设置为 enabled: false 的 IP 地址一起设置。 |
4 | 将 <nic1_name> 替换为裸金属节点的第一个网络接口控制器 (NIC) 的名称。 |
5 | 将 <ip_address> 替换为裸金属节点的 NIC 的 IP 地址。 |
6 | 将 <dns_ip_address> 替换为裸金属节点的 DNS 解析器的 IP 地址。 |
7 | 将 <next_hop_ip_address> 替换为裸金属节点的外部网关的 IP 地址。 |
8 | 将 <next_hop_nic1_name> 替换为裸金属节点的外部网关的名称。 |
9 | 将 <base64_of_uid> 和 <base64_of_pwd> 替换为用户名和密码的 base64 字符串。 |
10 | 将 <nic1_mac_address> 替换为裸金属节点的第一个 NIC 的 MAC 地址。有关其他 BMC 配置选项,请参阅“BMC 地址”部分。 |
11 | 将 <protocol> 替换为 BMC 协议,例如 IPMI、Redfish 或其他协议。将 <bmc_url> 替换为裸金属节点的基板管理控制器 (BMC) 的 URL。 |
12 | 可选:在指定根设备提示时,将 <root_device_hint> 替换为设备路径。有关更多详细信息,请参阅“根设备提示”。 |
使用 nmstate
通过静态配置配置网络接口时,请将 state: up
与设置为 enabled: false
的 IP 地址一起设置。
---
apiVersion: v1
kind: Secret
metadata:
name: openshift-worker-<num>-network-config-secret
namespace: openshift-machine-api
# ...
interfaces:
- name: <nic_name>
type: ethernet
state: up
ipv4:
enabled: false
ipv6:
enabled: false
# ...
要使用 DHCP 配置进行部署,请创建以下 bmh.yaml
文件:
---
apiVersion: v1
kind: Secret
metadata:
name: openshift-worker-<num>-bmc-secret (1)
namespace: openshift-machine-api
type: Opaque
data:
username: <base64_of_uid> (2)
password: <base64_of_pwd>
---
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
name: openshift-worker-<num>
namespace: openshift-machine-api
spec:
online: true
bootMACAddress: <nic1_mac_address> (3)
bmc:
address: <protocol>://<bmc_url> (4)
credentialsName: openshift-worker-<num>-bmc
disableCertificateVerification: false
customDeploy:
method: install_coreos
userData:
name: worker-user-data-managed
namespace: openshift-machine-api
rootDeviceHints:
deviceName: <root_device_hint> (5)
1 | 将 <num> 替换为 name 和 credentialsName 字段中裸金属节点的唯一计算节点编号。 |
2 | 将 <base64_of_uid> 和 <base64_of_pwd> 替换为用户名和密码的 base64 字符串。 |
3 | 将 <nic1_mac_address> 替换为裸金属节点的第一个 NIC 的 MAC 地址。有关其他 BMC 配置选项,请参阅“BMC 地址”部分。 |
4 | 将 <protocol> 替换为 BMC 协议,例如 IPMI、Redfish 或其他协议。将 <bmc_url> 替换为裸金属节点的基板管理控制器 (BMC) 的 URL。 |
5 | 可选:在指定根设备提示时,将 <root_device_hint> 替换为设备路径。有关更多详细信息,请参阅“根设备提示”。 |
如果现有裸金属节点的 MAC 地址与您尝试预配的裸金属主机的 MAC 地址匹配,则安装将失败。如果主机注册、检查、清理或其他步骤失败,则裸金属操作符将连续重试安装。有关更多详细信息,请参阅“诊断在集群中预配新主机时的重复 MAC 地址”。 |
运行以下命令来创建裸金属节点:
$ oc create -f bmh.yaml
secret/openshift-worker-<num>-network-config-secret created
secret/openshift-worker-<num>-bmc-secret created
baremetalhost.metal3.io/openshift-worker-<num> created
运行以下命令来检查裸金属节点:
$ oc -n openshift-machine-api get bmh openshift-worker-<num>
其中
指定计算节点编号。
NAME STATE CONSUMER ONLINE ERROR
openshift-worker-<num> provisioned true
批准所有证书签名请求 (CSR)。
运行以下命令获取挂起的 CSR 列表:
$ oc get csr
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION
csr-gfm9f 33s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-o
perator:node-bootstrapper <none> Pending
运行以下命令批准 CSR:
$ oc adm certificate approve <csr_name>
certificatesigningrequest.certificates.k8s.io/<csr_name> approved
运行以下命令验证节点是否已准备好:
$ oc get nodes
NAME STATUS ROLES AGE VERSION
app1 Ready worker 47s v1.24.0+dc5a2fd
controller1 Ready master,worker 2d22h v1.24.0+dc5a2fd
您可以选择使用裸金属操作符 (BMO) 来管理用户预配集群中现有的裸金属控制器主机,方法是为现有主机创建 BareMetalHost
对象。管理现有的用户预配主机并非强制要求;但是,您可以将它们注册为外部预配的主机,以用于清单目的。
要使用 BMO 管理现有主机,必须将 |
您创建了一个用户预配的裸金属集群。
您可以访问主机的底板管理控制器 (BMC)。
您通过创建 Provisioning
CR 在集群中部署了预配服务。
创建 Secret
CR 和 BareMetalHost
CR。
将以下 YAML 保存到 controller.yaml
文件中:
---
apiVersion: v1
kind: Secret
metadata:
name: controller1-bmc
namespace: openshift-machine-api
type: Opaque
data:
username: <base64_of_uid>
password: <base64_of_pwd>
---
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
name: controller1
namespace: openshift-machine-api
spec:
bmc:
address: <protocol>://<bmc_url> (1)
credentialsName: "controller1-bmc"
bootMACAddress: <nic1_mac_address>
customDeploy:
method: install_coreos
externallyProvisioned: true (2)
online: true
userData:
name: controller-user-data-managed
namespace: openshift-machine-api
1 | 您只能使用支持虚拟介质网络引导的裸金属主机驱动程序,例如 redfish-virtualmedia 和 idrac-virtualmedia 。 |
2 | 必须将该值设置为 true,以防止 BMO 重新预配裸金属控制器主机。 |
运行以下命令创建裸金属主机对象:
$ oc create -f controller.yaml
secret/controller1-bmc created
baremetalhost.metal3.io/controller1 created
运行以下命令验证 BMO 是否已创建裸金属主机对象:
$ oc get bmh -A
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE
openshift-machine-api controller1 externally provisioned true 13s
您可以使用裸金属操作符 (BMO) 从用户预配集群中删除裸金属主机。
您创建了一个用户预配的裸金属集群。
您可以访问主机的底板管理控制器 (BMC)。
您通过创建 Provisioning
CR 在集群中部署了预配服务。
运行以下命令将节点隔离并清空:
$ oc adm drain app1 --force --ignore-daemonsets=true
node/app1 cordoned
WARNING: ignoring DaemonSet-managed Pods: openshift-cluster-node-tuning-operator/tuned-tvthg, openshift-dns/dns-
default-9q6rz, openshift-dns/node-resolver-zvt42, openshift-image-registry/node-ca-mzxth, openshift-ingress-cana
ry/ingress-canary-qq5lf, openshift-machine-config-operator/machine-config-daemon-v79dm, openshift-monitoring/nod
e-exporter-2vn59, openshift-multus/multus-additional-cni-plugins-wssvj, openshift-multus/multus-fn8tg, openshift
-multus/network-metrics-daemon-5qv55, openshift-network-diagnostics/network-check-target-jqxn2, openshift-ovn-ku
bernetes/ovnkube-node-rsvqg
evicting pod openshift-operator-lifecycle-manager/collect-profiles-27766965-258vp
evicting pod openshift-operator-lifecycle-manager/collect-profiles-27766950-kg5mk
evicting pod openshift-operator-lifecycle-manager/collect-profiles-27766935-stf4s
pod/collect-profiles-27766965-258vp evicted
pod/collect-profiles-27766950-kg5mk evicted
pod/collect-profiles-27766935-stf4s evicted
node/app1 drained
从 BareMetalHost
CR 中删除 customDeploy
规范。
运行以下命令编辑主机的 BareMetalHost
CR:
$ oc edit bmh -n openshift-machine-api <host_name>
删除 spec.customDeploy
和 spec.customDeploy.method
行。
...
customDeploy:
method: install_coreos
运行以下命令验证主机的预配状态是否已更改为 deprovisioning
:
$ oc get bmh -A
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE
openshift-machine-api controller1 externally provisioned true 58m
openshift-machine-api worker1 deprovisioning true 57m
当 BareMetalHost
状态更改为 available
时,运行以下命令删除主机:
$ oc delete bmh -n openshift-machine-api <bmh_name>
您无需编辑 |
运行以下命令删除节点:
$ oc delete node <node_name>
运行以下命令验证您是否已删除节点:
$ oc get nodes
NAME STATUS ROLES AGE VERSION
controller1 Ready master,worker 2d23h v1.24.0+dc5a2fd