首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将kubectl端口转发到远程postgres端口

将kubectl端口转发到远程postgres端口
EN

Stack Overflow用户
提问于 2022-01-18 21:29:33
回答 2查看 2.6K关注 0票数 2

尝试打开Postgres端口5432,以便可以从本地机器访问它。港口只从库伯内特斯港开放。

代码语言:javascript
复制
127.0.0.1:5432 <====> kubernetes-pod <=====> Postgres Server

基本上,我想让5432端口通过我的本地机器访问,这个端口只能从kubernetes-pod访问。我该怎么做呢。

我试了一下,如果postgres服务器运行在相同的吊舱上,我认为这是可行的,而在我的情况下是这样的:

代码语言:javascript
复制
kubectl port-forward pod-5bf5c7df9b-xcjsf 5433:5432

注意: PostgreSQL服务器作为独立的db服务器运行,只有pod才能访问端口,我希望从本地机器访问PostgreSQL db端口。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-18 22:46:40

实现这一目标的最简单和最好的方法是在一个吊舱中使用socat

您可以使用alpine/socat container image创建吊舱。然后将端口转发到这个吊舱中,这将将连接转发到目标db。

以下是几个步骤:

创建my-postgresql-socat.yaml文件的

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: my-postgresql-socat
  labels:
    name: my-postgresql-socat
spec:
  containers:
  - name: my-postgresql-socat
    image: alpine/socat
    command: ["socat", "-dd", "tcp4-listen:5432,fork,reuseaddr", "tcp4:my-postgresql-host:5432"]
    resources:
      limits:
        memory: "64Mi"
        cpu: "50m"
    ports:
      - containerPort: 5432

创建一个吊舱

代码语言:javascript
复制
kubectl apply -f my-postgresql-socat.yaml

运行本地port-forward:的

代码语言:javascript
复制
oc port-forward my-postgresql-socat 5432:5432

您现在可以通过localhost:5432访问数据库了。

  1. 完成后,删除吊舱:

代码语言:javascript
复制
kubectl delete pod my-postgresql-socat
票数 5
EN

Stack Overflow用户

发布于 2022-01-18 21:59:46

试试这个:kubectl port-forward -n <namespace-name> pod/pod-5bf5c7df9b-xcjsf 5432:5432

注意不同之处:

如果不是default

  • I,则需要指定
  1. 名称,通常在名称前加上pod/
    1. The本地端口5432连接到端口5432

    上的k8s集群。

此外,最好的做法是转发到服务,而不是吊舱。例如:kubectl port-forward -n namespace svc/service-name 5432:5432,因为pod名称会改变,但是服务名称不会改变。而且,请记住,服务端口通常是5432,但吊舱可能不会监听该端口。

我希望这能帮到你。我为CodeZero工作,我们允许您使用我们的远程端口功能轻松地连接集群资源。去https://codezero.io看看吧

您还可以使用CodeZero CLI (czctl)将其传送到集群中,然后可以在本地访问kubernetes资源:

代码语言:javascript
复制
czctl start
czctl namespace teleport <namespace-name>

然后,只要集群中有指向Postgres的服务,就可以像在计算机上本地运行一样访问该服务。例如:

创建一个名为my-postgres-db的服务,它指向您的Pod/Deployment/ReplicaSet荚。然后,您可以使用

psql -h my-postgres-db ...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70762591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档