helm postgres 连接 - 无法连接
helm postgres connection - unable to connect
我已经在 github 上上传了一些代码:https://github.com/darkcloudi/helm-camunda-postgres
运行 以下命令部署两个图表(请注意,需要设置才能部署 postgres 数据库,我默认禁用它,因为 camunda 带有自己的数据库,我'我正在尝试将其配置为使用 postgres):
helm install dev ./camunda-install --set tags.postgres=true
你会发现一切都很好:
NAME READY STATUS RESTARTS AGE
pod/dev-camunda-67f487dcd-wjdfr 1/1 Running 0 36m
pod/dev-camunda-test-connection 0/1 Completed 0 45h
pod/postgres-86c565898d-h5tf2 1/1 Running 0 36m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dev-camunda NodePort 10.106.239.96 <none> 8080:30000/TCP 36m
service/dev-postgres NodePort 10.108.235.106 <none> 5432:30001/TCP 36m
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d19h
如果我使用 10.108.x.x ip 或 minikube ip 192.168.64.2 我在下面得到同样的错误,我可以使用 http://camunda.minikube.local/ or http://192.168.64.2:30000/ 连接到 tomcat 所以想知道尝试连接到 postgres 时我可能会出错的地方。
kubectl exec -it postgres-86c565898d-h5tf2 -- psql -h 10.108.235.106 -U admin --password -p 30001 camunda
Password:
psql:错误:无法连接到服务器:无法连接到服务器:连接超时
主机“10.108.235.106”上的服务器 运行 是否接受
TCP/IP 端口 30 上的连接
kubectl describe svc dev-postgres
Name: dev-postgres
Namespace: default
Labels: app.kubernetes.io/managed-by=Helm
name=dev-postgres
Annotations: meta.helm.sh/release-name: dev
meta.helm.sh/release-namespace: default
Selector: app=dev-postgres,name=dev-postgres
Type: NodePort
IP: 10.108.235.106
Port: postgres-http 5432/TCP
TargetPort: 5432/TCP
NodePort: postgres-http 30001/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
由于您是从集群内部访问它的,因此您应该使用 ClusterIP 10.108.235.106
和端口 5432
。
如果你想从集群外部访问它,那么你可以使用节点 IP 192.168.64.2 and NodePort 30001
端口 30001
正在侦听节点 VM,容器正在侦听端口 5432
。因此您无法从集群内通过端口 30001
访问它。
编辑:
服务上的Endpoints
是空的。这是因为服务上的标签选择器正在选择带有标签 app=dev-postgres,name=dev-postgres
的 pods,但 pods 没有该标签。
我已经在 github 上上传了一些代码:https://github.com/darkcloudi/helm-camunda-postgres
运行 以下命令部署两个图表(请注意,需要设置才能部署 postgres 数据库,我默认禁用它,因为 camunda 带有自己的数据库,我'我正在尝试将其配置为使用 postgres):
helm install dev ./camunda-install --set tags.postgres=true
你会发现一切都很好:
NAME READY STATUS RESTARTS AGE
pod/dev-camunda-67f487dcd-wjdfr 1/1 Running 0 36m
pod/dev-camunda-test-connection 0/1 Completed 0 45h
pod/postgres-86c565898d-h5tf2 1/1 Running 0 36m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dev-camunda NodePort 10.106.239.96 <none> 8080:30000/TCP 36m
service/dev-postgres NodePort 10.108.235.106 <none> 5432:30001/TCP 36m
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d19h
如果我使用 10.108.x.x ip 或 minikube ip 192.168.64.2 我在下面得到同样的错误,我可以使用 http://camunda.minikube.local/ or http://192.168.64.2:30000/ 连接到 tomcat 所以想知道尝试连接到 postgres 时我可能会出错的地方。
kubectl exec -it postgres-86c565898d-h5tf2 -- psql -h 10.108.235.106 -U admin --password -p 30001 camunda
Password:
psql:错误:无法连接到服务器:无法连接到服务器:连接超时 主机“10.108.235.106”上的服务器 运行 是否接受 TCP/IP 端口 30 上的连接
kubectl describe svc dev-postgres
Name: dev-postgres
Namespace: default
Labels: app.kubernetes.io/managed-by=Helm
name=dev-postgres
Annotations: meta.helm.sh/release-name: dev
meta.helm.sh/release-namespace: default
Selector: app=dev-postgres,name=dev-postgres
Type: NodePort
IP: 10.108.235.106
Port: postgres-http 5432/TCP
TargetPort: 5432/TCP
NodePort: postgres-http 30001/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
由于您是从集群内部访问它的,因此您应该使用 ClusterIP 10.108.235.106
和端口 5432
。
如果你想从集群外部访问它,那么你可以使用节点 IP 192.168.64.2 and NodePort 30001
端口 30001
正在侦听节点 VM,容器正在侦听端口 5432
。因此您无法从集群内通过端口 30001
访问它。
编辑:
服务上的Endpoints
是空的。这是因为服务上的标签选择器正在选择带有标签 app=dev-postgres,name=dev-postgres
的 pods,但 pods 没有该标签。