gpt4 book ai didi

postgresql - 无法连接到部署到 Kubernetes 的 Postgres

转载 作者:行者123 更新时间:2023-11-29 14:29:17 25 4
gpt4 key购买 nike

我一直在尝试调试使用 minikube 部署的 PostgreSQL 的连接问题。我已经尝试使用类型 NodePortLoadBalancer 创建 postgres-service 但我似乎无法从我的本地主机连接 psql。

我已经复制了所有配置(抱歉),因为我确定某处可能只是一个愚蠢的错误!

apiVersion: v1
kind: Secret
metadata:
name: postgres-credentials
type: Opaque
data:
user: YWRtaW4=
password: YWRtaW4=
database: YWRtaW4=
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
labels:
type: local
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
volumeName: postgres-pv
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-pv
labels:
type: local
spec:
capacity:
storage: 2Gi
storageClassName: standard
accessModes:
- ReadWriteMany
hostPath:
path: /data/postgres-pv-local
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
selector:
matchLabels:
name: postgres-container
template:
metadata:
labels:
name: postgres-container
tier: backend
spec:
containers:
- name: postgres-container
image: mdillon/postgis:10
ports:
- containerPort: 5432
env:
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: postgres-credentials
key: user

- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: postgres-credentials
key: password

- name: POSTGRES_DB
valueFrom:
secretKeyRef:
name: postgres-credentials
key: database

volumeMounts:
- name: postgres-volume-mount
mountPath: /var/lib/postgresql/data
volumes:
- name: postgres-volume-mount
persistentVolumeClaim:
claimName: postgres-pvc
---
apiVersion: v1
kind: Service
metadata:
name: postgres-service
spec:
type: NodePort
selector:
app: postgres-container
ports:
- protocol: TCP
port: 5432
targetPort: 5432

尝试连接到我的本地主机:

$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 30h
postgres-service NodePort 10.105.42.187 <none> 5432:32252/TCP 7m32s

$ export PGPASSWORD=admin
$ psql -h localhost -U admin -p 32252 admin
psql: could not connect to server: Connection refused

我还尝试在集群中创建 Ubuntu 部署,使用 kubectl run -i --tty --attach --image=ubuntu -- bash,安装 psql 并连接到 5432/32252、localhost/postgres-service 等...但这也不起作用。

最佳答案

Minikube 在虚拟机中运行。在这里,psql -h localhost -U admin -p 32252 admin 您正在尝试连接到在 localhost 中公开的 postgres。但它没有暴露在 localhost 中。由于您定义了 NodePort 类型的服务,因此您可以使用 Node ip 访问它。因此,不要使用 localhost,而是尝试 Minikube ip。

 $ minikube ip

关于postgresql - 无法连接到部署到 Kubernetes 的 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54097275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com