Dashboard插件安装

1、Dashboard安装

上一小节我们讲解了怎么利用Kubeadm快速的搭建Kubernetes集群,这一小节我们安装一下Dashboard插件,实现Kubernetes集群可视化。

Dashboard插件Github地址:https://github.com/kubernetes/dashboard

Dashboard 是基于网页的 Kubernetes 用户界面。您可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。您可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源(如 Deployment,Job,DaemonSet 等等)。例如,您可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。

以下所有操作都在Node节点

在开始之前我们需要在Node节点提前下载Dashboard的镜像:

docker pull googlecontainersmirrors/kubernetes-dashboard-amd64:v1.10.1(这个版本和v1.17.3版本不兼容、因为这里是测试环境、我们替换版本为下面的v2.0.0-rc5测试版本)
docker pull kubernetesui/dashboard:v2.0.0-rc5

docker tag googlecontainersmirrors/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

首先我们去Github下载Dashboard的.yaml文件(版本一定要和镜像版本对应哦)。

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml(这里需要修改recommended.yaml文件、使用NodePort映射Dashboard服务)

创建Dashboard:下载完成以后、我们使用下面的命令创建Dashboard:

kubectl apply -f recommended.yaml

注:如果感觉创建的服务有问题、可以通过:kubectl delete-f kubernetes-dashboard.yaml 命令删除,然后重建。

当然我们还可以通过下面的命令查看Dashboard的状态。

查看Dashboard详细情况:

kubectl describe svc kubernetes-dashboard -n kubernetes-dashboard

查看Dashboard的调度情况:

kubectl get pods -n kubernetes-dashboard -o wide

img

通过:kubectl get pods -n kubernetes-dashboard -o wide 命令查看dashboard 的调度情况、我们发现dashboard 被调度到了node02节点上。

2、Dashboard访问

Kubernetes提供了以下四种访问服务的方式:kubectl proxy,NodePort,API Server,Ingress。由于默认的service类型是ClusterIP,我们是自建的kubernetes,无法自动分配ip给service,所以这里我们需要修改一下dashboard的service类型,指定为NodePort以方便我们访问。

kubectl proxy:

如果要在本地访问dashboard,我们需要创建一个安全通道,可运行如下命令:kubectl proxy。

NodePort:NodePort是将节点直接暴露在外网的一种方式,只建议在开发环境,单节点的安装方式中使用。

API Server:如果Kubernetes API服务器是公开的,并可以从外部访问,那我们可以直接使用API Server的方式来访问,也是比较推荐的方式。

Ingress:Ingress将开源的反向代理负载均衡器(如 Nginx、Apache、Haproxy等)与k8s进行集成,并可以动态的更新Nginx配置等,是比较灵活,更为推荐的暴露服务的方式,但也相对比较复杂,后面的文章我们会详细介绍。

这里我们采用NodePort的方式直接将端口映射出来,启用NodePort很简单,我们只需要在recommended.yaml文件中添加如下内容即可(修改的时候切记大小写和空格):

img

修改完成以后通过 kubectl apply -f recommended.yaml 命令更新一下Dashboard就可以了,此时可以通过 kubectl get service -n kubernetes-dashboard 看到443端口已经成功映射到30355端口了。Dashboard已经在30335端口上公开,现在可以在任意节点的IP地址https://:30355进行访问。

img

img

遗憾的是,由于证书问题,我们无法访问,需要在部署Dashboard时指定有效的证书,才可以访问(在正式环境中,并不推荐使用NodePort的方式来访问Dashboard,后面我们会详细讲解生产环境如何访问Dashboard)。

3、生成Token

登录dashboard 的时候支持Kubeconfig 和token 两种认证方式,Kubeconfig 中也依赖token 字段,所以生成token 这一步是必不可少的。这里我们创建一个admin用户并授予admin 角色绑定,使用下面的yaml文件创建admin用户并赋予他管理员权限,然后就可以通过token 登陆dashbaord,这种认证方式本质实际上是通过Service Account 的身份认证加上Bearer token请求 API server 的方式实现,参考 Kubernetes 中的认证。

创建 create-admin.yaml 文件,并插入如下代码:

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: admin
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: admin
  namespace: kube-system

  ---
  apiVersion: v1
  kind: ServiceAccount
  metadata:
  name: admin
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile

通过kubectl apply -f create-admin.yaml 命令应用配置文件创建用户。上面的admin用户创建完成后我们就可以获取到该用户对应的token了,如下命令:

kubectl -n kubernetes-dashboard describe secret ParseError: KaTeX parse error: Expected '}', got 'EOF' at end of input: …r | awk '{print1}')

img

然后在dashboard登录页面上直接使用上面得到的token字符串即可登录,这样就可以拥有管理员权限操作整个kubernetes集群的对象,当然你也可以为你的登录用户新建一个指定操作权限的用户。

img

推荐文章