玩玩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