在本指南中,我們將引導您瞭解如何將 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 apply
,Kubernetes
將執行滾動部署(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
)”指標:
- 成功率(
Success rates
) - 請求率(
Request rates
) - 延遲分佈百分位數(
Latency distribution percentiles
)
為了進一步深入,可以使用 top
來實時檢視正在呼叫哪些路徑:
linkerd -n emojivoto viz top deploy
為了更深入,我們可以使用 tap
顯示跨單個 pod
、deployment
甚至 emojivoto
名稱空間中的所有內容的請求流:
linkerd -n emojivoto viz tap deploy/web
如果您想改用瀏覽器,所有這些功能也可在儀表板中使用:
那過去發生的事情呢?Linkerd
包含 Grafana
來視覺化 Prometheus
收集的指標,並附帶一些預配置的儀表板。您可以通過單擊概覽頁面中的 Grafana
圖示來訪問這些。
我是為少
微信:uuhells123
公眾號:黑客下午茶
加我微信(互相學習交流),關注公眾號(獲取更多學習資料~)