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
。
登錄進去后,就能了解集群的一些基本情況: