Upgrade Google Kubernetes Engine node types

If you’re running Portworx on GKE and want to migrate to nodes with more resources, you can do this by adding new nodes and retiring old ones. Perform the following steps to migrate nodes:

NOTE: This upgrade method only works if you’re using an internal KVDB.
  1. Add a new node pool containing your desired node type.

  2. Ensure that all nodes in the new node pool have Portworx in storageless mode.

  3. Disable auto scaling in the old pool.

  4. Choose a node from your old node pool that you want to remove:

    pxctl cluster list
    Cluster ID: 8ed1d365-fd1b-11e6-b01d-0242ac110002
    Status: OK
    Nodes in the cluster:
    ID                  DATA IP     CPU     MEM TOTAL   MEM FREE    CONTAINERS  VERSION     STATUS
    bf9eb27d-415e-41f0-8c0d-4782959264bc   0.125078    34 GB       33 GB       N/A     1.1.4-6b35842   Online
    7d97f9ea-a4ff-4969-9ee8-de2699fa39b4   0.187617    34 GB       33 GB       N/A     1.1.4-6b35842   Online
    492596eb-94f3-4422-8cb8-bc72878d4be5   0.125078    34 GB       33 GB       N/A     1.1.4-6b35842   Online
  5. Once you’ve chosen a node ID, enter the following kubectl command to drain the node, replacing <node-id> with the ID of the node that you want to remove:

    kubectl drain <node-id> --ignore-daemonsets --delete-emptydir-data
  6. Drain volume attachments:

    pxctl service node drain-attachments submit --node <node-id>
  7. Delete the node from Kubernetes:

    kubectl delete node <node>
  8. In the GKE console, find the node by name and delete the instance.

  9. Choose a storageless node and restart Portworx so that it becomes a storage node:

    kubectl label <node> px/service=restart --overwrite

    Wait until the storage node is back up before proceeding.

  10. Re-enable attachments on the node:

    pxctl service node uncordon-attachments --node <node-id>

Repeat steps 4 through 10 for each remaining node in your cluster that you want to remove.

Last edited: Tuesday, May 9, 2023