6

所以这个想法是 Kubernetes 仪表板访问 Kubernetes API 为我们提供在 Kubernetes 集群中运行的不同“种类”的漂亮可视化,我们访问 Kubernetes 仪表板的方法是通过 Kubernetes API 的代理机制,然后可以将其暴露给公共主机供公众访问。

我的问题是,我们是否有可能通过 Kubernetes Dashboard 的公开地址访问 Kubernetes 集群内的其他服务的 Kubernetes API 代理机制?

4

3 回答 3

3

你当然可以。因此,使用 设置代理后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 集群的代理。

于 2018-10-09T22:00:26.570 回答
1

您可以通过将服务更改为NodePort

$ kubectl -n kube-system edit service kubernetes-dashboard

您应该看到yaml服务的表示。更改type: ClusterIPtype: NodePort保存文件。

注意:只有当您选择在浏览器中安装用户证书时,才能使用这种访​​问仪表板的方式。可以使用 kubeconfig 文件用来联系 API Server 的证书。

请查看以下文章和 URL 以获得更好的理解:

堆栈溢出线程

访问 Dashboard 1.7.X 及更高版本

部署可公开访问的 Kubernetes 仪表板

如何从集群外部访问 Kubernetes 仪表板

希望对您有所帮助!

于 2018-10-10T13:40:34.487 回答
0

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

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

  • [网络安全] 如果作为白名单机制存在,则将 IP 公共可访问性限制为 K8s API 服务器/负载均衡器
  • [网络安全] Private-to-Private 可达性更好,如 vpn 或 AWS PrivateLink
  • [API 安全] 通过 clusterrole/role 限制权限以强制执行 RBAC,最好保持它为 ReadOnly 动词 { Get , List }
  • [API 安全] 启用 k8s 组件的审计日志记录以跟踪事件和操作
于 2022-01-20T10:05:12.237 回答