Dashboard Github 地址:
Heapster Github 地址:
Kubernetes Dashboards
官方 Dashboard 只适用于开发人员或者运维人员,并且配合 heapster 服务获取容器内的资源信息。
启动服务:
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
启动完成后,对服务只有 proxy 方式映射进行访问:
$ kubectl proxy --address='0.0.0.0'--port=8086 --accept-hosts='^*$'
此时可通过如地址http://127.0.0.1:8086/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/方式进行访问。
第一次访问时会提示使用哪种鉴权方式:(官方文档)

选择 Token 方式,则创建 ClusterRoleBinding:
admin-user.yml展开源码
创建:
$ kubectl apply -f admin-user.yml
获取 Token:
$ SECRET=$(kubectl -n kube-system get sa admin-user -o yaml | awk'/admin-user-token/ {print $3}')
$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grepadmin-user | awk'{print $1}')
然后把 Token 值贴入 Dashboard 页面:

如果使用 KubeConfig 报错如下:

请创建 Token 值:
$ kubectl create serviceaccount dashboard-admin -n kube-system
$ kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
$ kubectl describe secret -n kube-system $(kubectl get secret -n kube-system | grepdashboard-admin | awk'{print $1}')
请把上述创建出的 Token 拷贝至 KubeConfig 配置文件末尾一行(并格式对其)。
新建 Kubeconfig 配置如下:
$ kubectl create serviceaccount dashboard-admin -n kube-system
$ DASHBOARD_ADMIN_SECRET=$(kubectl get secret -n kube-system `kubectl get secret -n kube-system |grepdashboard-admin | awk'{print $1}'` -o jsonpath={.data.token} |base64 -d)
$ kubectl config set-credentials dashboard-admin --token=$DASHBOARD_ADMIN_SECRET --kubeconfig=/root/dashboard-admin.conf
$ kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/dashboard-admin.conf
$ kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/dashboard-admin.conf
$ kubectl config view --kubeconfig=/root/dashboard-admin.conf
$ cd/etc/kubernetes/pki/&& kubectl config set-cluster kubernetes --certificate-authority=./ca.pem --server="https://10.140.0.12:6443"--embed-certs=true--kubeconfig=/root/dashboard-admin.conf
Service NodePort
配置如下:
dashboard-svc.yaml
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 5555
selector:
k8s-app: kubernetes-dashboard
Ingress
配置如下:
dashboard-ingress.yaml
apiVersion: apps/v1
kind: Ingress
metadata:
name: k8s
namespace: kube-system
spec:
rules:
- host: k8s.shileizcc.com
http:
paths:
- path: /
backend:
serviceName: kubernetes-dashboard
servicePort: 443