1. K8S Dashboard简介
K8S Dashboard 是基于网页的 Kubernetes 用户界面。使用 Dashboard 可以将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment,Job,DaemonSet 等等)。例如,可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。
Dashboard 同时展示了 Kubernetes 集群中的资源状态信息和所有报错信息。
参考文档:
2. 安装K8S Dashboard
1、执行安装
1 | wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml |
2、查看安装
1 | kubectl get all -n kubernetes-dashboard |
3、开放外部访问
方法一:修改servcie类型为NodePort
方法二:添加ingress
方法三:代理K8S API kubectl proxy --port=6880
方法四:代理服务端口 kubectl port-forward service/kubernetes-dashboard --address 0.0.0.0 10443:443
4、访问Dashboard
浏览器访问Dashboard,提示输入Token或者选择Kubeconfig文件进行登录。(Token的获取方法下一节有说明)
登录后,就可以看到K8S中的资源对象,并且对它们进行操作。
3. 获取Token
1、创建sa
1 | kubectl create sa admin-user -n kubernetes-dashboard |
2、添加sa到clusterrolebinding
1 | kubectl edit clusterrolebinding cluster-admin |
添加:
1 | subjects: |
3、获取token
1 | kubectl create token admin-user -n kubernetes-dashboard --duration=8760h |
更多关于sa的知识,参考文档《K8S中创建用户账户和服务账户》
4. 开启统计
参考文档《K8S问题记录》的【kubectl top命令执行报错】部分。
5. 扩展
5.1. Grafana
Grafana是一个开源的可视化和监控平台,支持与Kubernetes集成。
安装使用方法参考文档:《使用Docker安装配置Grafana》
5.2. KubeView
KubeView是一个基于Web的Kubernetes资源可视化工具,可以以图形方式显示Kubernetes集群中的资源关系和拓扑。
KubeView功能较单一,只能显示资源拓扑。
参考文档:
【安装KubeView】
1、 下载helm chart
1 | git clone https://github.com/benc-uk/kubeview |
2、修改配置
1 | vim kubeview/values.yaml |
如下修改:
- image.repository: ghcr.dockerproxy.com/benc-uk/kubeview
- loadBalancer.enabled: false
3、安装kubeview
1 | helm install kubeview kubeview -n kubeview --create-namespace |
4、暴露服务
1 | kubectl patch service/kubeview -n kubeview -p '{"spec": {"type": "NodePort"}}' |
5.3. Weave Scope
Weave Scope是一个开源工具,提供了对Kubernetes集群的实时可视化和监控功能。
Weave Scope除了可以查看同层资源的关系和拓扑,还可以查看资源使用情况。
注意:Weave Scope已经停止更新。
参考文档:
【安装Weave Scope】
1、安装Weave Scope
1 | wget https://github.com/weaveworks/scope/releases/download/v1.13.2/k8s-scope.yaml |
2、暴露服务
1 | kubectl patch service/weave-scope-app -n weave -p '{"spec": {"type": "NodePort"}}' |