快速上手 Linkerd v2 Service Mesh(服務網格)

在本指南中,我們將引導您瞭解如何將 Linkerd 安裝到您的 Kubernetes 集羣中。然後我們將部署一個示例應用程序來展示 Linkerd 的功能。

安裝 Linkerd 很容易。首先,您將在本地計算機上安裝 CLI(命令行界面)。使用此 CLI,然後您將控制平面安裝到您的 Kubernetes 集羣上。最後,您將通過向它們添加 Linkerd 的數據平面來 “網格化 (mesh)” 您自己的一個或多個服務。

設置

在我們做任何事情之前,我們需要確保您可以訪問 Kubernetes 集羣並在本地機器上運行 kubectl 命令。(如果您還沒有 Kubernetes 集羣,一個簡單的選擇是在您的本地機器上運行一個。有很多方法可以做到這一點,包括 kind、k3d、Docker for Desktop 等更多。)

您可以通過運行以下命令來驗證設置:

kubectl version --short

您應該看到包含 Client Version 和 Server Version 組件的輸出。

現在我們有了集羣,我們將安裝 Linkerd CLI 並使用它來驗證您的集羣是否能夠託管 Linkerd 控制平面。

安裝 CLI

如果這是您第一次運行 Linkerd,則需要將 linkerd 命令行界面 (CLI) 下載到本地計算機上。 CLI 將允許您與 Linkerd 部署進行交互。

要手動安裝 CLI,請運行:

curl -sL https://run.linkerd.io/install | sh

請務必按照說明將其添加到您的路徑中。

或者,如果您使用 Homebrew,則可以使用 brew install linkerd 安裝 CLI。您還可以通過 Linkerd releases 頁面直接下載 CLI

安裝後,使用以下命令驗證 CLI 是否正常運行:

linkerd version

您應該會看到 CLI 版本以及 Server version: unavailable。這是因爲您尚未在集羣上安裝控制平面。別擔心 - 我們會盡快解決這個問題。

驗證你的 Kubernetes 集羣

Kubernetes 集羣可以通過多種不同的方式進行配置。在我們安裝 Linkerd 控制平面之前,我們需要檢查並驗證所有配置是否正確。要檢查您的集羣是否已準備好安裝 Linkerd,請運行:

linkerd check --pre

如果有任何檢查未通過,請確保按照提供的鏈接並在繼續之前解決這些問題。

安裝控制平面 (Control Plane) 在你的集羣

現在您已經在本地運行了 CLI,並且集羣已經準備就緒,是時候安裝控制平面了。

第一步是安裝控制平面核心。爲此,請運行:

linkerd install | kubectl apply -f -

在此命令中,linkerd install 命令生成一個 Kubernetes manifest,其中包含所有必要的控制平面資源。將此清單通過管道傳輸到 kubectl apply 然後指示 Kubernetes 將這些資源添加到您的集羣中。

現在讓我們等待控制平面完成安裝。根據集羣 Internet 連接的速度,這可能需要一兩分鐘。通過運行以下命令等待控制平面準備就緒(並驗證您的安裝):

linkerd check

接下來,我們將安裝一些擴展。擴展爲 Linkerd 添加了非關鍵但通常有用的功能。對於本指南,我們需要 viz 擴展,它會將 Prometheus、儀表板 (dashboard) 和指標組件 (metrics components) 安裝到集羣上:

linkerd viz install | kubectl apply -f - # on-cluster metrics stack

或者,此時您可以安裝其他擴展。例如:

## optional
linkerd jaeger install | kubectl apply -f - # Jaeger collector and UI
linkerd multicluster install | kubectl apply -f - # multi-cluster components

請注意,擴展也可以來自第三方來源。例如,Buoyant Cloud 是針對 Linkerd 的,可免費託管指標儀表板 (metrics dashboard)。可以與 viz 一起安裝,但它是可選的:

## optional
curl -sL buoyant.cloud/install | sh
linkerd buoyant install | kubectl apply -f - # hosted metrics dashboard

一旦您安裝了 viz 擴展程序和您想要的任何其他擴展程序,我們將再次驗證所有內容:

linkerd check

假設一切都是綠色的,我們已準備好進行下一步!

瀏覽 Linkerd

安裝並運行控制平面和擴展後,您現在可以通過運行以下命令查看 Linkerd 儀表板:

linkerd viz dashboard &

此命令設置從本地系統到 linkerd-web pod 的端口。(也可以暴露儀表板供所有人訪問。)

由於控制平面組件都在其 pod 中安裝了代理,因此每個組件也是數據平面本身的一部分。這提供了深入瞭解控制平面本身在幕後發生了什麼的能力。事實上,你可以運行:

linkerd -n linkerd-viz viz top deploy/web

這是您通過查看儀表板本身產生的流量!

安裝 demo app

要了解 Linkerd 如何爲您的一項服務工作,您可以安裝一個 demo 應用程序。 emojivoto 應用程序是一個獨立的 Kubernetes 應用程序,它混合使用 gRPC 和 HTTP 調用,允許用戶對他們最喜歡的表情符號進行投票。

通過運行以下命令將 emojivoto 安裝到 emojivoto 命名空間中:

curl -sL https://run.linkerd.io/emojivoto.yml \
  | kubectl apply -f -

在我們對它進行網格 (mesh) 劃分之前,讓我們先來看看這個應用程序。如果此時您正在使用 Docker Desktop,則可以直接訪問 http://localhost。如果你沒有使用 Docker Desktop,我們需要轉發 web-svc 服務。要將 web-svc 本地轉發到端口 8080,您可以運行:

kubectl -n emojivoto port-forward svc/web-svc 8080:80

現在訪問 http://localhost:8080。

點擊周圍,您可能會注意到 emojivoto 的某些部分已損壞!例如,如果你點擊一個甜甜圈表情符號 (doughnut emoji),你會得到一個 404 頁面。別擔心,這些錯誤是故意的。(我們可以使用 Linkerd 來識別問題。如果您對如何準確找出問題感興趣,請查看調試指南。)

接下來,讓我們通過運行以下命令將 linker 添加到 emojivoto

kubectl get -n emojivoto deploy -o yaml \
  | linkerd inject - \
  | kubectl apply -f -

此命令檢索在 emojivoto 命名空間中運行的所有部署 (deployments),通過 linkerd inject 運行清單,然後將其重新應用到集羣。linkerd inject 命令向 pod spec 添加註解 (annotations),指示 Linkerd 將代理 (proxy) 作爲容器添加(“注入”)到 pod spec 中。(有關更多信息,請參閱自動代理注入。)

與 install 一樣,inject 是純文本操作,這意味着您可以在使用之前檢查輸入和輸出。一旦通過管道傳輸到 kubectl applyKubernetes 將執行滾動部署 (rolling deploy) 並使用數據平面的代理更新每個 pod,所有這些都沒有任何停機時間。

恭喜!您現在已將 Linkerd 添加到現有服務中!就像控制平面一樣,可以驗證一切是否按照數據平面應有的方式工作。要進行此檢查,請運行:

linkerd -n emojivoto check --proxy

監測它的運行

您現在可以查看 Linked 面板並查看 demo app 中的所有服務。由於 demo app 附帶了 load generator,我們可以通過運行以下命令查看實時流量指標 (live traffic metrics):

linkerd -n emojivoto viz stat deploy

這將顯示每個部署的 “黃金 (golden)” 指標:

爲了進一步深入,可以使用 top 來實時查看正在調用哪些路徑:

linkerd -n emojivoto viz top deploy

爲了更深入,我們可以使用 tap 顯示跨單個 poddeployment 甚至 emojivoto 命名空間中的所有內容的請求流:

linkerd -n emojivoto viz tap deploy/web

如果您想改用瀏覽器,所有這些功能也可在儀表板中使用:

那過去發生的事情呢?Linkerd 包含 Grafana 來可視化 Prometheus 收集的指標,並附帶一些預配置的儀表板。您可以通過單擊概覽頁面中的 Grafana 圖標來訪問這些。

我是爲少
微信:uuhells123
公衆號:黑客下午茶
加我微信(互相學習交流),關注公衆號(獲取更多學習資料~)
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/R0mYJXo9Kl-mYbHHb70SCg