Portworx is the cloud native storage company that enterprises depend on to reduce the cost and complexity of rapidly deploying containerized applications across multiple clouds and on-prem environments. With Portworx, you can manage any database or stateful service on any infrastructure using any container scheduler. You get a single data management layer for all of your stateful services, no matter where they run.
A popular Kubernetes storage and Docker persistent storage solution, Portworx is a clustered block storage solution and provides a Cloud-Native layer from which containerized stateful applications programmatically consume block, file and object storage services directly through the scheduler.
In this tutorial, you will learn how to resize a volume using Kubernetes "kubectl" cli:
- Use the Portworx Storage Class to create a PVC with 3 replicas of the data
- Use a simple YAML file to deploy PostgreSQL using this storage class
- Use pgbench to fill up the volume and use kubectl to resize the volume
High Level Overview
First we will deploy PostgreSQL with replication factor of 3 and with io_profile=db. To learn more about io_profile settings please visit our docs page.
Then we're going run a benchmark to fill up the database.
Finally, we will use kubectl to expand the size of the volume and re-run the benchmark.
Other things you should know
To learn more about how why running PostgreSQL on Portworx is a great idea take a look at the following links:
- Kubernetes Postgres tutorial
- HA Postgres on GKE
- HA Postgres on EKS
- HA Postgres on AKS
- HA Postgres on OpenShift
- Introduction to Portworx
- Customer Stories
- STORK open source project
This scenario assumes you have already covered the following scenarios:

Steps
Resize Kubernetes volumes using kubectl
Wait for Kubernetes & Portworx to be ready
First we need to wait for Kubernetes and Portworx to be ready. Be patient, this is not a very high performance environment, just a place to learn something :-
Step: Wait for Kubernetes to be ready
Click the below section which waits for all Kubernetes nodes to be ready.
watch kubectl get nodes
When all 4 nodes show status Running then hit clear
to ctrl-c and clear the screen.
Step: Wait for Portworx to be ready
Watch the Portworx pods and wait for them to be ready on all the nodes. This can take a few minutes since it involves pulling multiple docker images. You will see 'No resources found' until all images are pulled.
watch kubectl get pods -n kube-system -l name=portworx -o wide
When all the pods show STATUS Running and READY 1/1 then hit clear
to ctrl-c and clear the screen.
Now that we have the Portworx cluster up, let's proceed to the next step !