如何使用NodePort
类型将<{1}}类型的服务公开到互联网而不使用?我发现的每个资源都是通过使用负载均衡器来实现的。但我不希望负载平衡其昂贵和不必要的用例因为我正在运行一个LoadBalancer
映像的实例,它挂载到永久磁盘,我希望能够从我的PC连接到我的数据库使用pgAdmin。如果有可能,请提供更详细的答案,因为我是Kubernetes,GCE和网络的新手。
只是为了记录和更多的上下文我部署运行我的API服务器的3个副本,我通过负载均衡器与set loadBalancerIP连接,另一个部署运行一个带有NodePort服务的postgres实例,通过它我的API服务器正在与我的数据库通信。我的问题是在没有公共访问权限的情况下维护数据库很难。
答案 0 :(得分:25)
使用NodePort
作为服务类型可以直接使用,例如像这样:
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
name: http
- port: 443
nodePort: 30443
name: https
selector:
name: nginx
更多详情可在documentation中找到。
使用NodePort
的缺点是您必须自己负责与提供商防火墙集成。也可以在官方文档的Configuring Your Cloud Provider's Firewalls部分找到它的起始端口。
对于GCE开放,以上所有节点上公开的内容可能如下所示:
gcloud compute firewall-rules create myservice --allow tcp:30080,tcp:30443
一旦到位,您的服务应该可以通过节点的任何公共IP访问。你会发现它们:
gcloud compute instances list
答案 1 :(得分:1)
您可以在终端窗口(Windows中的命令或Power Shell)中运行kubectl,以将Postgresql部署端口转发到您的本地主机。
kubectl port-forward deployment/my-pg-deployment 5432:5432
此命令正在运行时(它在前台运行),您可以使用pgAdmin指向localhost:5432来访问gke上的pod。使用pgadmin完成操作后,只需关闭终端即可。