使用pgAdmin从我的计算机访问Kubernates吊舱内的Postgresql数据库

使用pgAdmin从我的计算机访问Kubernates吊舱内的Postgresql数据库,postgresql,kubernetes,Postgresql,Kubernetes,我在我的一个pod中安装了一个带有Kubernetes的Postgresql数据库。通信在其他POD和我的数据库中运行良好,我可以通过以下命令访问它: kubectl exec -it name_of_my_pod -n name_of_my_namespace -- "/bin/bash" psql 我现在想使用IntelliJ、pgAdmin或类似的工具访问数据库。我该怎么做 第二个问题:是否真的建议这样做(postgresintoapod)?或者最好将数据库移出Kub

我在我的一个pod中安装了一个带有Kubernetes的Postgresql数据库。通信在其他POD和我的数据库中运行良好,我可以通过以下命令访问它:

kubectl exec -it name_of_my_pod -n name_of_my_namespace -- "/bin/bash"
psql
我现在想使用IntelliJ、pgAdmin或类似的工具访问数据库。我该怎么做


第二个问题:是否真的建议这样做(postgresintoapod)?或者最好将数据库移出Kubernetes?

要访问数据库,可以通过负载平衡器或入口控制器公开pgadmin工具。从安全的角度来看,这并不总是理想的——因为您相信pgadmin工具能够正确处理安全性。另一种方法是通过集群IP或内部IP地址公开pgadmin工具。这意味着,集群网络之外的人无法访问它。然后,要访问该工具,必须添加ssh/vpn隧道或使用kubernetes工具

对于部署,HelmChart似乎相当合理,并且您可以控制如何公开管理实用程序

就个人而言,若安全性不是最重要的,我会通过入口控制器公开pgadmin。这将是访问该工具最方便的方式

至于第二个问题,您可以在一个pod内运行postgress,但是您需要确保有一个持久卷设置作为数据存储位置,因为pod应该被认为是短暂的。如果你正在为如何开始而挣扎,我通常会发现Bitnami的产品(免费)是一个非常好的开始。是指向postgress SQL的掌舵图的链接。使用Bitnami图表,请确保在部署过程中设置密码和帐户-否则部署将在第一次工作,但如果必须重新部署,则不会工作-因为随机生成的密码将更改


需要注意的是,对于一些头盔图表,我使用
--dry run
标志来获取原始yaml,我使用它来执行更标准的kubernetes部署。确保正确设置头盔选项,然后添加该标志。如果您刚刚开始,并且正在尝试自定义没有内置参数的东西,那么这可能会更容易。

我想您应该有服务对象,使其可以通过入口或节点端口访问

第二个问题:答案不是很清楚,这取决于你们想要得到什么


正如Ben所说,你必须确保你有可以信赖的支架周围容积。我知道亚马逊可以提供一些解决方案,但我不知道您是否想将数据存储到第三方公司。

我也有类似的设置。PostgreSQL db pod部署在AWS云中运行的kubernetes集群中。我的pgAdmin正在本地机器的docker容器中运行。以下是我从本地计算机上运行的pgAdmin访问此远程数据库所执行的步骤(如下所示)

1->将db的服务类型从
ClusterIP
修改为
NodePort
,如下所示

apiVersion: v1
kind: Service
metadata:
  name: db

spec:
  selector:
    app: db
  ports:
    - name: dbport
      port: 5432
      nodePort: 31000
  type: NodePort
2->向Kubernetes集群的任何节点(EC2实例)的安全组添加新规则,如下所示

apiVersion: v1
kind: Service
metadata:
  name: db

spec:
  selector:
    app: db
  ports:
    - name: dbport
      port: 5432
      nodePort: 31000
  type: NodePort

3->使用节点(EC2实例)的公共IPv4地址连接到此远程数据库

主机地址:节点ec2实例的IPv4地址

端口:31000