Kubernetes学习与应用(07)——安装Dashboard监控插件

1. Dashboard概述

Dashboard是基于Web的Kubernetes用户界面,我们可以通过Dashboard直接管理集群资源,运行、创建或修改集群中的资源,监控容器中的资源状态和发生的错误信息。还可以使用部署向导来扩展部署,启动滚动更新,重新启动Pod或部署新应用程序。

2. 安装Dashboard

安装docker镜像

不能FQ的话,需要先下载镜像,然后再调用kubectl安装,安装时注意镜像的版本必须和yaml的一致

docker pull registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0
docker tag registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
docker image rm registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0

PS:如果直接安装不了,可以使用下面命令进行查找,然后再替换源进行安装

docker search kubernetes-dashboard-amd64

 

如果可以FQ,则直接执行下面代码安装

下载recommended.yaml文件(这种方式下载不了的话,可以直接将url复制到浏览器打开,然后将内容保存到recommended.yaml中,再上传到服务器上)

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

修改recommended.yaml配置

vi recommended.yaml

找到第一个kind: Service,内容如下:

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

将内容修改为:

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: 30001
  selector:
    k8s-app: kubernetes-dashboard

安装插件

kubectl create -f recommended.yaml

检查安装(插件加载与初始化需要等待一段时间,提交命令后需要等待一段时间,dashboard的状态才会变为Running)

kubectl get pods -n kubernetes-dashboard

dashboard状态

NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-76585494d8-xnpq5   1/1     Running   0          25m
kubernetes-dashboard-5996555fd8-ndsth        1/1     Running   0          25m

输入命令

kubectl get service -n kubernetes-dashboard

查看服务暴露的端口

NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.96.238.121   <none>        8000/TCP        27m
kubernetes-dashboard        NodePort    10.96.198.238   <none>        443:30001/TCP   27m

kubernetes-dashboard服务所暴露的30001端口就是我们可以直接访问的地址了,即我们可以直接用http://服务器ip:30001 访问Dashboard了

 

注意

如果安装后,dashboard状态直接爆错,没有处于Running状态,可以执行下面命令删除插件与镜像,使用docker pull安装镜像的可以更换其他版本镜像与yaml进行安装

# 删除dashboard插件,recommended.yaml为安装时的名称,执行删除后,docker里对应的镜像没不会同步删除
kubectl delete -f recommended.yaml
# 如果将要安装的镜像版本同已安装的不一致,需要将镜像删除干净后,再重新安装
# 查看当前服务器的docker镜像,获取IMAGE ID,需要每一台都执行删除
docker images
# REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
# kubernetesui/dashboard                               v2.0.0-beta8        eb51a3597525        2 weeks ago 

# 执行删除命令,删除指定IMAGE ID的镜像
docker rmi eb51a3597525
# 如果该镜像ID绑定了多个容器,则需要用下面命令删除
docker rmi kubernetesui/dashboard:v2.0.0-beta8

 

3. 检查安装

启动Web访问,accept-hosts需要绑定当前服务器ip,即绑定接收请求的地址(可以使用正则表达式),不绑定访问可能会被拒绝,直接返回“Forbidden”

nohup kubectl proxy --address='0.0.0.0' --port=8001 --accept-hosts='.*'

直接用curl在服务器测试访问

curl http://localhost:8001/api/

如果能返回下面json串,就表示Dashboard已安装成功

{
  "kind": "APIVersions",
  "versions": [
    "v1"
  ],
  "serverAddressByClientCIDRs": [
    {
      "clientCIDR": "0.0.0.0/0",
      "serverAddress": "192.168.10.161:6443"
    }
  ]
}

打开浏览器,进入Dashboard web管理平台 http://192.168.10.161:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

或者是下面地址

http://192.168.10.161:30001

创建dashboard web访问管理员账号

# 创建账号
kubectl create serviceaccount admin-user -n kube-system
# 绑定管理员权限
kubectl create clusterrolebinding admin-user --clusterrole=cluster-admin --serviceaccount=kube-system
# 查看账号名称
kubectl get secret -n kube-system | grep admin-user
# NAME                                             TYPE                                  DATA   AGE
# admin-user-token-fdvh6                           kubernetes.io/service-account-token   3      69s

# 查看账号Token
kubectl describe secret admin-user-token-fdvh6 -n kube-system |grep '^token'|awk '{print $2}'

Token值

eyJhbGciOiJSUzI1NiIsImtpZCI6IkxkZ2RrdW1qT2VRYWJUV2RYY3JicENxY0pIUDN2OXZLREJ1N1BweE9od2sifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi1zcms5dCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6Ijc3MWFkZGNjLTRjNzAtNGM1OC1hMTA1LWIwNDZkZWYzZWE4OCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphZG1pbiJ9.P8gptD6tc_HhanEhV8G-wlObi_yqNsIoj5Zdvev_qABv2HpOyWDhc3CiuDtP3RzdJ7UU0OjcBsRKQViQPW-r9NgTA5-DjrBSIKqWRDMV63HwKPOaYF1_LmGHMQYKy0OdugYZumjDo5whJFn-0XVTXKrea3QqFAL7_MVMoUbiDTZ1vQgL-AQziwk5WrCOhrXjSzcoRge3W5Fs-6z7-8ZHege3aTpKY2TxtWdu0bvqVnnb6Yd0VqAeQDaMy12D5n80BJno3l2WoWeEk-KSBTXSA_7Z2wwTcrDWL4E38sItRIkRRLDGtpP7AIZtQTWohzigeKVkMHO7iaQ6e3dmRkLLlg

在浏览器登录窗口选择Token登录,输入上面Token点击登录,进入管理界面

如果点击登录无响应或出错,可以按下面方法查看日志,检查错误信息

kubectl get pods --namespace=kube-system | grep dashboard

屏幕上会显示当前dashboard运行的服务,看看服务运行状态是否正常

kubernetes-dashboard-74c96fd8ff-pdft8   1/1     Running   0          3h3m

查看指定节点的详细消息,看看是否有错误事件记录

kubectl describe pod kubernetes-dashboard-74c96fd8ff-pdft8 -n kube-system

输入命令,实时查看服务日志信息,分析日志错误信息

kubectl logs -f kubernetes-dashboard-74c96fd8ff-pdft8 -n kube-system

 

4. 安装Heapster

默认安装的dashboard无法展示集群的度量指标信息,此时就需要安装heapster插件

Heapster 插件使用包含三部分内容:

Heapster:显示各 Nodes、Pods 的 CPU、内存、负载等利用率曲线图。

InfluxDB:存储 Pod 信息相关的数据库, Heapster 获取数据之后, 可以指定存储在 InfluxDB。

Grafana:这个主要是用于显示 InfluxDB 里面的数据情况, 可以让我们很直观看到数据变化。

安装InfluxDB

下载安装包

wget https://repos.influxdata.com/rhel/6Server/x86_64/stable/influxdb-1.7.9.x86_64.rpm

安装rmp

rpm -ivh influxdb-1.7.9.x86_64.rpm

启动Influxdb服务

systemctl start influxdb

systemctl enable influxdb

 

5. 常用命令

删除指定账号

kubectl delete serviceaccount -n kube-system admin

删除指定角色

kubectl delete clusterrole -n kube-system admin

 

posted @ 2020-06-09 10:02  AllEmpty  阅读(1402)  评论(0编辑  收藏  举报