gpt4 book ai didi

kubernetes - kubectl 代理的目的是什么?

转载 作者:行者123 更新时间:2023-12-04 18:00:51 25 4
gpt4 key购买 nike

为了访问 Kubernetes 仪表板,您必须在本地机器上运行 kubectl proxy,然后将您的 Web 浏览器指向代理。同样,如果要提交 Spark 作业,请再次在本地计算机上运行 kubectl proxy,然后针对 localhost 地址运行 spark-submit。

我的问题是,为什么 Kubernetes 会有这种奇特的安排? Dashboard 服务在 Kubernetes 集群上运行,为什么我不直接将 Web 浏览器指向集群呢?为什么要有代理?在某些情况下,对代理的需要是不方便的。例如,我想从我的 Web 服务器提交一个 Spark 作业。我不能这样做——我必须先运行一个代理,但这会将我与一个特定的集群联系起来。我可能有很多 Kubernetes 集群。

为什么 Kubernetes 被设计成只能通过代理访问它?

最佳答案

您可以通过不同的方式访问集群中的应用程序:

  • 通过使用 apiserver as a proxy ,但需要通过认证和授权阶段。
  • 通过使用 hostNetwork .当 Pod 配置了 hostNetwork: true 时,运行在这样的 Pod 中的应用程序可以直接看到启动 Pod 的主机的网络接口(interface)。
  • 通过使用 hostPort .容器端口将在 hostIP:hostPort 暴露给外部网络,其中 hostIP是运行容器的 Kubernetes 节点的 IP 地址,hostPort是用户请求的端口。
  • 通过使用类型为:ClusterIP 的服务. ClusterIP 服务仅可用于集群和集群节点中的 pod。
  • 通过使用类型为:NodePort 的服务.除了 ClusterIP 之外,该服务是随机的或由 30000-32767 范围内的用户端口指定。 .所有集群节点监听该端口并将所有流量转发到相应的服务。
  • 通过使用类型为:LoadBalancer 的服务.它仅适用于受支持的云提供商和 Metallb对于 On Premise 集群。除了开放 NodePort,Kubernetes 还会创建云负载均衡器,将流量转发到 NodeIP:Nodeport为那项服务。

  • 所以,基本上: [[[ Kubernetes Service type:ClusterIP] + NodePort ] + LoadBalancer ]
  • 通过使用入口(入口 Controller +入口对象)。 Ingress-controller 由 Nodeport 或 LoadBalancer 服务公开,并作为集群服务的 L7 反向代理/LB 工作。它可以访问 ClusterIP 服务,因此,如果您使用 Ingress,则无需公开服务。您可以将其用于 SSL 终止和基于 URL 路径转发流量。最受欢迎的入口 Controller 是:
  • kubernetes/nginx-ingress ,
  • nginxinc/kubernetes-ingress ,
  • HAProxy-ingress ,
  • Traefik .

  • 现在,关于 kubectl proxy .它使用第一种方式连接到集群。基本上,它读取 .kube/config 中的集群配置,并使用那里的凭据通过集群 API Server 身份验证和授权阶段。然后它创建从本地机器到 API-Server 接口(interface)的通信 channel ,因此,您可以使用本地端口向 Kubernetes 集群 API 发送请求,而无需为每个请求指定凭据。

    关于kubernetes - kubectl 代理的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54332972/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com