远程访问 EC2 上的 Kubernetes 仪表板

Posted

技术标签:

【中文标题】远程访问 EC2 上的 Kubernetes 仪表板【英文标题】:Access Kubernetes Dashboard on EC2 Remotely 【发布时间】:2019-12-22 04:03:04 【问题描述】:

我在 EC2 中设置了一个 K8s 集群并通过以下链接启动了 kubernetes 仪表板:

https://github.com/kubernetes/dashboard https://github.com/kubernetes/dashboard/wiki/Access-control

这是我运行的命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

kubectl proxy --address 0.0.0.0 --accept-hosts '.*'

当我在 EC2 实例的安全组中设置了几个 IP 时,我假设只有这些 IP 可以访问仪表板,所以这里不用担心安全性。

当我尝试使用以下方式访问仪表板时:

http://<My_IP>:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

现在访问仪表板最简单的方法是什么?

我注意到有几个相关的问题,但似乎没有人真正回答。

非常感谢。

附:刚刚注意到仪表板日志中的一些错误。仪表板运行有问题?

【问题讨论】:

从仪表板日志中发现一些错误: 检查这个线程,***.com/questions/53521962/… 【参考方案1】:

您可以通过type:Loadbalancer 使用服务并使用loadBalancerSourceRanges: 来限制对您的仪表板的访问。

【讨论】:

【参考方案2】:

您是否为服务帐户 kubernetes-dashboard 完成了 ClusterRoleBinding。如果没有,请应用以下 yaml 文件更改,以便 serviceaccount 获得 cluster-admin 角色来访问所有 kubernetes 资源。

   apiVersion: rbac.authorization.k8s.io/v1beta1
   kind: ClusterRoleBinding
   metadata:
      name: kubernetes-dashboard
      labels:
           k8s-app: kubernetes-dashboard
   roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
   subjects:
   -  kind: ServiceAccount
      name: kubernetes-dashboard
      namespace: kube-system

【讨论】:

【参考方案3】:

这取决于您用于连接 kube-apiserver 的 ServiceAccount 或用户。如果您想在不查找策略详细信息的情况下获得访问权限,请按字面意思授予对所有内容的访问权限,您的 RBAC 文件可能类似于以下内容:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
  name: my-cluster-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: <your-user-from-your-~/.kube/config>

比传递一个命令:

kubectl apply -f <filename>

第二种方法:

kubectl create clusterrolebinding my-cluster-admin --clusterrole=cluster-admin --user=<your-user-from-your-~/.kube/config>

您还可以在用户字段中使用组或服务帐户。查找有关 RBAC 授权的官方文档here。

如果你想一步一步来,我发现tutorial 也很棒。

【讨论】:

以上是关于远程访问 EC2 上的 Kubernetes 仪表板的主要内容,如果未能解决你的问题,请参考以下文章

从远程机器上部署的 kubernetes 仪表板服务访问本地笔记本电脑时无法访问站点问题

使用 grafana 访问远程 kubernetes 集群

我在两个EC-2实例和仪表板上设置了Kubernetes集群但是我无法在浏览器上访问kubernetes仪表板的ui

Kubernetes api/仪表板问题

如何允许 kubernetes 集群访问我的 ec2 机器?

Kubernetes 仪表板 - 如何锁定 8080 访问