从外部访问 Kubernetes 集群/节点

时间:2021-02-12 08:23:21

标签: kubernetes

我是 kubernetes 的新手。我创建了一个带有 2 个节点的 kubernetes db 集群。我可以从像 dbeaver 这样的瘦客户端访问那些 kubernetes pod 来检查数据。但是我无法从外部访问这些 kubernetes 节点。我目前正在尝试运行一个胖客户端,它将数据加载到 kubernetes 上的集群中。

kubectl describe svc <svc>

我可以看到分配给服务的 cluster-Ip。我的服务类型是负载均衡器。我尝试使用它,但仍然无法连接。我读过使用 nodeport 但没有任何 IP 地址如何访问

那么从外部连接任何节点或集群的最佳方式是什么。

提前致谢

问候

1 个答案:

答案 0 :(得分:0)

@KrishnaChaurasia 是对的,但我想在官方文档的帮助下更详细地解释它。

我强烈建议通过以下来源:

  1. NodePort Type Service:在静态端口(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
  1. Accessing services running on the cluster:您可以通过多种方式从集群外部连接到节点、Pod 和服务:
  • 通过公共 IP 访问服务。

  • 使用类型为 NodePortLoadBalancer 的服务使服务可在集群外访问。请参阅 serviceskubectl expose 文档。

  • 根据您的集群环境,这可能只是将服务公开给您的公司网络,也可能将其公开给互联网。考虑暴露的服务是否安全。它是否进行自己的身份验证?

  • 将 Pod 放在服务后面。要从一组副本访问一个特定的 Pod,例如用于调试,请在 Pod 上放置一个唯一标签并创建一个选择此标签的新服务。

  • 在大多数情况下,应用程序开发人员应该没有必要通过他们的 nodeIP 直接访问节点。

  1. 补充示例:Use a Service to Access an Application in a Cluster:此页面展示了如何创建 Kubernetes Service 对象,外部客户端可以使用该对象访问集群中运行的应用程序。

这些将帮助您更好地理解不同服务类型的概念,以及如何从集群外部公开和访问它们。