Master node configuration (compact cluster)
You can deploy compact-3-node clusters with Red Hat OpenShift Container Platform 4.5 and later. For more information, see Delivering a Three-node Architecture for Edge Deployments in Red Hat Hybrid Cloud documentation.
In this configuration, verify that the system is sized correctly to operate smoothly. In compact clusters, the Kubernetes control plane, IBM Storage Scale container native pods, and user applications, all compete for the same resources in the cluster. High application loads can impact the control plane resources, causing the Red Hat OpenShift cluster to become unusable or unstable. etcd is sensitive to latency and might present as frequent leader elections, and other instabilities. IBM Storage Scale container native might also take down the file system if resources are constrained.
For more information, see Recommended etcd practices in Red Hat OpenShift documentation.
Schedulable control plane nodes
To allow pod placement for master nodes, also known as control plane nodes, make sure that they are configured as schedulable
. By default, control plane nodes are not schedulable.
Verify mastersSchedulable
is set to true
by entering the following command:
oc get schedulers.config.openshift.io cluster -ojson | jq -r ".spec.mastersSchedulable"
If this value is not true
, patch the cluster by entering the following command:
oc patch schedulers.config.openshift.io cluster --type='json' \
-p='[{"op": "replace", "path": "/spec/mastersSchedulable", "value":true}]'
For more information, see Configuring control plane nodes as schedulable in the Red Hat OpenShift documentation.
Applying Machine Config Operator (MCO) settings
Similar to the configuration tasks required on the workers nodes, these Machine Config Operator (MCO) settings must be applied to the master nodes in a compact-cluster environment.
Apply the correct sample file based on your OpenShift Container Platform version and machine architecture.
-
If you are running x86_64, enter the following commands for the relevant versions:
For 4.14:
curl https://raw.githubusercontent.com/IBM/ibm-spectrum-scale-container-native/v5.2.1.x/generated/scale/mco/ocp4.14/mco_x86_64.yaml | sed 's/worker/master/g' | oc apply -f -
For 4.15:
curl https://raw.githubusercontent.com/IBM/ibm-spectrum-scale-container-native/v5.2.1.x/generated/scale/mco/ocp4.15/mco_x86_64.yaml | sed 's/worker/master/g' | oc apply -f -
For 4.16:
curl https://raw.githubusercontent.com/IBM/ibm-spectrum-scale-container-native/v5.2.1.x/generated/scale/mco/ocp4.16/mco_x86_64.yaml | sed 's/worker/master/g' | oc apply -f -
-
If you are running ppc64le, enter the following commands for the relevant versions:
For 4.14:
curl https://raw.githubusercontent.com/IBM/ibm-spectrum-scale-container-native/v5.2.1.x/generated/scale/mco/ocp4.14/mco_ppc64le.yaml | sed 's/worker/master/g' | oc apply -f -
For 4.15:
curl https://raw.githubusercontent.com/IBM/ibm-spectrum-scale-container-native/v5.2.1.x/generated/scale/mco/ocp4.15/mco_ppc64le.yaml | sed 's/worker/master/g' | oc apply -f -
For 4.16:
curl https://raw.githubusercontent.com/IBM/ibm-spectrum-scale-container-native/v5.2.1.x/generated/scale/mco/ocp4.16/mco_ppc64le.yaml | sed 's/worker/master/g' | oc apply -f -
-
If you are running s390x, enter the following commands for the relevant versions:
For 4.14:
curl https://raw.githubusercontent.com/IBM/ibm-spectrum-scale-container-native/v5.2.1.x/generated/scale/mco/ocp4.14/mco_s390x.yaml | sed 's/worker/master/g' | oc apply -f -
For 4.15:
curl https://raw.githubusercontent.com/IBM/ibm-spectrum-scale-container-native/v5.2.1.x/generated/scale/mco/ocp4.15/mco_s390x.yaml | sed 's/worker/master/g' | oc apply -f -
For 4.16:
curl https://raw.githubusercontent.com/IBM/ibm-spectrum-scale-container-native/v5.2.1.x/generated/scale/mco/ocp4.16/mco_s390x.yaml | sed 's/worker/master/g' | oc apply -f -