【发布时间】:2019-05-07 08:36:33
【问题描述】:
为了访问 Kubernetes 仪表板,您必须在本地机器上运行 kubectl proxy,然后将您的 Web 浏览器指向代理。同样,如果您想提交 Spark 作业,请再次在本地计算机上运行 kubectl proxy,然后针对 localhost 地址运行 spark-submit。
我的问题是,为什么 Kubernetes 会有这种奇特的安排? Dashboard 服务在 Kubernetes 集群上运行,为什么我不直接将 Web 浏览器指向集群呢?为什么要有代理?在某些情况下,对代理的需要是不方便的。例如,我想从我的 Web 服务器提交一个 Spark 作业。我不能这样做——我必须先运行一个代理,但这会将我与一个特定的集群联系起来。我可能有很多 Kubernetes 集群。
为什么 Kubernetes 被设计成只能通过代理访问它?
【问题讨论】:
-
K8s 服务默认只能在集群内访问。您的开发机器不是集群的一部分,因此您必须通过 kubectl 代理您的调用。您可以通过在服务定义中使用
type: nodePort或在支持 LB(Azure、AWS、GKE 等)的环境中使用type: LoadBalancer向外部世界公开服务。见K8s services 和Using a Service to Expose Your App
标签: kubernetes