Postgresql Kubernetes上的Postgres密码验证失败
我使用了本教程: 我在Kubernetes上的配置基于Docker官方图像,我不断得到:Postgresql Kubernetes上的Postgres密码验证失败,postgresql,docker,kubernetes,Postgresql,Docker,Kubernetes,我使用了本教程: 我在Kubernetes上的配置基于Docker官方图像,我不断得到: psql -h <publicworkernodeip> -U postgres -p <mynodeport> postgres Password for user postgres: example psql: FATAL: password authentication failed for user "postgres" DETAIL: Role "postgres" d
psql -h <publicworkernodeip> -U postgres -p <mynodeport> postgres
Password for user postgres: example
psql: FATAL: password authentication failed for user "postgres"
DETAIL: Role "postgres" does not exist.
Connection matched pg_hba.conf line 95: "host all all all md5"
尝试使用下面的命令登录 psql-h$(主机名-i)-U postgres
kubectl exec -it postgres-566fbfb87c-rcbvd sh
# env
POSTGRES_PASSWORD=example
POSTGRES_USER=postgres
POSTGRES_DB=postgres
# psql -h $(hostname -i) -U postgres
Password for user postgres:
psql (11.2 (Debian 11.2-1.pgdg90+1))
Type "help" for help.
postgres=# \c postgres
You are now connected to database "postgres" as user "postgres".
postgres=#
如果您以前使用该卷启动DB,但使用不同的凭据—Postgres将拒绝覆盖卷中的现有数据。你能在新卷上尝试同样的方法吗?是的,我尝试过删除所有内容并重试,但问题仍然存在。我认为这显然指向角色问题。是的,但我需要创建自定义Dockerfile以启用连接吗?你能尝试image bitnami/postgresql吗?这允许连接,谢谢!似乎设置env变量是关键的,而不是使用--password,
psql-upostgres
在没有主机名的情况下也可以工作。关于如何公开此服务
,以便我可以在没有kubectl exec的情况下从Kubernetes群集外部连接,您有什么建议吗?我正在使用NodePort
和postgresql://postgres:example@:/postgres
似乎不起作用。您可以尝试在服务定义中使用节点端口类型34567端口超出k8s范围。在30000-32767之间使用哦,对不起,我实际上犯了一个错误。我指的是bitnami/postgresql
Docker图像,这就是我能够通过密码验证的原因。官方postgres
Docker image仍然要求输入密码,但失败。是的,很抱歉,我使用的是节点端口
(见原始帖子),端口生成在30000-32767之间。在我校正PV/PVC后,即使使用正式的Docker图像,这仍然有效。同样可以,节点端口
与:
能够连接。非常感谢。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:11
imagePullPolicy: Always
ports:
- containerPort: 5432
envFrom:
- configMapRef:
name: postgres-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres
volumes:
- name: postgres
persistentVolumeClaim:
claimName: postgres-pv-claim
apiVersion: v1
kind: Service
metadata:
name: postgres
labels:
app: postgres
spec:
type: NodePort
ports:
- port: 5432
selector:
app: postgres
kind: PersistentVolume
apiVersion: v1
metadata:
name: postgres-pv-volume
labels:
type: local
app: postgres
spec:
storageClassName: manual
capacity:
storage: 12Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/mnt/data"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: postgres-pv-claim
labels:
app: postgres
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 12Gi
kubectl exec -it postgres-566fbfb87c-rcbvd sh
# env
POSTGRES_PASSWORD=example
POSTGRES_USER=postgres
POSTGRES_DB=postgres
# psql -h $(hostname -i) -U postgres
Password for user postgres:
psql (11.2 (Debian 11.2-1.pgdg90+1))
Type "help" for help.
postgres=# \c postgres
You are now connected to database "postgres" as user "postgres".
postgres=#