Skip to content

Latest commit

 

History

History
134 lines (113 loc) · 7.4 KB

File metadata and controls

134 lines (113 loc) · 7.4 KB

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-ha
image.tag The version of the image to pull pg12.5-ts2.0.0-p0
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

  • Override value using commandline parameters
    helm upgrade --install my-release . --set image.tag=pg12.5-ts2.0.0-p0 --set image.pullPolicy=Always
  • Override values using myvalues.yaml
    # Filename: myvalues.yaml
    image:
      tag: pg12.5-ts2.0.0-p0
      pullPolicy: Always
    postgresql:
      databases:
      - postgres
      - proddb
      parameters:
        checkpoint_completion_target: 32MB
        work_mem: 16MB
        shared_buffers: 512MB
    helm upgrade --install my-release . -f myvalues.yaml

Cleanup

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

  • the Persistent Volume Claims (pvc) belonging to the cluster

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

Verify multinode topology

$ kubectl exec -ti $(kubectl get pod -l timescaleNodeType=access -o name) -c timescaledb -- psql -d example -c 'select node_name from timescaledb_information.data_nodes'
           node_name
-------------------------------
 my-release-timescaledb-data-0
 my-release-timescaledb-data-1
 my-release-timescaledb-data-2
(3 rows)