问题描述
该笔记将记录:在 Kubernetes Cluser 中,如何部署 PostgreSQL 数据库,以及相关问题的解决办法;
解决方案
# helm repo add bitnami https://charts.bitnami.com/bitnami # helm repo update # helm pull bitnami/postgresql # CHART 11.6.18, APP 14.4.0 # helm show values ./postgresql-11.6.18.tgz > postgresql-11.6.18.helm-values.yaml ...(1)修改存储类:global.storageClass ...(2)修改 postgres 密码:global.postgresql.auth.postgresPassword ...(3)修改服务类型:primary.service.type(可选) # helm --namespace infra-database \ install postgresql ./postgresql-11.6.18.tgz \ -f postgresql-11.6.18.helm-values.yaml \ --create-namespace # helm --namespace infra-database \ upgrade postgresql ./postgresql-11.6.18.tgz \ -f postgresql-11.6.18.helm-values.yaml // ---------------------------------------------------------------------------- // 当执行成功后,产生如下输出: ... PostgreSQL can be accessed via port 5432 on the following DNS names from within your cluster: postgresql.infra-database.svc.cluster.local - Read/Write connection To get the password for "postgres" run: export POSTGRES_PASSWORD=$(kubectl get secret --namespace infra-database postgresql -o jsonpath="{.data.postgres-password}" | base64 -d) To connect to your database run the following command: kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace infra-database --image docker.io/bitnami/postgresql:14.4.0-debian-11-r12 --env="PGPASSWORD=$POSTGRES_PASSWORD" \ --command -- psql --host postgresql -U postgres -d postgres -p 5432 > NOTE: If you access the container using bash, make sure that you execute "/opt/bitnami/scripts/postgresql/entrypoint.sh /bin/bash" in order to avoid the error "psql: local user with ID 1001} does not exist" To connect to your database from outside the cluster execute the following commands: NOTE: It may take a few minutes for the LoadBalancer IP to be available. Watch the status with: 'kubectl get svc --namespace infra-database -w postgresql' export SERVICE_IP=$(kubectl get svc --namespace infra-database postgresql --template "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}") PGPASSWORD="$POSTGRES_PASSWORD" psql --host $SERVICE_IP --port 5432 -U postgres -d postgres