Expanding the cluster
After deploying an installer-provisioned OKD 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
Preparing the bare metal node requires executing the following procedure from the provisioner node.
Procedure
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 isroot
and the password iscalvin
.$ 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 twoname
fields andcredentialsName
field. Replace<base64-of-uid>
with thebase64
string of the username. Replace<base64-of-pwd>
with thebase64
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
Provisioning the bare metal node requires executing the following procedure from the provisioner node.
Procedure
Ensure the
PROVISIONING STATUS
isready
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 fromready
toprovisioning
.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 OKD cluster provisions the node. This can take 30 minutes or more. Once complete, the status will change toprovisioned
.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