Create and connect to a PostgreSQL cluster
This tutorial shows how to create and connect to a PostgreSQL cluster.
Create a PostgreSQL cluster
Before you start
Make sure the PostgreSQL addon is enabled. If this addon is not enabled, enable it first.
kbcli addon list
>
NAME TYPE STATUS EXTRAS AUTO-INSTALL
...
postgresql Helm Enabled true
...View all the database types and versions available for creating a cluster.
kbcli clusterdefinition list
kbcli clusterversion listTo keep things isolated, create a separate namespace called
demo
throughout this tutorial.kubectl create namespace demo
Create a cluster
KubeBlocks supports creating two types of PostgreSQL clusters: Standalone and Replication Cluster. Standalone only supports one replica and can be used in scenarios with lower requirements for availability. For scenarios with high availability requirements, it is recommended to create a Replication Cluster, which creates a cluster with a Replication Cluster to support automatic failover. To ensure high availability, Primary and Secondary are distributed on different nodes by default.
Create a Standalone.
kbcli cluster create postgresql <clustername>
Create a Replication Cluster.
kbcli cluster create --cluster-definition postgresql --set replicas=2 <clustername>
If you only have one node for deploying a Replication, set the topology-keys
as null
when creating a Replication Cluster.
kbcli cluster create --cluster-definition postgresql --set replicas=2 --topology-keys null <clustername>
If you want to specify a cluster version, you can first view the available versions and use --version
to specify a version.
kbcli clusterversion list
kbcli cluster create --cluster-definition postgresql --version postgresql-14.8.0
In the production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
View more flags for creating a cluster to create a cluster with customized specifications.
kbcli cluster create --help
Connect to a PostgreSQL Cluster
kbcli cluster connect <clustername> --namespace <name>
For the detailed database connection guide, refer to Connect database.