zoukankan      html  css  js  c++  java
  • Kubernetes学习与应用(07)——安装Dashboard监控插件

    1. Dashboard概述

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

    2. 安装Dashboard

    安装docker镜像

    不能翻墙的话,需要先下载镜像,然后再调用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

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

    下载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
  • 相关阅读:
    循环控制结构程序06 零基础入门学习C语言21
    数组01 零基础入门学习C语言23
    循环控制结构程序07 零基础入门学习C语言22
    数组02 零基础入门学习C语言24
    循环控制结构程序07 零基础入门学习C语言22
    基于VC++2012在Windows8上实现文件隐藏
    实现诺基亚 lumia Windows phone 的手机通话记录截取
    基于Windows8与Visual Studio2012实现杀毒通用模块
    用Visual studio2012在Windows8上开发内核驱动监视进程创建
    ISV客户博客系列:Linx发布它的Windows Azure销售点系统
  • 原文地址:https://www.cnblogs.com/EmptyFS/p/13070751.html
Copyright © 2011-2022 走看看