通过 Kubernetes 仪表盘主机访问 Kubernetes API

6
所以,Kubernetes仪表板访问Kubernetes API,为我们呈现在Kubernetes集群中运行的不同“类型”的精美可视化图表,并且我们访问Kubernetes仪表板的方法是通过Kubernetes API的代理机制,该代理机制可以暴露给公共主机进行公共访问。
我的问题是是否有可能通过Kubernetes面板的公共地址访问Kubernetes集群内的其他服务的Kubernetes API代理机制?
3个回答

4
当然可以。所以在使用kubectl proxy设置代理后,您可以按照以下格式访问服务:
http://localhost:8001/api/v1/namespaces/kube-system/services/<service-name>:<port-name>/proxy/

例如,对于http-svc和端口名称http
http://localhost:8001/api/v1/namespaces/default/services/http-svc:http/proxy/

注意:它不一定是公共访问,而是一个代理,让您可以从公共计算机(比如笔记本电脑)连接到私有Kubernetes集群。

我知道这个问题。我的问题是,假设我已经使用Ingress将Kubernetes仪表板托管到了xxx.yyy.com的私有集群中,那么是否有任何方法可以使用主机xxx.yyy.com访问Kubernetes API? - Arpit Goyal

1
你可以通过将服务更改为NodePort来实现:
$ kubectl -n kube-system edit service kubernetes-dashboard

您应该看到服务的 yaml 表示。将 type: ClusterIP 更改为 type: NodePort 并保存文件。
注意:只有在您选择在浏览器中安装用户证书时,才可以通过此方式访问仪表板。可以使用 kubeconfig 文件使用的证书联系 API 服务器。
请查看以下文章和 URL 以获得更好的理解: Stackoverflow thread Accessing Dashboard 1.7.X and above Deploying a publicly accessible Kubernetes Dashboard How to access kubernetes dashboard from outside cluster 希望这能帮助您!

VKR - 我这里有些不同,请您在上面的答案中给一个小例子来检查我的查询。 - Arpit Goyal

0

暴露Kubernetes仪表板根本不安全,但您的答案是关于需要被外部服务访问的K8s API服务器。

正确的答案根据您的平台和基础设施而异,但作为一般点:

  • [网络安全]将公共IP可达性限制为K8s API服务器/负载均衡器(如果存在)作为白名单机制
  • [网络安全]私有到私有的可达性更好,如VPN或AWS PrivateLink
  • [API安全]通过clusterrole/role限制权限以强制RBAC,最好保持只读动词{Get,List}
  • [API安全]启用k8s组件的审计日志记录以跟踪事件和操作

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接