san*_*osh 7 postgresql kubernetes
我正在尝试从另一个运行在另一个 centos vm 上的应用程序访问部署在 centos vms 上的 kubernetes(kubeadm) 中的 postgres db。我已将 postgres 服务部署为“NodePort”类型。我的理解是我们只能在 AWS/Azure 等云提供商上而不是在裸机虚拟机上将其部署为 LoadBalancer 类型。所以现在我正在尝试使用 NodePort 类型的服务配置“入口”。但是除了在 kubernetes master 上使用 kubectl exec $Pod-Name 之外,我仍然无法访问我的数据库。
我的 ingress.yaml 是
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: postgres-ingress
spec:
backend:
serviceName: postgres
servicePort: 5432
Run Code Online (Sandbox Code Playgroud)
它没有显示任何地址,如下所示
NAME HOSTS ADDRESS PORTS AGE
postgres-ingress * 80 4m19s
Run Code Online (Sandbox Code Playgroud)
我什至无法从我本地 mac 上的 pgadmin 访问它。我错过了什么吗?
任何帮助都受到高度赞赏。
Dir*_*aio 10
Ingress 不会工作,它只是为 HTTP 流量设计的,Postgres 协议不是 HTTP。您需要仅处理原始 TCP 流量的解决方案:
kubectl describe在服务上执行来找出端口,然后将您的 Postgres 客户端连接到该端口上的节点 VM(不是 pod 或服务)的 IP。kubectl port-forward pod/your-postgres-pod 5432:5432,然后将您的 Postgres 客户端连接到localhost:5432. 这是我从本地机器访问数据库的首选方式(它非常方便和安全),但我不会将它用于生产工作负载(kubectl 必须始终运行,因此它有点脆弱,您无法获得最佳性能) .| 归档时间: |
|
| 查看次数: |
3890 次 |
| 最近记录: |