尝试打开Postgres端口5432,以便可以从本地机器访问它。港口只从库伯内特斯港开放。
127.0.0.1:5432 <====> kubernetes-pod <=====> Postgres Server基本上,我想让5432端口通过我的本地机器访问,这个端口只能从kubernetes-pod访问。我该怎么做呢。
我试了一下,如果postgres服务器运行在相同的吊舱上,我认为这是可行的,而在我的情况下是这样的:
kubectl port-forward pod-5bf5c7df9b-xcjsf 5433:5432注意: PostgreSQL服务器作为独立的db服务器运行,只有pod才能访问端口,我希望从本地机器访问PostgreSQL db端口。
发布于 2022-01-18 22:46:40
实现这一目标的最简单和最好的方法是在一个吊舱中使用socat。
您可以使用alpine/socat container image创建吊舱。然后将端口转发到这个吊舱中,这将将连接转发到目标db。
以下是几个步骤:
创建my-postgresql-socat.yaml文件的
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创建一个吊舱
kubectl apply -f my-postgresql-socat.yaml运行本地port-forward:的
oc port-forward my-postgresql-socat 5432:5432您现在可以通过localhost:5432访问数据库了。
kubectl delete pod my-postgresql-socat发布于 2022-01-18 21:59:46
试试这个:kubectl port-forward -n <namespace-name> pod/pod-5bf5c7df9b-xcjsf 5432:5432
注意不同之处:
如果不是default
pod/上的k8s集群。
此外,最好的做法是转发到服务,而不是吊舱。例如:kubectl port-forward -n namespace svc/service-name 5432:5432,因为pod名称会改变,但是服务名称不会改变。而且,请记住,服务端口通常是5432,但吊舱可能不会监听该端口。
我希望这能帮到你。我为CodeZero工作,我们允许您使用我们的远程端口功能轻松地连接集群资源。去https://codezero.io看看吧
您还可以使用CodeZero CLI (czctl)将其传送到集群中,然后可以在本地访问kubernetes资源:
czctl start
czctl namespace teleport <namespace-name>然后,只要集群中有指向Postgres的服务,就可以像在计算机上本地运行一样访问该服务。例如:
创建一个名为my-postgres-db的服务,它指向您的Pod/Deployment/ReplicaSet荚。然后,您可以使用
psql -h my-postgres-db ...
https://stackoverflow.com/questions/70762591
复制相似问题