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
或者是下面地址
创建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