我是 kubernetes 的新手。我创建了一个带有 2 个节点的 kubernetes db 集群。我可以从像 dbeaver 这样的瘦客户端访问那些 kubernetes pod 来检查数据。但是我无法从外部访问这些 kubernetes 节点。我目前正在尝试运行一个胖客户端,它将数据加载到 kubernetes 上的集群中。
kubectl describe svc <svc>
我可以看到分配给服务的 cluster-Ip。我的服务类型是负载均衡器。我尝试使用它,但仍然无法连接。我读过使用 nodeport 但没有任何 IP 地址如何访问
那么从外部连接任何节点或集群的最佳方式是什么。
提前致谢
问候
答案 0 :(得分:0)
@KrishnaChaurasia 是对的,但我想在官方文档的帮助下更详细地解释它。
我强烈建议通过以下来源:
NodePort
)的每个节点的 IP 上公开服务。自动创建 ClusterIP
服务路由到的 NodePort
服务。您将能够通过请求 NodePort
从集群外部联系 <NodeIP>:<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
通过公共 IP 访问服务。
使用类型为 NodePort
或 LoadBalancer
的服务使服务可在集群外访问。请参阅 services 和 kubectl expose 文档。
根据您的集群环境,这可能只是将服务公开给您的公司网络,也可能将其公开给互联网。考虑暴露的服务是否安全。它是否进行自己的身份验证?
将 Pod 放在服务后面。要从一组副本访问一个特定的 Pod,例如用于调试,请在 Pod 上放置一个唯一标签并创建一个选择此标签的新服务。
在大多数情况下,应用程序开发人员应该没有必要通过他们的 nodeIP 直接访问节点。
这些将帮助您更好地理解不同服务类型的概念,以及如何从集群外部公开和访问它们。