24. Upgrade Robin CNP Platform¶
You can upgrade your Robin CNP cluster to the latest version using the GoRobin utility. The GoRobin utility tool helps you to install and upgrade related procedures.
Note
Contact the Robin Support team or Robin Account manager for upgrade files.
The GoRobin utility tool initiates an SSH session to access the nodes in the cluster and runs upgrade commands on all nodes of your cluster.
Note
When you upgrade using GoRobin, it automatically upgrades the Kubernetes versions if required.
24.1. Upgrade Paths¶
The following are the supported upgrade paths for Robin CNP v5.7.2:
Robin CNP v5.7.1-311 (Refresh) to Robin CNP v5.9.0-862
Robin CNP v5.7.2-330 to Robin CNP v5.9.0-862
Robin CNP v5.7.2-330 (Refresh) to Robin CNP v5.9.0-862
24.2. Prerequisites¶
Your Robin CNP cluster must meet the following prerequisites before upgrading to the latest version of Robin CNP:
The Robin CNP cluster must have an active license.
Do not change the GoRobin tar file name.
All nodes in the Robin cluster must be accessible before starting the upgrade process.
Use Robin CNP super admin credentials for all upgrade steps.
All nodes in the cluster must be in sync with the NTP Server.
If a Kubernetes upgrade is required as part of the upgrade flow, any pods with a Pod Disruption Budget (PDB) configured must either be deleted beforehand or the associated PDB(s) must be configured such that the respective pods can be evicted cleanly while draining the node via kubeadm during the Kubernetes upgrade.
Robin CNP users must not perform any control plane operations during upgrade, including those associated with applications and volumes.
Remove any custom taints on master and worker nodes.
The root user needs to be present in the sudoers file located at
/etc/sudoers.If you have hosts with different login credentials, prepare your host login credentials JSON file.
24.3. Host Login JSON File¶
You can use the GoRobin utility to perform upgrades on hosts with different login credentials using the host login JSON file. The Host JSON file enables you to provide the following details for each host:
Hostname
Username
password of the username or pem file for host
port number for SSH
role (master or worker)
Note
Hostnames must be in lowercase letters and cannot contain uppercase letters.
If you don’t specify a role for a host, Robin CNP considers that host as a worker node.
The following is the sample host login JSON file.
{
"hypervvm-65-6.robinsystems.com": {
"password": "robin123",
"role": "master",
"user": "root",
"port": "22"
},
"hypervvm-65-7.robinsystems.com": {
"password": "robin123",
"role": "master",
"user": "root",
"port": "22"
},
"hypervvm-65-8.robinsystems.com": {
"password": "robin123",
"role": "master",
"user": "root",
"port": "22"
},
"hypervvm-65-9.robinsystems.com": {
"password": "robin123",
"user": "root",
"port": "22"
},
"hypervvm-65-10.robinsystems.com": {
"password": "robin123",
"user": "root",
"port": "22"
}
}
24.4. (Optional) Config JSON file¶
You can create a Config JSON file to pass custom configurations for hosts during upgrade. The Config JSON file enables you to provide the upgrade options for each host.
You need to provide the Config JSON file when upgrading Robin CNP using the --config-json command option.
{
"vm-2-61.robinsystems.com":{
"artifactory-cert":"",
"host-type":"",
"image-registry-creds":"",
"image-registry-prefix":"",
"robin-image-registry-prefix":"",
"insecure-registries":"*",
"kube-reserved-mem":"",
"sys-reserved-mem":"",
"memory-manager-policy":"",
},
"vm-2-62.robinsystems.com":{
"artifactory-cert":"",
"host-type":"",
"image-registry-creds":"",
"image-registry-prefix":"",
"robin-image-registry-prefix":"",
"insecure-registries":"*",
"kube-reserved-mem":"",
"sys-reserved-mem":"",
"memory-manager-policy":"",
},
"vm-2-63.robinsystems.com":{
"artifactory-cert":"",
"host-type":"",
"image-registry-creds":"",
"image-registry-prefix":"",
"robin-image-registry-prefix":"",
"insecure-registries":"*",
"kube-reserved-mem":"",
"sys-reserved-mem":"",
"memory-manager-policy":"",
},
"vm-2-64.robinsystems.com":{
"artifactory-cert":"",
"host-type":"",
"image-registry-creds":"",
"image-registry-prefix":"",
"robin-image-registry-prefix":"",
"insecure-registries":"*",
"kube-reserved-mem":"",
"sys-reserved-mem":"",
"memory-manager-policy":"",
}
}
Upgrade option |
Description |
|---|---|
artifactory-cert |
Path to the CA certificate file for the Artifactory registry |
host-type |
Type of host. Valid values are physical, ec2, azure, gcp or ibm. |
image-registry-creds |
Credentials to log in to the Artifactory registry. Use the format |
image-registry-prefix |
Registry prefix for pulling Kubernetes images from Artifactory. |
robin-image-registry-prefix |
Registry prefix for pulling |
insecure-registries |
Registry hostnames for which Transport Layer Security (TLS) verification is skipped during container image pulls. Use this option only for registries that do not use valid certificates.Registry hostname to skip TLS verification for container image pulls |
kube-reserved-mem |
Memory to reserve for Kubernetes processes in the cluster. Specify any integer value using units such as |
sys-reserved-mem |
Memory to reserve for the operating system and other system daemons in the cluster. Specify any integer value using units such as |
memory-manager-policy |
Policy for Memory Manager. The valid values are Static |
Note
To verify that the policy for memory-manager is set to Static post-upgrade, run the robin config list | grep policy and check the Kubelet state file located at /var/lib/kubelet/memory_manager_state.
24.5. Upgrade using GoRobin Single Command¶
You can upgrade your Robin CNP cluster to the latest version using the GoRobin command.
Note
When you upgrade using the single command option, the GoRobin utility tool automatically upgrades the Kubernetes versions if required.
24.5.1. Step 1 - Prepare for Upgrade¶
Complete the following steps to prepare for upgrading to Robin CNP v5.9.0:
Verify all prerequisites and supported upgrade paths.
Access your cluster using your login credentials.
After you receive upgrade files, copy the upgrade files to your host system.
Note
Contact the Robin Support team or Robin Account manager for upgrade files.
24.5.2. Step 2 - Prepare Host Login JSON and Config JSON files¶
Before upgrading your Robin CNP cluster, you must prepare Host Login JSON and Config JSON files for your cluster. You can use either your old Host Login JSON and Config JSON files prepared during Robin CNP installation or generate new Host Login JSON and Config JSON files.
Note
You must generate a new Host Login JSON file if you added a node in your Robin CNP cluster after its installation.
To generate the latest Host Login JSON and Config JSON files, run the following command:
# ./gorobin_5.9.0-723 onprem generate-json-files --primary-master <primary_master> --ssh-user <ssh_user> --ssh-password <ssh_password>
|
IP address or hostname of primary master node. |
|
SSH username. |
|
SSH password or path to SSH private key. |
|
Use this option when passwordless SSH is enabled for all hosts. |
|
SSH port. The default port is 22. |
Example
# ./gorobin_5.9.0-831 onprem generate-json-files --primary-master vnode-103-152 --ssh-user root --ssh-password admin
Generating host/config json files DONE
Generated host and config json files at /root
24.5.3. Step 3 - (Optional) Copy GoRobin tar file and perform host pre-upgrade step on Nodes¶
You can copy the Gorobin upgrade tar file and perform the host pre-upgrade step on all nodes of the cluster. The copy-gorobin-tar command performs the following operations on all nodes of a cluster:
Copies OS-specific upgrade scripts and tar files to the
rootdirectory of each node.Runs host pre-upgrade step on all nodes to prepare for upgrade.
Note
This step is particularly useful for large clusters, as it copies the GoRobin files and runs the host pre-upgrade step before upgrading the Robin CNP cluster to save the overall time required to upgrade the Robin CNP cluster.
Always use the GoRobin command to copy the gorobintar file to other nodes. Do not copy manually.
To copy the Robin CNP installation files to all nodes, run the following command:
./gorobin_5.9.0-700 onprem copy-gorobin-tar -hj <path/to/host_json> --gorobintar <path/to/gorobintar>
|
Path to the Host Login JSON file containing details of all hosts. Its format can be seen here. |
|
Path to the directory for the SQLite database. The default directory is |
|
Path to the GoRobintar file. |
|
Path to the directory on the driver node to untar the GoRobintar. The default directory is |
|
Path to the directory for GoRobin logs on the driver node. |
|
Path to the parent directory on remote hosts where a version-specific (gorobintar-<version>) subdirectory is created. All OS-specific installation files (scripts and tar files) are copied into this subdirectory during the copy step. The default directory is |
|
Use this option when passwordless SSH is enabled for all hosts. |
|
Port for the HTTP file server on the driver node. Remote hosts use this server to pull GoRobintar files. The default port is 8765. |
|
Timeout in seconds for monitor tasks waiting for scripts to complete on remote hosts. The default value is 3600 seconds. |
|
Run the host pre-upgrade step on all hosts after copying upgrade scripts and tar files. To avoid re-running this step during the upgrade, use the |
|
Skip the disk space check for loading Docker images during the host pre-upgrade step. Note This option is used only with the |
|
Custom path for logs for the Robin installer scripts on remote nodes. The default path is |
|
Skip copying the |
Example
# ./gorobin_5.9.0-714 onprem copy-gorobin-tar -hj host.json --gorobintar gorobintar-5.9.0-714.tar
Copying Gorobin Tar to Hosts
Processing host/config json files DONE ... 1.13s
Extracting gorobin tar DONE ... 85.5s
Pulling gorobintar on all hosts DONE ... 87.47s
Copied Gorobin tar to all hosts successfully!
24.5.4. Step 4 - Upgrade Robin CNP¶
Run the following command to upgrade Robin CNP in a single step:
# ./gorobin onprem upgrade-cluster -hj <hosts_json> --gorobintar <path/to/gorobintar> --robin-admin-user <robin-admin-user> --robin-admin-passwd <robin-admin-passwd>
Option |
Description |
|---|---|
|
Path to the Host Login JSON file containing details of all hosts. Its format can be seen here. |
|
Path to the Config JSON file containing configuration parameters for each host. Its format can be seen here. |
|
Path to the directory for the SQLite database. The default directory is |
|
Username for the admin user of the Robin CNP cluster. The default username is |
|
Password for admin user of Robin CNP cluster. The default password is |
|
Path to the GoRobintar file. |
|
Path to the directory on the driver node to untar the GoRobintar. At least 25 GB of space is required. The default directory is |
|
Path to the installation logs for GoRobin on the driver node. The default path is |
|
Path to the parent directory on remote hosts where a version-specific (gorobintar-<version>) subdirectory is created. All OS-specific installation files (scripts and tar files) are copied into this subdirectory during the copy step. The default directory is |
|
Skip the copying of GoRobintar to other nodes. Use this option if the GoRobintar files are already copied to all nodes using the |
|
Skip the host pre-upgrade step. Use this option if the |
|
Enable best-effort Quality of Service (QoS). |
|
Restart the container runtime interface (CRI) after every Kubernetes version upgrade. |
|
IP address of the external database server. |
|
Port number for the external database server. |
|
Admin username for the external database. |
|
Password of the admin username for the external database. |
|
Custom password for the Robin internal database. |
|
Skip checking any active Robin jobs before starting the upgrade. |
|
Skip the disk space checks for loading Docker images before starting the upgrade. |
|
Enables the |
|
Skip host status and image version checks after the Robin CNP upgrade. |
|
Use this option when passwordless SSH is enabled for all hosts. |
|
Port for the HTTP file server on the driver node. Remote hosts use this server to pull GoRobintar files. The default port is 8765. |
|
Do not prompt for confirmation. |
|
Timeout in seconds for monitor tasks waiting for scripts to complete on remote hosts. The default value is |
|
Path for logs for the Robin installer scripts on remote nodes. The default path is |
|
Specifies the fraction of total worker nodes to drain simultaneously during Kubernetes upgrades. The default value is 0.33. Valid values are from |
|
Upgrade the Kubernetes version for the Robin CNP cluster. |
|
Rotate the |
Example
# ./gorobin_5.9.0-849 onprem upgrade-cluster -hj host.json --gorobintar gorobintar-5.9.0-849-bin.tar --robin-admin-user admin --robin-admin-password Admin123
Upgrading Robin HA Cluster
Processing host/config json files DONE ... 1.52s
Extracting gorobin tar DONE ... 95.91s
Pulling gorobintar on all hosts DONE ... 95.94s
Executing host pre-upgrade steps on all hosts DONE ... 397.76s
Executing k8s pre-upgrade steps on all hosts DONE ... 140.64s
Executing k8splus pre-upgrade steps primary master DONE ... 59.81s
Executing robin pre-upgrade steps on primary master DONE ... 35.69s
Upgrading host components on all hosts DONE ... 87.41s
Upgrading k8s components on all hosts DONE ... 45.95s
Upgrading robin networking components DONE ... 9.88s
Upgrading robin cluster DONE ... 259.73s
Executing host post-upgrade steps on all hosts DONE ... 19.84s
Executing k8s post-upgrade steps on all hosts DONE ... 307.18s
Executing k8splus post-upgrade steps on primary master DONE ... 9.88s
Executing robin post-upgrade steps on primary master DONE ... 25.63s
Robin HA cluster upgraded successfully!
24.6. Verify upgrade status¶
Once you upgrade your cluster to the latest Robin CNP version, you can verify whether your Robin CNP cluster is updated to the latest Robin CNP version.
To verify the upgrade status, login to the robin-master Pod and run the following command:
# rbash master
# robin upgrade status
Example
# robin upgrade status
CANDIDATE ROBIN VERSION: 5.9.0-853
Host/Entity | From (Robin Ver) | To (Robin Ver) | From (K8S Ver) | To (K8S Ver) | Current State
--------------------+------------------+----------------+----------------+--------------+------------------
Robin Control Plane | 5.9.0-831 | 5.9.0-853 | - | - | UPGRADE_COMPLETE
vnode-103-152 | 5.9.0-831 | 5.9.0-853 | 1.35.5 | 1.35.5 | UPGRADE_COMPLETE
vnode-103-159 | 5.9.0-831 | 5.9.0-853 | 1.35.5 | 1.35.5 | UPGRADE_COMPLETE
vnode-103-168 | 5.9.0-831 | 5.9.0-853 | 1.35.5 | 1.35.5 | UPGRADE_COMPLETE
To verify the status of hosts, run the following command:
# robin host list
Example
# robin host list
Id | Hostname | Version | Status | RPool | Avail. Zone | LastOpr | Roles | Cores | GPUs | Mem | HDD(#/Alloc/Total) | SSD(#/Alloc/Total) | Pod Usage | Joined Time
-------------+---------------+-----------+--------+---------+-------------+---------+-------+-------------+-------+-------------+--------------------+--------------------+-----------+----------------------
1789474092:1 | vnode-103-152 | 5.9.0-853 | Ready | default | N/A | ONLINE | S,C | 8.6/7.4/16 | 0/0/0 | 15G/15G/31G | 2/16G/399G | -/-/- | 64/46/110 | 15 Sep 2026 05:11:23
1789474092:2 | vnode-103-159 | 5.9.0-853 | Ready | default | N/A | ONLINE | C,S | 10.8/5.2/16 | 0/0/0 | 18G/12G/31G | 2/10G/399G | -/-/- | 81/29/110 | 15 Sep 2026 05:12:21
1789474092:3 | vnode-103-168 | 5.9.0-853 | Ready | default | N/A | ONLINE | S,C | 10.6/5.4/16 | 0/0/0 | 18G/12G/31G | 2/22G/399G | -/-/- | 79/31/110 | 15 Sep 2026 05:13:12
* Note: all values indicated above in the format XX/XX/XX represent the Free/Allocated/Total values of the respective resource unless otherwise specified. In addition allocated values for compute resource such as cpu, memory and pod usage includes reserved values for the corresponding resource.