Kubernetes1.16.2安装Dashboard

Kubernetes Dashboard是Kubernetes提供的Web用户界面,通过Dashboard我们可以将容器化的应用部署到Kubernetes集群中,对容器化的应用进行故障排除以及集群资源管理;可以通过Dashboard查看集群应用详情,创建或修改单个Kubernetes资源(例如Deployments,Jobs,DaemonSets等)。

安装Dashboard

上节我们搭建的Kubernetes集群版本为1.16.2,截至目前为止,与该版本对应的Dashboard版本为v2.0.0-beta5,可以通过https://github.com/kubernetes/dashboard/releases查看:

Kubernetes1.16.2安装Dashboard

下载该版本的Dashboard yaml文件:

1
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml

 

修改该配置文件:

1
vim recommended.yaml

 

修改的内容如下图所示:

Kubernetes1.16.2安装Dashboard

接着创建证书:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mkdir dashboard-certs

cd dashboard-certs/

#创建命名空间
kubectl create namespace kubernetes-dashboard

#创建key文件
openssl genrsa -out dashboard.key 2048

#证书请求
openssl req -days 36000 -new -out dashboard.csr -key dashboard.key -subj '/CN=dashboard-cert'

#自签证书
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt

#创建kubernetes-dashboard-certs对象
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard

 

然后执行kubectl create -f ../recommended.yaml命令安装Dashboard。

使用kubectl get service -n kubernetes-dashboard -o wide命令查看是否部署成功:

Kubernetes1.16.2安装Dashboard

创建账号与授权

Dashboard部署好后,接着创建账号:

1
vim dashboard-admin.yaml

 

内容如下所示:

1
2
3
4
5
6
7
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: dashboard-admin
  namespace: kubernetes-dashboard

 

创建该账号:

1
kubectl create -f dashboard-admin.yaml

 

账号创建好后,接着为其授权:

1
vim dashboard-admin-bind-cluster-role.yaml

 

内容如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dashboard-admin-bind-cluster-role
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: dashboard-admin
  namespace: kubernetes-dashboard

 

授权:

1
kubectl create -f dashboard-admin-bind-cluster-role.yaml

 

访问Dashboard

使用浏览器访问https://192.168.33.12:30008/#/login

Kubernetes1.16.2安装Dashboard

选择Token,Token的值可以用下面的命令获取:

1
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')

 

Kubernetes1.16.2安装Dashboard

复制该Token到Dashboard:

Kubernetes1.16.2安装Dashboard

点击Sign In:

Kubernetes1.16.2安装Dashboard

安装Metrics Service

上面Dashboard的CPU Usage (cores)和Memory Usage (bytes)列是空的,这是因为Kubernetes的早期版本依靠Heapster来实现完整的性能数据采集和监控功能,Kubernetes从1.8版本开始,性能数据开始以Metrics API的方式提供标准化接口,并且从1.10版本开始将Heapster替换为Metrics Server。

首先在master节点上安装git:

1
yum install git

 

然后克隆Metrics Server GitHub仓库:

1
git clone https://github.com/kubernetes-sigs/metrics-server.git

 

修改metrics-server-deployment.yaml:

1
vim metrics-server/deploy/1.8+/metrics-server-deployment.yaml

 

修改内容如下图所示:

Kubernetes1.16.2安装Dashboard

1
2
3
4
5
6
7
......
        imagePullPolicy: IfNotPresent
        command:
          - /metrics-server
          - --kubelet-preferred-address-types=InternalIP
          - --kubelet-insecure-tls
......

因为默认metrics service的镜像地址需要科学上网才能拉取,所以在创建之前,我们在node1和node2节点先执行以下操作准备镜像:

1
2
docker pull bluersw/metrics-server-amd64:v0.3.6
docker tag bluersw/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6

 

然后回到master节点,执行:

1
kubectl create -f metrics-server/deploy/1.8+/

 

Kubernetes1.16.2安装Dashboard

稍等片刻,然后执行kubectl top nodes便可以看到每个节点的CPU和内存使用率了:

Kubernetes1.16.2安装Dashboard

回到Dashboard:

Kubernetes1.16.2安装Dashboard

Kubernetes1.16.2安装Dashboard