Skip to main content
Version: 3.1

uninstall-decomission-a-node

This guide describes a recommended workflow for decommissioning a Portworx node in your cluster.

Migrate application pods using Portworx volumes that are running on this node

Decommission Portworx

To decommission Portworx, perform the following steps.

Remove Portworx installation from the node

Ensure application pods using Portworx don’t run on this node

If you need to continue using the node without Portworx, you will need to ensure your application pods using Portworx volumes don’t get scheduled here.

Another way to achieve this is to use inter-pod affinity

  • You need to define a pod affinity rule in your applications that ensure that application pods get scheduled only on nodes where the Portworx pod is running.

  • Consider the following nginx example:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: nginx-deployment
    spec:
    selector:
    matchLabels:
    app: nginx
    replicas: 1
    template:
    metadata:
    labels:
    app: nginx
    spec:
    affinity:
    # Inter-pod affinity rule restricting nginx pods to run only on nodes where Portworx pods are running (Portworx pods have a label
    # name=portworx which is used in the rule)
    podAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
    - labelSelector:
    matchExpressions:
    - key: name
    operator: In
    values:
    - "portworx"
    topologyKey: kubernetes.io/hostname
    namespaces:
    - "kube-system"
    hostNetwork: true
    containers:
    - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    volumeMounts:
    - name: nginx-persistent-storage
    mountPath: /usr/share/nginx/html
    volumes:
    - name: nginx-persistent-storage
    persistentVolumeClaim:
    claimName: px-nginx-pvc

    It can also be configured on cluster level by adding spec.stork.args.webhook-controller Set to true in StorageCluster to make Stork the default scheduler for workloads using Portworx volumes:

    apiVersion: core.libopenstorage.org/v1
    kind: StorageCluster
    metadata:
    name: portworx
    namespace: portworx
    spec:
    stork:
    enabled: true
    args:
    webhook-controller: true

Remove Portworx from the cluster

Follow this guide section "Removing offline Nodes" or "Removing a functional node from a cluster" to decommission the Portworx node from the cluster.

Uncordon the node

(Optional) Rejoin node to the cluster