写在前面
上一集我们部署了一个kubernetes集群,并对kubernetes有了个简单的使用,相信大家也看过阿里云的控制台,控制台对kubernetes集群做了一个可视化,当然看起来其实就是根据kubernetes dashboard封装的。 在 Kubernetes 社区中,有一个很受欢迎的 Dashboard 项目,它可以给用户提供一个可视化的 Web 界面来查看当前集群的各种信息。用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。
部署dashboard
官方参考文档:
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/#deploying-the-dashboard-ui
github项目地址:
https://github.com/kubernetes/dashboard
这里部署dashboard v1.10.1版本。
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
镜像默认是从google拉取的,由于我是新加坡节点的集群,所以无所谓,各位老铁如果是用的国内节点的话,尽量用阿里云的镜像源吧
yaml文件里面修改一下就OK了
containers:
- name: kubernetes-dashboard
#image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
image: registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
ports:
直接部署
跑起来
Dashboard 会在 kube-system namespace 中创建自己的 Deployment 和 Service:
访问dashboard
官方参考文档:
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/#accessing-the-dashboard-ui
有以下几种方式访问dashboard:
Nodport方式访问dashboard,service类型改为NodePort
loadbalacer方式,service类型改为loadbalacer
Ingress方式访问dashboard
API server方式访问 dashboard
kubectl proxy方式访问dashboard
如果要像我们刚才的nginx一样用nodeport的方式直接用节点的gong公网ip访问
访问生命周期:
节点端口31620--pod端口8443--容器端口443
修改部署文件之后重新apply一下
kubectl apply -f kubernetes-dashboard.yaml
访问:
在ipvs里面的转发
Dashboard 支持 Kubeconfig 和 Token 两种认证方式,我们这里选择Token认证方式登录:
创建登录用户
官方参考文档:
https://github.com/kubernetes/dashboard/wiki/Creating-sample-user
创建dashboard-adminuser.yaml:
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system
获取token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
访问dashboard
还有两种访问的方式 一种是LB,另外一种是ingress 这里不做演示了,因为还需要aliyun cloud扩展插件