前言
kubernetes中管理集群中资源的方式通常有四种:命令行、YAML、API和图形界面。其中dashboard是K8s官方的图形界面工具。使用简单,操作方便,能监控node和pod等。
安装dashboard
dashboard是通过yaml和镜像搭建的。先在github网站找到与k8s集群版本兼容性打√的版本,再下载对应的yaml文件:
下载yaml
经过对比发现dashboard v2.6.0对K8s v1.24完全兼容,下载v2.6.0版本yaml文件:
curl -LO https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.0/aio/deploy/recommended.yaml
下载镜像
在部署节点下载互联网镜像,再打tag标签,最后上传到本地镜像源。注意版本号一定要指明:
docker pull kubernetesui/dashboard:v2.6.0
docker tag kubernetesui/dashboard:v2.6.0 easzlab.io.local:5000/kubernetesui/dashboard:v2.6.0
docker push easzlab.io.local:5000/kubernetesui/dashboard:v2.6.0
docker pull kubernetesui/metrics-scraper:v1.0.8
docker tag kubernetesui/metrics-scraper:v1.0.8 easzlab.io.local:5000/kubernetesui/metrics-scraper:v1.0.8
docker push easzlab.io.local:5000/kubernetesui/metrics-scraper:v1.0.8
配置yaml文件
# 暴露dashboard的节点端口,让集群外的机器也能访问。
# cat /etc/kubeasz/clusters/k8s-cluster/hosts | grep NODE_PORT
# NODE_PORT_RANGE="30000-32767"
# nodePort: 30443 端口需要在集群部署前的定义值之间:
39 spec:
40 type: NodePort
41 ports:
42 - port: 443
43 targetPort: 8443
44 nodePort: 30443
# 修改主程序镜像下载地址
192 - name: kubernetes-dashboard
193 image: easzlab.io.local:5000/kubernetesui/dashboard:v2.6.0
# 修改监控组件镜像下载地址
277 - name: dashboard-metrics-scraper
278 image: easzlab.io.local:5000/kubernetesui/metrics-scraper:v1.0.8
部署dashboard:
kubectl apply -f dashboard.yaml
# 查看pod和对应node
kubectl get pod -n kubernetes-dashboard -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
dashboard-metrics-scraper-864d79d497-7qvnd 1/1 Running 0 4m13s 172.20.104.5 192.168.100.154 <none> <none>
kubernetes-dashboard-66f958bb-m4n72 1/1 Running 0 4m13s 172.20.166.131 192.168.100.153 <none> <none>
# 找出节点IP为192.168.100.153或192.168.100.154
使用浏览器输入以下网址都能访问dashboard:
https://192.168.100.153:30443
https://192.168.100.154:30443
生成Token
出于安全,登录dashboard需要认证。我们选择Token认证方式。编辑admin-user.yaml与admin-secret.yaml文件:
vim admin-user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
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
vim admin-secret.yaml
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: dashboard-admin-user
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: "admin-user"
应用admin-user.yaml创建用户,应用admin-secret.yaml创建密码,最后describe查看密码:
kubectl apply -f admin-user.yaml
kubectl apply -f admin-secret.yaml
# 复制token:后面的近一千个字符串
sudo kubectl describe secrets dashboard-admin-user -n kubernetes-dashboard
token: eyJhbGciOiJSUzI1NiIsImt......5nfHsl3abCwpiO8VXh7_A
回到浏览器,粘贴token,即可登录到管理界面。登录后第一件事:选择命名空间。
界面简介
总体结构
1)头部header有logo,命名空间选择,搜索栏,创建资源按钮等。
2)蓝色一栏左侧为面包屑导航,右侧当点击相关资源,会出现编辑删除等按钮。
3)页面左侧为菜单栏,点击一级菜单会列出全部二级菜单内容,单击二级菜单,只显示该内容。
4)主干body为内容展示与操作区。内容包括集群中各类资源,操作基本为资源的增删改查。
菜单介绍
工作负载:可查看Deployments,Pods,Controllers等。
服务:可查看Ingress和Services等。
配置和存储:可查看Config Maps和Secrets等。
集群:可查看命名空间,Nodes,持久卷等。
资源管理
创建资源
点击界面右上角的+符号按钮,可创建资源。主要以编辑或导入yaml和json为主。
编辑资源
选择到具体的资源,点击右上角铅笔按钮可编辑资源。同样以修改yaml和json为主。
总结
以上就是Dashboard的介绍,其它图形化工具还有Rancher和Kuboard。图形化适合k8s基础操作,查看集群资源状态等。