我是kubernetes的新手。我已经创建了一个具有2个节点的kubernetes db集群。我可以从瘦客户机(如dbeaver)访问这些kubernetes pod来检查数据。但是我不能从外部访问这些kubernetes节点。我目前正在尝试运行一个厚客户端,它将加载数据到kubernetes上的集群。
kubectl describe svc <svc>
我可以看到分配给服务的cluster-Ip。我的服务类型是loadbalancer。我试着用它,但还是连接不上。我读到关于使用nodeport但没有任何IP地址如何访问
那么从外部连接任何节点或集群的最佳方式是什么呢?
提前谢谢你
对
@KrishnaChaurasia是对的,但我想在官方文档的帮助下更详细地解释一下。
我强烈建议您查看以下来源:
- NodePort Type Service:在静态端口(
NodePort
)上公开每个节点的IP上的服务。系统自动创建ClusterIP
服务,NodePort
服务路由到该服务。您将能够通过请求<NodeIP>:<NodePort>
从集群外部联系NodePort
服务。下面是NodePort
服务的一个例子:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
selector:
app: MyApp
ports:
# By default and for convenience, the `targetPort` is set to the same value as the `port` field.
- port: 80
targetPort: 80
# Optional field
# By default and for convenience, the Kubernetes control plane will allocate a port from a range (default: 30000-32767)
nodePort: 30007
- 访问集群上运行的服务:您有几个选项可以连接到集群外的节点、pod和服务:
通过公网ip访问服务
使用
NodePort
或LoadBalancer
类型的服务使该服务在集群外可达。请参阅services和kubectl公开文档。根据您的集群环境,这可能只是将服务暴露给您的公司网络,也可能将其暴露给internet。考虑要公开的服务是否安全。它自己进行身份验证吗?
将pod放置在服务后面。要从一组副本中访问一个特定的pod,例如用于调试,请在pod上放置一个唯一的标签,并创建一个选择此标签的新服务。
在大多数情况下,应用程序开发人员不应该通过nodeip直接访问节点。
- 补充示例:使用服务访问集群中的应用程序:该页展示了如何创建Kubernetes Service对象,外部客户端可以使用该对象访问集群中运行的应用程序。
这些将帮助您更好地理解不同服务类型的概念,以及如何从集群外部公开和访问它们。