K8S Dashboard是官方的一个基于WEB的用户界面,专门用来管理K8S集群,并可展示集群的状态。K8S集群安装好后默认没有包含Dashboard,我们需要额外创建它。
首先我们执行命令:
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
我们需要对kubernetes-dashboard.yaml进行一些用户权限修改,否则默认情况登录进入会有很多权限问题。
我们把apiVersion: rbac.authorization.k8s.io/v1
下面的一行改为:
kind: ClusterRoleBinding
并修改roleRef中的kind为ClusterRole,name为cluster-admin。如下所示:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard-minimal
namespace: kube-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system
此外,为了能让外网能直接访问,需要设置nodePort转发:
# ------------------- Dashboard Service ------------------- #
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port: 80
targetPort: 9090
nodePort: 30001
selector:
k8s-app: kubernetes-dashboard
然后直接运行:
kubectl create -f kubernetes-dashboard.yaml
通过kubectl get pods --all-namespaces
命令可以看到kubernetes-dashboard正处于ContainerCreating阶段,需要等到一段时间,可能等待的时间有点长。
过段时间刷新后,发现kubernetes-dashboard处于Running状态了,表明已经正确安装。
现在你可以直接访问:http://ip:30001 ,其中ip是master节点的ip,30001是之前配置的nodePort值。
此外你也可以运行代理,运行:
kubectl proxy --address='0.0.0.0' --accept-hosts='^* --disable-filter=true
设置address和accept-hosts时为了让其他ip也能访问,否则就只能用127.0.0.1访问。
现在你可以访问Dashboard:http://localhost:8001/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/#!/login
可以选择Token登录,查看token的命令是kubeadm token list
。
登录进去后,就能了解集群的一些基本情况: