timescaledb-kubernetes

TimescaleDB Single Administrator Guide

Table of Contents

Configuration

The following table lists the configurable parameters of the TimescaleDB Helm chart and their default values.

| Parameter | Description | Default | |———————————–|———————————————|—————————————————–| | nameOverride | Override the name of the chart | timescaledb | | fullnameOverride | Override the fullname of the chart | nil | | replicaCount | Amount of pods to spawn | 3 | | image.repository | The image to pull | timescaledev/timescaledb | | image.tag | The version of the image to pull | v0.2.2-pg11-multinode | | image.pullPolicy | The pull policy | IfNotPresent | | credentials.accessNode.superuser| Password of the superuser for the Access Node | tea | | credentials.dataNode.superuser | Password of the superuser for the Data Nodes | coffee | | env | Extra custom environment variables, expressed as EnvVar | PGDATA and some language settings | | resources | Any resources you wish to assign to the pod | {} | | nodeSelector | Node label to use for scheduling | {} | | tolerations | List of node taints to tolerate | [] | | affinityTemplate | A template string to use to generate the affinity settings | Anti-affinity preferred on hostname | | affinity | Affinity settings. Overrides affinityTemplate if set. | {} | | postgresql.databases | List of databases to automatically create a multinode setup for | ["postgres", "example"] | | postgresql.parameters | PostgreSQL parameters) | Some required and preferred settings | | schedulerName | Alternate scheduler name | nil | | persistentVolume.accessModes | Persistent Volume access modes | [ReadWriteOnce] | | persistentVolume.annotations | Annotations for Persistent Volume Claim | {} | | persistentVolume.mountPath | Persistent Volume mount root path | /var/lib/postgresql | | persistentVolume.size | Persistent Volume size | 5Gi | | persistentVolume.storageClass | Persistent Volume Storage Class | volume.alpha.kubernetes.io/storage-class: default | | persistentVolume.subPath | Subdirectory of Persistent Volume to mount | ”” | | rbac.create | Create required role and rolebindings | true | | serviceAccount.create | If true, create a new service account | true | | serviceAccount.name | Service account to be used. If not set and serviceAccount.create is true, a name is generated using the fullname template | nil` |

Examples

Cleanup

Removing a deployment can be done by deleting a Helm deployment, however, removing the deployment does not remove:

To fully purge a deployment in Kubernetes, you should do the following:

# Delete the Helm deployment
helm delete my-release
# Delete pvc and the headless Patroni service
kubectl delete $(kubectl get pvc -l release=my-release -o name)

Troubleshooting

List Resources

All the resources that are deployed can be listed by providing the filter -l release=my-release.

kubectl get all -l release=my-release

The output should be similar to the below output:

NAME                                  READY   STATUS      RESTARTS   AGE
pod/my-release-timescaledb-access-0   1/1     Running     0          11m
pod/my-release-timescaledb-data-0     1/1     Running     0          11m
pod/my-release-timescaledb-data-1     1/1     Running     0          11m
pod/my-release-timescaledb-data-2     1/1     Running     0          11m


NAME                                  TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/my-release-timescaledb        LoadBalancer   10.152.183.60   <pending>     5432:31819/TCP   11m
service/my-release-timescaledb-data   ClusterIP      None            <none>        5432/TCP         11m

NAME                                             READY   AGE
statefulset.apps/my-release-timescaledb-access   1/1     11m
statefulset.apps/my-release-timescaledb-data     3/3     11m

INFO When listing resources within minutes of deploying a new Helm chart, you may see a list of jobs and its pods; these jobs are there to create the database, and to attach the data nodes to the access node. There will be quite a few, but these should disappear within minutes after successful deployment.

Investigate TimescaleDB logs

The logs for the Access Node of TimescaleDB can be accessed as follows:

kubectl logs $(kubectl get pod -l release=my-release,timescaleNodeType=access) timescaledb