KOP Upstream Clusters - Worker Nodes - Rafay Product Documentation

Worker Nodes

Worker nodes can be manually added or removed from provisioned and managed clusters. Watch a video showcasing how worker nodes can be Added and Removed from a managed Kubernetes cluster.


Manually Provisioned Clusters

For manually provisioned clusters, the controller does not have the ability to provision or deprovision VMs/instances on the infrastructure.

Supported Environments

Ensure you have reviewed the supported environments before proceeding.

Important
Both Windows and Linux-arm64 based worker nodes can be added during cluster provisioning, as long as there is at least one Linux-amd64 based master/worker node already provisioned.


Add Worker Nodes

Users can optionally enable "auto approval" for new worker nodes to join the cluster. To do this, enable the auto approval "toggle" in the cluster detail page as shown in the screenshot below.


Auto Provisioned Clusters

For "auto provisioned" clusters, the controller will automatically provision the necessary instances for the worker nodes. For manually provisioned clusters, customers need to run the bootstrap agent (conjurer) to attach it to the cluster.

Add Worker Nodes

Once the new nodes are added, the initial status of a new node before approval is Discovered. Enabling the auto-approval option will change the node status to Approved (as depicted below). Conversely, with the option disabled, the node status will remain as Discovered.

Important
If the approval process fails for a node, it is automatically retried when an add operation is triggered for another node, with failures typically caused by connectivity issues.

You can view the list of nodes that are ready for provisioning.

Now you can see the provisioning status as show below.

Important
It can take approximately 5 minutes for new worker nodes to become available because of the time required to instantiate new instances.

Once the worker nodes are successfully provisioned, the status changes to Ready.

When all nodes have been provisioned, and there are no pending nodes for provisioning, the Provision Approved/Failed Nodes button will not be available on this page.

If a cluster provisioning is ongoing with 10 nodes (1 Master and 9 workers) and some worker nodes encounter provisioning failures, re-triggering the process will exclusively address those specific workers that had issues before. This behavior applies specifically to Day 0 scenarios involving worker node provisioning failures and does not extend to cases where Master Node Provisioning fails, especially in a High Availability (HA) setup with multiple master nodes.


Cordon/Uncordon/Drain Nodes

Management of node scheduling through the controller UI allows the users to quickly change the status of worker nodes:

Refer to this page for instructions on how to cordon, drain, or uncordon via the CLI and this page for instructions on how to cordon, drain, or uncordon via the API.


Debug Logs

The Debug Logs feature allows users to view and download detailed logs for each node within a cluster. These logs help troubleshoot provisioning issues, cluster upgrade failures, and node-level problems.

Note
The Debug Logs feature is supported only via the UI and API interfaces.

Access Debug Logs

  1. Navigate to the Nodes tab of your cluster.
  2. From the node’s Actions menu, select Debug Logs.

Debug Logs Viewer

Note
The debug log view/download functionality requires the node to be healthy and accessible on the network. This feature will not work for nodes that are down or not reachable. For more information, see Node Debug Log Connectivity Issues.

Error Handling


Delete Worker Nodes

Force Delete

Once the process is kicked off, the controller will perform the following steps automatically:

Important
For manually provisioned clusters, it is the customer's responsibility to deprovision the VM or Instance after deleting the worker node from the cluster.


Reboot K8s Worker Nodes

Perform the below steps to reboot the worker nodes:

kubectl cordon <node1>
kubectl drain <node1> --ignore-daemonsets
kubectl get node
kubectl uncordon <node1>

Once a node is ready and uncordoned, perform the same steps on another node in the cluster.


Back to top