K8Dash 一个简单的 k8s 实时 Dashboard

k8s 原生的 Kubernetes Dashboard 原本使用了 Heapster 来提供 k8s 集群的基础状态实时监控,但因为 Heapster 被废弃的缘故,Kubernetes Dashboard 在当前的版本是无法查看到 k8s 集群的基础状态的。刚好看到一个项目:K8Dash,可以提供对 k8s 集群的基础状态实时监控,下面将简单一下介绍 K8Dash 的部署方法。

首先,K8Dash 依赖 metric-server 收集 k8s 集群状态信息,需要先部署 metric-server 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
git clone https://github.com/kubernetes-incubator/metrics-server

#修改 deploy/1.8+/metrics-server-deployment.yaml 添加部分参数,修改后文件如下

---
apiVersion: v1
kind: ServiceAccount
metadata:
name: metrics-server
namespace: kube-system
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- name: metrics-server
image: k8s.gcr.io/metrics-server-amd64:v0.3.1
imagePullPolicy: Always
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
volumeMounts:
- name: tmp-dir
mountPath: /tmp

#应用 metric-server
kubectl create -f deploy/1.8+/

#确认 metric-server 正常运行
kubectl top nodes

部署 K8Dash 这里通过 Ingress-nginx 添加服务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
kubectl apply -f https://raw.githubusercontent.com/herbrandson/k8dash/master/kubernetes-k8dash.yaml

#Ingress 配置

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: k8dash
namespace: kube-system
spec:
rules:
-
host: k8dash.example.com
http:
paths:
-
path: /
backend:
serviceName: k8dash
servicePort: 80

配置服务帐号 token

1
2
3
4
5
6
7
kubectl create serviceaccount k8dash-sa

kubectl create clusterrolebinding k8dash-sa --clusterrole=cluster-admin --serviceaccount=default:k8dash-sa

kubectl get secrets

kubectl describe secret k8dash-sa-token-xxxxx

部署完成后就可以使用 token 登录 k8dash 了。