Kubernetes 1.17.0管理界面Dashboard 2

原创
2020/01/02 13:27
阅读数 3K

Dashboard是Kubernetes的基本Web管理工具。Dashboard 1.x系列只能用于Kubernetes 1.16以前的版本。从Kubernetes 1.16开始,需要使用Dashboard 2,其部署方式有较大的变化。这里介绍在Kubernetes 1.17.0来部署管理界面Dashboard 2的方法和步骤。

1、安装服务

如果还没有安装CNI驱动,可以使用下面的命令来装个flannel虚拟网络驱动。

先获取镜像:

docker pull quay.io/coreos/flannel:v0.11.0-amd64

然后,安装:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

拉取Dashboard的images:

docker pull kubernetesui/metrics-scraper:v1.0.1
docker pull kubernetesui/dashboard:v2.0.0-beta8
  • 注意,有几个变化:
    • 现在的镜像是两个,以前只有一个。
    • 命名空间从kube-system变到kubernetes-dashboard。
    • 授权方式变了,下面将介绍具体方法。

2、访问权限设置

包括创建服务账号、设置服务账号的role、获取token等步骤。

2.1 创建服务访问账号

创建一个Service Account,命名为 admin-user,放在namespace kubernetes-dashboard 中。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

将上面内容保存为文件dashboard-adminuser.yaml。

2.2 创建ClusterRoleBinding

大部分情况下,使用 kops 或 kubeadm 部署集群后, ClusterRole admin-Role 已经在集群中存在,我们可以使用它,仅需要创建 ClusterRoleBinding 到我们的 ServiceAccount。

注意: apiVersion of ClusterRoleBinding 资源在不同的 Kubernetes 版本中可能是不一样的。Kubernetes v1.8之前apiVersion 是 rbac.authorization.k8s.io/v1beta1。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

将上面的内容保存到文件dashboard-adminrole.yaml。

2.3 Bearer Token

首先,应用上面的两个文件。如下:

kubectl apply -f dashboard-adminuser.yaml
kubectl apply -f dashboard-adminrole.yaml

找到 token 来登陆Dashboard的Web界面。执行下面的命令:

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

将token内容拷贝下来,在下面的 WebUI中使用。

3、访问方式

需要将Dashboard的服务暴露出来让客户端访问,包括运行代理和使用NodePort方法,还可以使用Ingress等方法,这里不介绍,可以参考:

3.1 代理访问模式

运行代理服务:

$ kubectl proxy

然后打开下面的连接:

在页面中选择token模式登陆,然后填入上面步骤复制的token即可。

 

3.2 NodePort模式

使用kubectl get svc/dashboardxxxxx -n kubernetes-dashboard来获取dashboard的服务ID。

使用kubectl edit svc/dashboardxxxxx -n kubernetes-dashboard来编辑服务的参数,将网络类型改为NodePort,并增加端口30800。

然后打开 http://localhost:30800 即可访问。

在页面中选择token模式登陆,然后填入上面步骤复制的token即可。

更多参考:

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部