開源的 Kube.NETes Dashboard 有助于基于 UI 的資源部署和管理,但其缺陷使用戶不得不采用替代方案。
什么是 Kubernetes 儀表板
Kubernetes Dashboard是一個能夠管理Kubernetes集群的Web UI。它允許開發(fā)人員和管理員通過圖形化用戶界面輕松地查看、管理和監(jiān)控集群的狀態(tài),包括應(yīng)用程序、節(jié)點、存儲、網(wǎng)絡(luò)等各方面的信息。
Kubernetes Dashboard 提供了以下功能:
1.資源查看:可以查看節(jié)點、Pod、服務(wù)、部署等 Kubernetes 集群中的所有資源。
- 應(yīng)用程序管理:可以查看、運行和調(diào)試應(yīng)用程序。
3.日志查看:可以查看容器的日志和事件。
4.健康狀況:可以查看 Pod、節(jié)點和服務(wù)的健康狀況。
5.可視化度量:可以使用可視化工具來查看集群中的度量數(shù)據(jù),例如 CPU、內(nèi)存和網(wǎng)絡(luò)使用情況等。
Kubernetes Dashboard 提供了一種簡單而直觀的方式來管理 Kubernetes 集群。對于那些對命令行不太熟悉的用戶或者需要在日常工作中頻繁管理 Kubernetes 集群的開發(fā)人員和管理員來說,Kubernetes Dashboard 是一個非常有用和方便的工具。
需要注意的是,因為 Kubernetes Dashboard 通過Web UI來管理集群,因此對安全的要求也比較高,需要進行合理的配置和保護。
Kubernetes提供了一個名為“kubectl”的命令行(CLI)組件來承載核心操作。但是在企業(yè)范圍內(nèi)使用 CLI 有兩個重大障礙
- 開發(fā)人員采用 Kubernetes 進行部署的學(xué)習(xí)曲線很高。
- SRE 和 Ops 團隊大規(guī)模監(jiān)控多個集群并對其進行故障排除是一項耗時且令人沮喪的工作
Dashboard by Kubernetes(也稱為Kubernetes Dashboard)是一個基于 Web 的用戶界面,用于將應(yīng)用程序部署到 Kubernetes 集群中,監(jiān)控所有資源的健康狀況并在出現(xiàn)任何問題時進行故障排除。該應(yīng)用程序有助于 DevOps、Ops 和SRE團隊管理 Kubernetes 資源,例如 Deployments、Statefulsets、Jobs 等。可以使用清單文件快速部署應(yīng)用程序并從 UI 本身更新幫助。
Kubernetes Dashboard 的特點
Kubernetes Dashboard 的主要特點包括以下幾個方面:
- 簡化管理:Kubernetes Dashboard 提供了可視化的方式管理 Kubernetes 集群,可以通過用戶界面輕松查看、管理和監(jiān)控 cluster。
- 全面資源查看:Kubernetes Dashboard支持查看 Kubernetes 集群的各種資源,包括節(jié)點狀態(tài)、Pod狀態(tài)、服務(wù)狀態(tài)、容器詳情、調(diào)度、時間軸等。
- 好用的日志查看:Kubernetes Dashboard 提供了方便的日志查看功能,可以直接在界面中查看容器的輸出和 Kubernetes 的事件。
- 度量和監(jiān)控:Kubernetes Dashboard提供了可視化的工具來查看集群的度量和監(jiān)控數(shù)據(jù),例如 CPU、內(nèi)存和網(wǎng)絡(luò)使用狀況等。
- 安全:Kubernetes Dashboard 支持 Kubernetes 的 RBAC 訪問控制,可以配置用戶和角色對集群的權(quán)限。
總之,Kubernetes Dashboard 可以大大簡化 Kubernetes 集群的管理,使得開發(fā)人員和管理員可以更加方便地查看和管理 Kubernetes 集群,提高工作效率。同時,Kubernetes Dashboard 還具有良好的安全性,可以保證 Kubernetes 集群的安全訪問。
Kubernetes Dashboard 由于兩個主要特性而對 DevOps 團隊很有吸引力:
- 集群范圍內(nèi)的可見性和故障排除
- 基于 UI 的部署
集群范圍內(nèi)的可見性和故障排除
Kubernetes 儀表板將提供各種正在運行的工作負(fù)載及其總數(shù)的視圖。DevOps 工程師將獲得工作負(fù)載、服務(wù)、配置和存儲以及集群視圖的可見性。
在 Kubernetes 集群中,為了以更高效可靠的方式管理服務(wù),開發(fā)人員和管理員需要保證集群范圍內(nèi)的可見性和故障排除。以下是幾種常見的保證集群范圍內(nèi)可見性和故障排除的方法:
- 度量和監(jiān)控:在 Kubernetes 集群中使用度量和監(jiān)控工具可以幫助開發(fā)人員和管理員更好地掌握系統(tǒng)的狀態(tài),及時監(jiān)測服務(wù)的健康狀況,通過預(yù)測和預(yù)防故障來提高服務(wù)的可靠性和可用性。
- 日志聚合和審計:日志聚合和審計工具可以將多個容器和不同節(jié)點的日志聚合在一起,方便開發(fā)人員和管理員統(tǒng)一查看和分析,以幫助排查問題。
- 鏈路追蹤:應(yīng)用程序在橫跨多個服務(wù)和多個容器時的追蹤和故障排查是非常困難的,Kubernetes 集群中的鏈路追蹤技術(shù)可以幫助追蹤應(yīng)用程序中 "分布式追蹤" 的操作,分析服務(wù)之間的依賴關(guān)系,排除故障。
- 日志記錄和事件通知:通過設(shè)置日志記錄和事件通知,可以及時發(fā)現(xiàn)集群中的故障和異常,管理員可以根據(jù)通知及時進行處理,減少對用戶的影響。
- 灰度和藍綠部署:灰度和藍綠部署是一種減少部署故障影響的技術(shù),在部署應(yīng)用程序時,先將一小部分服務(wù)部署在新版本上,一段時間后將剩余服務(wù)部署在新版本上,并逐步將流量向新版本轉(zhuǎn)移,從而減少新版本服務(wù)在線上的不穩(wěn)定性和故障。
需要注意的是,不同的企業(yè)和應(yīng)用程序會有不同的需求和限制,所以開發(fā)人員和管理員需要根據(jù)實際的情況來選擇合適的可見性和故障排除方案。
工作負(fù)載視圖
工作負(fù)載視圖(Workload View)是 Kubernetes Dashboard 的一個特性,用于展示 Kubernetes 集群中正在運行的應(yīng)用程序的各種資源的情況,例如 Deployment、StatefulSets 和 DaemonSets 等。
工作負(fù)載視圖提供以下幾個方面的信息:
- 應(yīng)用程序和工作負(fù)載:工作負(fù)載視圖首先顯示正在運行的應(yīng)用程序和工作負(fù)載的列表,通過點擊每個工作負(fù)載,可以查看它的詳細(xì)信息。
- 應(yīng)用程序的部署狀態(tài):工作負(fù)載視圖顯示應(yīng)用程序的部署狀態(tài),用于決定應(yīng)用程序的可用性。在工作負(fù)載視圖中,應(yīng)用程序需要的實例數(shù)和實際使用的實例數(shù)也會顯示出來,并顯示應(yīng)用程序的運行時間和應(yīng)用程序的功耗。
- 關(guān)聯(lián)的服務(wù):工作負(fù)載視圖還顯示應(yīng)用程序運行的所有關(guān)聯(lián)服務(wù)的列表,以及每個服務(wù)的詳細(xì)信息,例如 IP 地址、端口號和訪問協(xié)議等。
- 關(guān)聯(lián)的存儲卷:工作負(fù)載視圖列出了應(yīng)用程序使用的所有存儲卷,以及每個存儲卷的詳細(xì)信息和容量。
- 關(guān)聯(lián)的 Pod:工作負(fù)載視圖還列出了所有運行的 Pod 和容器,以及 Pod 和容器運行的計算資源使用情況。
通過工作負(fù)載視圖,開發(fā)人員和管理員可以更方便地查看 Kubernetes 集群中正在運行的應(yīng)用程序的各種資源情況,包括運行狀態(tài)、服務(wù)、存儲卷以及關(guān)聯(lián)的 Pod 等。這有助于開發(fā)人員和管理員更快地定位和解決問題,并提高系統(tǒng)的可靠性和可用性。在工作負(fù)載視圖下,用戶將獲得集群所有命名空間中運行的工作負(fù)載資源的詳細(xì)信息,例如 Deployments、Pod、ReplicaSets、DaemonSets、Job 和 StatefulSet。還可以根據(jù)集群中的特定名稱空間執(zhí)行粒度搜索。
豆莢視圖
豆莢視圖(Pod View)是 Kubernetes Dashboard 的一個特性,用于展示 Kubernetes 集群中正在運行的 Pod 的詳細(xì)信息,包括 Pod 的狀態(tài)、控制器信息和關(guān)聯(lián)的容器等。
豆莢視圖提供以下幾個方面的信息:
- Pod 的基本信息:豆莢視圖顯示 Pod 的名稱、命名空間、IP 地址、狀態(tài)等基本信息。
- 容器信息:對于每個 Pod,豆莢視圖列出了所有關(guān)聯(lián)的容器,包括容器的名稱、狀態(tài)、容器 ID、CPU 和內(nèi)存使用情況等詳細(xì)信息。
- 事件記錄:豆莢視圖顯示與 Pod 相關(guān)的事件記錄,包括容器故障、Kubernetes 集群故障等。
- 環(huán)境信息:豆莢視圖列出了 Pod 運行時的環(huán)境信息,包括容器的環(huán)境
工作負(fù)載最重要的方面之一可能是在特定節(jié)點及其各自的命名空間中運行的 pod 數(shù)量。
用戶將獲得有關(guān) pod 的深入信息,例如:
- 關(guān)于標(biāo)簽和注釋的元數(shù)據(jù)
- 資源消耗 - CPU 和內(nèi)存利用率
- 創(chuàng)建日期和重啟次數(shù)
- 事件日志和持久卷聲明
同樣,Kubernetes Dashboard 提供了命名空間的聚合視圖以及命名空間中服務(wù)和入口對象、配置映射、網(wǎng)絡(luò)策略、機密和持久卷聲明的詳細(xì)視圖。
服務(wù)和入口視圖
在入口視圖中,Kubernetes Dashboard是用戶訪問Kubernetes集群的通道。用戶可以通過一個Web瀏覽器訪問Kubernetes Dashboard來查看和管理Kubernetes資源和工作負(fù)載。用戶可以使用Kubernetes Dashboard來查看和編輯容器、部署、服務(wù)和命名空間等資源,還可以查看應(yīng)用程序運行狀態(tài)的監(jiān)視圖表。
Kubernetes Dashboard 提供了關(guān)于正在運行的服務(wù)和入口對象的可見性,包括每個服務(wù)或入口所屬的命名空間、它們的標(biāo)簽和集群 IP。用戶可以獲得關(guān)于每個服務(wù)的更深入的信息,例如標(biāo)簽、pod、端點等。
配置和存儲視圖
配置視圖和存儲視圖是ITIL框架中的兩個視圖,用于描述IT服務(wù)的配置和存儲管理。
配置視圖(Configuration View)是ITIL框架中描述服務(wù)和基礎(chǔ)設(shè)施配置的視圖,它包括從IT資源到服務(wù)的各個層級。配置視圖幫助用戶更好地了解服務(wù)組件的構(gòu)成,以及它們之間的關(guān)聯(lián)和依賴關(guān)系。配置視圖還包括各種配置項和它們之間的關(guān)系,例如服務(wù)器硬件配置信息、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、軟件和應(yīng)用程序的版本和設(shè)置參數(shù)等。
存儲視圖(Storage View)是ITIL框架中描述存儲管理的視圖,它包括存儲資源的形成和存儲的分配方式。存儲視圖幫助用戶更好地了解存儲的結(jié)構(gòu)和規(guī)格,并能夠監(jiān)視、存儲資源的使用情況,了解存儲資源的性能和可用性。
配置視圖和存儲視圖通常是人工制定和維護的,并且在IT服務(wù)管理中發(fā)揮了重要作用。擁有這兩個視圖,IT工作者可以更好地了解IT資源的組成和配置,并能夠快速獲取和互相鏈接這些信息,從而提高服務(wù)的質(zhì)量和效率。
與任何其他對象視圖類似,Kubernetes 儀表板顯示集群中持久卷聲明 (PCV)的詳細(xì)信息及其狀態(tài)、存儲卷、存儲類、注釋、標(biāo)簽、命名空間等。儀表板還顯示了集群的配置部署到集群中的應(yīng)用程序,可以直接從 UI 進行編輯。
基于 UI 的部署
基于UI的部署是指使用圖形用戶界面(UI)界面來快速創(chuàng)建、配置和部署應(yīng)用程序和服務(wù),而無需編寫腳本或命令行代碼。這種方法適用于那些不想或不熟悉使用命令行進行部署和配置的開發(fā)人員或管理員。
UI通常提供了用戶友好的界面,使得用戶可以通過簡單的步驟來完成應(yīng)用程序和系統(tǒng)部署。通過UI,用戶可以選擇和配置所需的部署和安裝選項,例如選擇容器鏡像、網(wǎng)絡(luò)配置和存儲選項等。UI還可以提供部署狀態(tài)和錯誤信息的實時反饋,讓用戶更好地跟蹤和解決問題。
基于UI的部署可以是針對特定的平臺或云服務(wù)提供商的,也可以是通用化的如Docker。對于企業(yè)IT環(huán)境,這種方法可以提高部署速度、減少用戶出錯的評率,降低維護的難度。Kubernetes 儀表板允許您從 UI 部署任何(工作負(fù)載)資源。您可以在瀏覽器中創(chuàng)建清單文件,也可以從 Git 等來源上傳您的清單文件。而 Kubernetes Dashboard 將直接與 Kubernetes 控制器通信,以獲取為您創(chuàng)建的資源對象。在下面的示例中,我們創(chuàng)建了一個清單文件來創(chuàng)建一個 pod,使用 Nginx 1.19.0 映像來創(chuàng)建一個 pod。
Kubernetes 儀表盤架構(gòu)
Kubernetes Dashboard 是在 Kubernetes 架構(gòu)之上開發(fā)的外部服務(wù)。在引擎蓋下,儀表板使用 API 讀取所有集群范圍的信息,以實現(xiàn)對單個窗格的可見性。它還使用 API 將資源和應(yīng)用程序部署到集群中。CLI 和 Kubernetes 儀表板都依賴于 kube-API-server 來處理請求。要開始使用 CLI,Ops 團隊必須在同一集群中部署 Kubernetes Dashboard(類似于 Kubectl 部署)。
Kubernetes 儀表板入門
要開始使用 Kubernetes Dashboard,您需要在集群中運行以下命令:
第一步:部署 Kubernetes 儀表板
運行以下命令部署 Kubernetes Dashboard 應(yīng)用程序
kubectl Apply -fhttps://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml
要從本地機器訪問 Kubernetes Dashboard,可以通過運行以下命令創(chuàng)建一個安全通道來訪問 K8s 集群:
kubectl proxy
您可以使用以下 URL 訪問您的儀表板:
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
第 2 步:創(chuàng)建服務(wù)帳戶
Kubernetes Dashboard 以最小的 RBAC 權(quán)限安裝,因此您可以使用不記名令牌訪問 Dashboard。因此,您可以創(chuàng)建一個服務(wù)帳戶并將其綁定到具有管理員權(quán)限的集群。您可以使用以下服務(wù)帳戶 YAML 文件:
apiVersion: v1kind: ServiceAccountmetadata: name: admin-user namespace: kubernetes-dashboard
使用命令制作服務(wù)資源:
kubectl - apply -f <<serviceaccount.yaml>>
您可以使用以下 ClusterRoleBinding YAML 創(chuàng)建服務(wù)帳戶cluster-admin:
apiVersion: v1kind: ClusterRoleBindingmetadata: name: admin-userroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-adminsubjects: kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard
同樣,應(yīng)用 YAML 文件在集群中創(chuàng)建 ClusterRoleBinding 資源。
第 3 步:生成不記名令牌
使用命令生成不記名令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsnotallow="{.secrets[0].name}") -o go-template="{{.data.token | Base64decode}}"
第 4 步:使用令牌并開始使用儀表板
您可以粘貼不記名令牌以開始使用 Kubernetes 儀表板。
Kubernetes 儀表板的局限性
使用基于 UI 的 Kubernetes Dashboard 來代替 CLI 無疑是好的。但是,有一些限制使其用例僅限于小型初創(chuàng)公司:
- 缺少多集群視圖: Kubernetes Dashboard 提供與單個集群中的命名空間相關(guān)的視圖。它不提供多個集群的視圖。
- 最小 RBAC: Kubernetes 不為各種用戶提供細(xì)粒度的訪問控制。必須依賴于令牌或kubeconfig文件。
- 缺少單點登錄(SSO): Kubernetes Dashboard 不提供單點登錄服務(wù)。SSO 對于大中型企業(yè)保護 Kubernetes 中的資源和應(yīng)用程序至關(guān)重要。
- 無節(jié)點管理: Kubernetes Dashboard DevOps 團隊查看節(jié)點信息,如狀態(tài)、標(biāo)簽、限制、內(nèi)存/CPU 請求、機器 ID、地址、分配的資源、pod 等。但不允許任何編輯節(jié)點的規(guī)定。這很重要,因為如果一個節(jié)點不健康,它將不會運行任何 pod,也不會參與集群活動。
- HELM 圖表的零可見性和可管理性: 許多組織使用它們來大規(guī)模部署他們的 Kubernetes 應(yīng)用程序。不幸的是,Kubernetes Dashboard 不提供HELM Dashboards的功能。
- 缺乏應(yīng)用視圖: Kubernetes Dashboard 提供了資源或?qū)ο笠晥D,但需要更多關(guān)于應(yīng)用程序的信息,這使得開發(fā)人員修改任何部署都很麻煩。在沒有應(yīng)用程序視圖的情況下,Kubernetes Dashboard 將其使用僅限于 Ops 團隊。
- 審計: Kubernetes Dashboard 不提供部署的審計報告,例如應(yīng)用程序的部署人員、時間和方式。
請注意,雖然 Kubernetes Dashboard 的開發(fā)也是為了讓 UI 的部署變得容易,但今天,還沒有從 UI 應(yīng)用高級部署策略(例如金絲雀)的機制。
Kubernetes 儀表板的開源替代品
Kubernetes Dashboard 有四種開源替代方案,它們可以獨立構(gòu)建,也可以在 Dashboard 項目之上構(gòu)建,以增強從 UI 進行部署、監(jiān)控和故障排除的能力。
1. Devtron Kubernetes 儀表板:
Devtron 提供了一個開源的 Kubernetes-native DevOps 平臺,可以自動化整個軟件交付過程,從 CI、CD、GitOps、安全和治理、漸進式部署、可觀察性、監(jiān)控和故障排除。Devtron Kubernetes 儀表板 在單個窗格中提供強大的功能,使 DevOps、SRE 和開發(fā)人員的生活更簡單:
- 多集群資源監(jiān)控和節(jié)點管理
- HELM 圖表儀表板和從儀表板的單個窗格進行管理
- 事件和實時日志,以及用于調(diào)試的 Pod 執(zhí)行
- 基于 UI 的部署(或?qū)ΜF(xiàn)有清單文件的修改)
- 將新部署即時回滾到生產(chǎn)環(huán)境
- DORA 指標(biāo)
- 用于用戶、操作和資源的細(xì)粒度 RBAC。
2. 開放鏡頭
具有 MIT 許可證的開源軟件用于多集群管理和監(jiān)控工作負(fù)載。它還提供基本的 HELM 資源管理和資源分組,但可能需要一個學(xué)習(xí)曲線。其次,它有一些盲點,因為它沒有為多集群部署、圖表配置差異等提供 HELM 圖表組。
3.八分圓
由 VMware 啟動的開源儀表板,但現(xiàn)在已存檔 - 沒有社區(qū)支持,您只能靠自己。最初,該項目的目標(biāo)是讓開發(fā)人員使用 UI 更快地將代碼發(fā)送到集群中。Octane 在集群可視化和管理方面的功能有限。
表格比較
Vanilla Kubernetes 儀表板對比 Devtron Kubernetes 儀表板對比 OpenLens。
集群和資源管理
安全