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