Kubernetes Dashboard 是一個基于 Web 的用戶界面,用于管理和監控 Kubernetes 集群。它提供了一個直觀的界面,允許用戶查看集群的狀態、部署應用程序、管理資源、查看日志等。本文將詳細介紹如何部署 Kubernetes Dashboard,并配置其訪問權限。
在開始部署 Kubernetes Dashboard 之前,確保你已經具備以下條件:
kubectl
命令行工具已安裝并配置好,能夠與集群通信。kubeconfig
文件,并且你有足夠的權限來部署和管理資源。首先,使用以下命令檢查 Kubernetes 集群的狀態:
kubectl get nodes
確保所有節點都處于 Ready
狀態。如果集群中有任何節點未準備好,請先解決這些問題。
kubectl
命令行工具如果你還沒有安裝 kubectl
,可以通過以下步驟安裝:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
brew install kubectl
下載 kubectl.exe
并將其添加到系統的 PATH
環境變量中。
kubeconfig
文件確保 kubeconfig
文件已正確配置,并且你可以通過 kubectl
與集群通信:
kubectl config view
如果 kubeconfig
文件未正確配置,請參考 Kubernetes 官方文檔進行配置。
Kubernetes Dashboard 的部署過程相對簡單,主要包括以下幾個步驟:
Kubernetes Dashboard 的官方 YAML 文件可以通過以下命令獲取并部署:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
這個命令會部署 Dashboard 的所有必要資源,包括 Deployment、Service、ServiceAccount 等。
默認情況下,Kubernetes Dashboard 使用 kubernetes-dashboard
服務賬戶運行。為了能夠訪問 Dashboard,我們需要創建一個具有足夠權限的服務賬戶,并將其綁定到適當的角色。
創建一個名為 dashboard-adminuser.yaml
的文件,內容如下:
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
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: kubernetes-dashboard
然后,使用以下命令應用這個文件:
kubectl apply -f dashboard-adminuser.yaml
這將創建一個名為 admin-user
的服務賬戶,并將其綁定到 cluster-admin
角色,從而賦予它集群管理員權限。
為了訪問 Dashboard,我們需要獲取 admin-user
服務賬戶的訪問令牌。使用以下命令獲取令牌:
kubectl -n kubernetes-dashboard create token admin-user
這個命令會輸出一個長字符串,這就是訪問 Dashboard 所需的令牌。
Kubernetes Dashboard 默認情況下只能通過集群內部訪問。為了從外部訪問 Dashboard,我們需要配置一個代理或暴露服務。
kubectl proxy
訪問 Dashboard最簡單的方法是使用 kubectl proxy
命令來創建一個本地代理,從而訪問 Dashboard。
運行以下命令啟動代理:
kubectl proxy
然后,在瀏覽器中訪問以下 URL:
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
如果你希望通過外部網絡訪問 Dashboard,可以通過以下方式暴露服務:
編輯 kubernetes-dashboard
服務的 YAML 文件,將其類型改為 NodePort
:
kubectl edit service kubernetes-dashboard -n kubernetes-dashboard
找到 type: ClusterIP
,將其改為 type: NodePort
,然后保存退出。
然后,使用以下命令獲取 NodePort:
kubectl get service kubernetes-dashboard -n kubernetes-dashboard
輸出類似于:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.96.123.123 <none> 443:30000/TCP 10m
在這個例子中,NodePort 是 30000
。你可以通過 https://<node-ip>:30000
訪問 Dashboard。
如果你在云環境中運行 Kubernetes 集群,可以將服務類型改為 LoadBalancer
:
kubectl edit service kubernetes-dashboard -n kubernetes-dashboard
找到 type: ClusterIP
,將其改為 type: LoadBalancer
,然后保存退出。
然后,使用以下命令獲取 LoadBalancer 的外部 IP:
kubectl get service kubernetes-dashboard -n kubernetes-dashboard
輸出類似于:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard LoadBalancer 10.96.123.123 203.0.113.123 443:30000/TCP 10m
在這個例子中,外部 IP 是 203.0.113.123
。你可以通過 https://203.0.113.123
訪問 Dashboard。
無論你選擇哪種方式訪問 Dashboard,最終都需要通過瀏覽器打開 Dashboard 的 URL。在登錄頁面中,選擇“令牌”選項,并輸入之前獲取的訪問令牌。
登錄后,你將看到 Kubernetes Dashboard 的主界面,可以查看集群的狀態、部署應用程序、管理資源、查看日志等。
如果你無法訪問 Dashboard,請檢查以下幾點:
kubectl proxy
正在運行,或者服務已正確暴露。kubectl get service kubernetes-dashboard -n kubernetes-dashboard
的輸出,確保服務已正確配置。如果訪問令牌無效,請確保你使用的是正確的服務賬戶令牌??梢酝ㄟ^以下命令重新生成令牌:
kubectl -n kubernetes-dashboard create token admin-user
如果你在 Dashboard 中遇到權限不足的問題,請檢查服務賬戶的權限配置。確保 admin-user
服務賬戶已綁定到 cluster-admin
角色。
Kubernetes Dashboard 是一個強大的工具,可以幫助你更輕松地管理和監控 Kubernetes 集群。通過本文的步驟,你應該能夠成功部署并訪問 Kubernetes Dashboard。如果你遇到任何問題,請參考常見問題與解決方案部分,或者查閱 Kubernetes 官方文檔。
希望本文對你有所幫助,祝你使用 Kubernetes Dashboard 愉快!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。