安裝環境及版本
dashboard元件:kubernetes-dashboard-v1.10.1
需準備的鏡像:
k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
k8s.gcr.io/heapster-amd64:v1.5.4
k8s.gcr.io/heapster-influxdb-amd64:v1.5.2
k8s.gcr.io/heapster-grafana-amd64:v5.0.4
為友善無科學上網方式的同學,也可執行以下腳本直接從阿裡鏡像倉庫拉取(感謝阿裡為國内開發者作出的貢獻)
#!/bin/bash
DASHDOARD_VERSION=v1.10.1
HEAPSTER_VERSION=v1.5.4
GRAFANA_VERSION=v5.0.4
INFLUXDB_VERSION=v1.5.2
username=registry.cn-hangzhou.aliyuncs.com/google_containers
images=(
kubernetes-dashboard-amd64:${DASHDOARD_VERSION}
heapster-grafana-amd64:${GRAFANA_VERSION}
heapster-amd64:${HEAPSTER_VERSION}
heapster-influxdb-amd64:${INFLUXDB_VERSION}
)
for image in ${images[@]}
do
docker pull ${username}/${image}
docker tag ${username}/${image} k8s.gcr.io/${image}
docker rmi ${username}/${image}
done
主節點與個node節點均需要以上鏡像:
k8s.gcr.io/kubernetes-dashboard-amd64 v1.10.1 f9aed6605b81 3 months ago 122MB
k8s.gcr.io/heapster-amd64 v1.5.4 72d68eecf40c 8 months ago 75.3MB
k8s.gcr.io/heapster-influxdb-amd64 v1.5.2 eb180058aee0 8 months ago 16.5MB
k8s.gcr.io/heapster-grafana-amd64 v5.0.4 25e1da333f76 8 months ago 171MB
在主節點上準備部署所需的yaml檔案:
dashboard項目官方位址:https://github.com/kubernetes/dashboard/releases
這是作者自己修改過的yaml檔案: https://github.com/xl4025/k8s-dashboard-master.git
包含有:
kubernetes-dashboard.yaml
kubernetes-dashboard-admin.rbac.yaml
heapster.yaml
heapster-rbac.yaml
官方的檔案中隻包含了kubernetes-dashboard.yaml,且kubernetes在1.6版本以後啟用了RBAC通路控制政策,直接使用官方版會出現通路權限不足的報錯
此問題可使用kubectl或Kubernetes API進行配置。使用RBAC可以直接授權給使用者,讓使用者擁有授權管理的權限,這樣就不再需要直接觸碰Master Node。
相關修改為:
kubernetes-dashboard.yaml 中修改 serviceAccountName,外部通路dashboard的方式(本文為token通路)
kubernetes-dashboard-admin(預設為kubernetes-dashboard)
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard-external
namespace: kube-system
spec:
ports:
- port: 9090
targetPort: 9090
nodePort: 31666
type: NodePort
selector:
k8s-app: kubernetes-dashboard
在kubernetes-dashboard-admin.rbac.yaml中則是執行了建立kubernetes-dashboard-admin使用者并賦予所有權限的指令
PS:yaml中涉及的image版本請根據自己實際情況調整
安裝dashboard及相關元件
ll
#以下内容其中grafana和influxdb是作者自己增加的,讀者可不用部署
-rw-r--r-- 1 root root 2314 4月 3 10:02 grafana.yaml
-rw-r--r-- 1 root root 264 11月 23 15:19 heapster-rbac.yaml
-rw-r--r-- 1 root root 1100 4月 3 09:52 heapster.yaml
-rw-r--r-- 1 root root 998 4月 3 10:02 influxdb.yaml
-rw-r--r-- 1 root root 504 4月 3 10:13 kubernetes-dashboard-admin.rbac.yaml
-rw-r--r-- 1 root root 5132 4月 3 12:40 kubernetes-dashboard.yaml
#執行安裝
kubectl apply -n kube-system -f .
#執行完成後檢視pod是否正常運作
kubectl get pod -n kube-system |grep kubernetes-dashboard
kubernetes-dashboard-6cfdc589c7-krfmk 1/1 Running 0 164m
#檢視服務暴露的端口号
kubectl get service -n kube-system |grep kubernetes-dashboard
kubernetes-dashboard-external NodePort 10.99.7.179 <none> 9090:31666/TCP 22h
Running狀态說明運作正常,直接可通過masterip:端口号通路ui界面。
讀者可根據需要修改nodePort參數來修改通路端口。
在叢集中可以使用10.99.7.179:9090通路
不在叢集中機器通路位址masterip:31666