$ curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp-dev-preview/$VERSION/openshift-client-linux.tar.gz | tar zxvf - oc
After deploying an installer-provisioned OpenShift Container Platform cluster, you can use the following procedures to expand the number of worker nodes. Ensure that each prospective worker node meets the prerequisites.
Preparing the bare metal node requires executing the following procedure from the provisioner node.
Get the oc
binary, if needed. It should already exist on the provisioner node.
$ curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp-dev-preview/$VERSION/openshift-client-linux.tar.gz | tar zxvf - oc
$ sudo cp oc /usr/local/bin
Install the ipmitool
.
$ sudo dnf install -y OpenIPMI ipmitool
Power off the bare metal node and ensure it is off.
$ ipmitool -I lanplus -U <user> -P <password> -H <management-server-ip> power off
Where <management-server-ip>
is the IP address of the bare metal node’s base board management controller.
$ ipmitool -I lanplus -U <user> -P <password> -H <management-server-ip> power status
Chassis Power is off
Retrieve the username and password of the bare metal node’s baseboard management controller. Then, create base64
strings from the username and password. In the following example, the username is root
and the password is calvin
.
$ echo -ne "root" | base64
$ echo -ne "calvin" | base64
Create a configuration file for the bare metal node.
$ vim bmh.yaml
---
apiVersion: v1
kind: Secret
metadata:
name: openshift-worker-<num>-bmc-secret
type: Opaque
data:
username: <base64-of-uid>
password: <base64-of-pwd>
---
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
name: openshift-worker-<num>
spec:
online: true
bootMACAddress: <NIC1-mac-address>
bmc:
address: ipmi://<bmc-ip>
credentialsName: openshift-worker-<num>-bmc-secret
Replace <num>
for the worker number of bare metal node in two name
fields and credentialsName
field. Replace <base64-of-uid>
with the base64
string of the username. Replace <base64-of-pwd>
with the base64
string of the password. Replace <NIC1-mac-address>
with the MAC address of the bare metal node’s first NIC. Replace <bmc-ip>
with the IP address of the bare metal node’s baseboard management controller.
Create the bare metal node.
$ oc -n openshift-machine-api create -f bmh.yaml
secret/openshift-worker-<num>-bmc-secret created
baremetalhost.metal3.io/openshift-worker-<num> created
Where <num>
will be the worker number.
Power up and inspect the bare metal node.
$ oc -n openshift-machine-api get bmh openshift-worker-<num>
Where <num>
is the worker node number.
NAME STATUS PROVISIONING STATUS CONSUMER BMC HARDWARE PROFILE ONLINE ERROR
openshift-worker-<num> OK ready ipmi://<out-of-band-ip> unknown true
Provisioning the bare metal node requires executing the following procedure from the provisioner node.
Ensure the PROVISIONING STATUS
is ready
before provisioning the bare metal node.
$ oc -n openshift-machine-api get bmh openshift-worker-<num>
Where <num>
is the worker node number.
NAME STATUS PROVISIONING STATUS CONSUMER BMC HARDWARE PROFILE ONLINE ERROR
openshift-worker-<num> OK ready ipmi://<out-of-band-ip> unknown true
Get a count of the number of worker nodes.
$ oc get nodes
NAME STATUS ROLES AGE VERSION
provisioner.openshift.example.com Ready master 30h v1.16.2
openshift-master-1.openshift.example.com Ready master 30h v1.16.2
openshift-master-2.openshift.example.com Ready master 30h v1.16.2
openshift-master-3.openshift.example.com Ready master 30h v1.16.2
openshift-worker-0.openshift.example.com Ready master 30h v1.16.2
openshift-worker-1.openshift.example.com Ready master 30h v1.16.2
Get the machine set.
$ oc get machinesets -n openshift-machine-api
NAME DESIRED CURRENT READY AVAILABLE AGE
...
openshift-worker-0.example.com 1 1 1 1 55m
openshift-worker-1.example.com 1 1 1 1 55m
Increase the number of worker nodes by one.
$ oc scale --replicas=<num> machineset <machineset> -n openshift-machine-api
Replace <num>
with the new number of worker nodes. Replace <machineset>
with the name of the machine set from the previous step.
Check the status of the bare metal node.
$ oc -n openshift-machine-api get bmh openshift-worker-<num>
Where <num>
is the worker node number. The status changes from ready
to provisioning
.
NAME STATUS PROVISIONING STATUS CONSUMER BMC HARDWARE PROFILE ONLINE ERROR
openshift-worker-<num> OK provisioning openshift-worker-<num>-65tjz ipmi://<out-of-band-ip> unknown true
The provisioning
status remains until the OpenShift Container Platform cluster provisions the node. This can take 30 minutes or more. Once complete, the status will change to provisioned
.
NAME STATUS PROVISIONING STATUS CONSUMER BMC HARDWARE PROFILE ONLINE ERROR
openshift-worker-<num> OK provisioned openshift-worker-<num>-65tjz ipmi://<out-of-band-ip> unknown true
Once provisioned, ensure the bare metal node is ready.
$ oc get nodes
NAME STATUS ROLES AGE VERSION
provisioner.openshift.example.com Ready master 30h v1.16.2
openshift-master-1.openshift.example.com Ready master 30h v1.16.2
openshift-master-2.openshift.example.com Ready master 30h v1.16.2
openshift-master-3.openshift.example.com Ready master 30h v1.16.2
openshift-worker-0.openshift.example.com Ready master 30h v1.16.2
openshift-worker-1.openshift.example.com Ready master 30h v1.16.2
openshift-worker-<num>.openshift.example.com Ready worker 3m27s v1.16.2
You can also check the kubelet.
$ ssh openshift-worker-<num>
[kni@openshift-worker-<num>]$ journalctl -fu kubelet