试图从运行在另一个centos vm上的另一个应用程序访问在centos vms的kubernetes(kubeadm)中部署的postgres db。我已经将postgres服务部署为“ NodePort”类型。我的理解是,我们只能将其作为LoadBalancer类型部署在AWS / Azure之类的云提供商上,而不能部署在裸机vm上。因此,现在尝试使用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
其中没有显示以下任何地址
NAME HOSTS ADDRESS PORTS AGE
postgres-ingress * 80 4m19s
am甚至无法从本地Mac上的pgadmin访问它。我想念什么吗?
我们非常感谢您的帮助。
答案 0 :(得分:3)
入口无法使用,它仅用于HTTP流量,而Postgres协议不是HTTP。您需要仅处理原始TCP流量的解决方案:
kubectl describe
来找出端口,然后将Postgres客户端连接到该端口上节点VM(而不是Pod或服务)的IP。kubectl port-forward pod/your-postgres-pod 5432:5432
,然后将Postgres客户端连接到localhost:5432
。这是从本地计算机访问数据库的首选方式(非常方便且安全),但是我不会将其用于生产工作负载(kubectl必须始终运行,因此它有些脆弱,并且您无法获得最佳性能) 。