玩玩kubernetes dashboard可视化界面吧

1 前言

      管理kubernentes集群时,总是需要登陆机器命令行查看,难免有时候显得繁琐。那么有没有一种可视化的更方便管理kubernente的工具呢,这样更方便的全局查看整个集群的各种资源。
目前用的比较多的是Kubernetes DashBoard和Rancher,其中Kubernentes-DashBoard是kubernentes官方提供的Web UI,Rancher是第三方开发的。当然也有很多公司会根据自己的实际需求,通过kubernentes提供的api接口开发适合自己的可视化管理界面。
用户可以通过可视化界面对Kubernetes集群中部署的应用进行问题处理和管理,查看集群中应用的运行情况,同时创建或修改部署、任务、服务等Kubernetes的资源。能够对部署的应用进行扩缩容,进行滚动更新、重启Pod和部署新应用。本文来讲一讲Kubernentes DashBoard,当然web 管理界面虽然方便,但是命令行的使用技能任何时候都不能丢。

2 DashBoard部署

2.1 环境准备

    查看kubernentes集群的版本

 

 

     根据自己的机器选择相应的版本,到官方的github仓库上面可以看到每个版本都有对应的kubernentes集群对应能适配的版本.因为我的集群是1.18.10版本,所以dashboard选择2.0.3版。

 

 

 

2.2 部署过程

2.2.1 下载dashboard的yaml文件

[root@master ~]# wget wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml

2.2.2 修改dashboard的yaml文件

修改service部分,默认service是ClusterIP类型,这里改称NodePort类型,是集群外部能否访问。

kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30002
selector:
k8s-app: kubernetes-dashboard

应用yaml并查看创建的资源

[root@master ~]# kubectl apply -f recommended.yaml

 

 

此时web界面就可以打开了

 

 

创建登陆用户

[root@master ~]# vim admin.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin
namespace: kubernetes-dashboard

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin
namespace: kubernetes-dashboard
[root@master ~]# kubectl apply -f admin.yaml

 

查看登陆token

[root@master ~]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin | awk '{print $1}')|grep '^token'|awk '{print $2}'


此处查看到的token就是web页面登陆的token。登陆进去以后就可以全局的观察集群状态
查看整个集群

 

 

查看node节点

 

 

查看pod资源

 

 

2.3 安装资源监控Metrics Server

上面的页面可以看到cpu和内存的使用率都没有值,是因为没有安装metrics server

2.3.1 下载metric server的yaml文件

[root@master ~]# wget wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1/components.yaml```

 

2.3.2 下载metric server镜像

因为机器无法访问google的镜像仓库,所以需要从dockerhub第三方仓库下载
需要到所有的node节点执行

[root@node1 ~]# docker pull phperall/metrics-server:v0.4.1
[root@node1 ~]# docker tag phperall/metrics-server:v0.4.1 k8s.gcr.io/metrics-server/metrics-server:v0.4.1

2.3.3 修改yaml文件

修改metrics api启动参数,防止证书错误
在启动参数args处增加
- --kubelet-insecure-tls

[root@master ~]# kubectl apply -f components.yaml

可以使用kubectl top查看资源使用

 

 

2.3.4 集群资源状态

此时再来查看集群,可以看到cpu和内存都有监控值了
查看node节点

 

 

查看pod资源

 

 

2.4 配置登陆config

将上文的token写入到.kube/config文件中,格式token: $TOKEN
再次登陆web的时候,就不用每次输入一长串的token了,可以选择Kubeconfig登陆。采用.kube/config文件,类似ssh的密钥一样。

2.5 配置用户名密码登陆

有时候使用token登陆,很麻烦,这时我们可以开启用户名密码登陆

2.5.1 开启kube-apiserver密码认证

创建用户名密码文件

[root@master ~]# echo 'admin,dev,10001,"system:authentication"' > /etc/kubernetes/pki/auth.csv


修改kube-apiserver的yaml文件

[root@master ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml
启动参数添加 - --basic-auth-file=/etc/kubernetes/pki/auth.csv

2.5.2 配置用户权限

上面已经创建了用户dev,但是该用户没有查看集群资源的权限,我们需要给用户配置权限。
此处我们给用户配置只有查看namespace的权限

[root@master ~]# vim dev.yaml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
labels:
kubernetes.io/bootstrapping: rbac-defaults
rbac.authorization.k8s.io/aggregate-to-edit: "true"
name: dev-readonly
rules:
- apiGroups:
- ""
resources:
- namespaces
verbs:
- get
- list
- watch
- apiGroups:
- metrics.k8s.io
resources:
- pods
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dev-readonly
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: dev-readonly
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:authentication

[root@master ~]# kubectl apply -f dev.yaml

 

2.5.3 开启dashboard密码认证

修改dashboard密码文件

[root@master ~]# vim recommended.yaml
启动参数添加 - --authentication-mode=basic,token
[root@master ~]# kubectl apply -f recommended.yaml

2.5.4 登陆dashboard

此时登陆web节目,可以发现多了一种认证方式。

 

 

2.5.5 注意事项

kubernetes从1.19版本开始已经弃用了basic-auth-file的方式:https://kubernetes.io/docs/setup/release/notes/

 

 

 

至此大功告成

# 参考文档

https://github.com/kubernetes/dashboard

 

posted @ 2020-11-22 00:13  Rainbowhhy  阅读(674)  评论(0编辑  收藏  举报