教程|如何在 K8S 集羣上快速部署 Linkerd 2.0
目前,Linkerd 2.0 已宣佈普遍可用(GA),這表明它已準備好用於生產。在這個教程中,我們將指導你如何在幾秒鐘內在 Kubernetes 集羣上啟動和運行 Linkerd 2.0。
Linkerd 2.0 教程
在開始教程之前,我們先說說什麼是 Linkerd?以及你為什麼要學這個教程?Linkerd 是一種 service sidecar,可增強 Kubernetes 服務,提供零配置 Dashboard 和 UNIX 風格的 CLI 工具,用於運行時調試,診斷和可靠性。Linkerd 也是一個 Service Mesh,應用於集羣中的多個(或所有)服務,為它們提供統一的遙測,安全和控制層。
Linkerd 的工作原理是將超輕代理安裝到服務的每個 Pod 中。這些代理將遙測數據報告給控制層,並從控制層接收信號。這意味著不需要做任何代碼更改就能直接使用 Linkerd ,甚至可以在正在運行的服務上實時安裝。Linkerd 獲得了 Apache v2 許可,是完全開源的,目前由雲原生計算基金會(CNCF)託管(與 Kubernetes 一樣!)。
接下來就讓我們看看在 Kubernetes 集羣上運行 Linkerd 的速度有多快。接下來,我們將向你介紹如何在任意 Kubernetes 1.9 + 集羣上部署 Linkerd,以及如何使用它來調試一個示例 gRPC 應用程序中的故障。
第 1 步:安裝 demo 應用程序 ??
在安裝 Linkerd 之前,讓我們首先在 Kubernetes 集羣上安裝一個名為 Emojivoto 的基本 gRPC demo 應用程序。要安裝 Emojivoto,請運行:curl https://run.linkerd.io/emojivoto.yml | kubectl apply -f -
此命令用來下載 Emojivoto 的 Kubernetes manifest,使用 kubectl 將其應用於你的 Kubernetes 集羣上。Emojivoto 由幾個在 「emojivoto」 namespace 中運行的服務組成。你可以通過運行以下命令來查看服務:
kubectl get -n emojivoto deployments
你還可以通過運行以下命令查看應用程序
minikube -n emojivoto service web-svc --url # if you』re on minikube
或:
kubectl get svc web-svc -n emojivoto -o jsonpath="{.status.loadBalancer.ingress[0].*}" #
.....如果你在別的地方
點擊其他地方。你可能會注意到應用程序的某些部分已損壞!如果要你檢查本地 Kubernetes dashboard,你很難感受到樂趣。就 Kubernetes 而言,應用程序運行得很好。這是一種非常普遍的情況!Kubernetes 很瞭解你的 Pod 是否正在運行,但卻不知道它們是否能夠正常響應。
在接下來的幾個步驟中,我們將介紹如何使用 Linkerd 來診斷問題。
第 2 步:安裝 Linkerd 的 CLI
首先將 Linkerd 的命令行界面(CLI)安裝到本地計算機上。訪問 Linkerd 發布頁面,或者只需運行:curl -sL https://run.linkerd.io/install | sh
安裝完成後,將 linkerd 命令添加到路徑中:
export PATH=$PATH:$HOME/.linkerd2/bin
你現在應該能夠運行該命令 linkerd version,該命令應顯示為:
Client version: v2.0
Server version: unavailable
「Server version: unavailable」 意味著我們需要將 Linkerd 的控制層添加到集羣,我們接下來會這樣做。但首先,讓我們運行以下命令來驗證,你的集羣是否已經為 Linkerd 做好準備:
linkerd check --pre
這個便捷的命令將向你反饋所有會影響你安裝 Linkerd 的問題。希望你進展順利並已經準備好繼續下一步了。
第 3 步:將 Linkerd 的控制層安裝到集羣上
在這一步中,我們將 Linkerd 的輕量級控制層安裝到集羣中自己的 namespace(「linkerd」)中。為此,請運行:
linkerd install | kubectl apply -f -
此命令可生成一個 Kubernetes manifest ,然後使用 kubectl 命令將其應用於 Kubernetes 集羣。(在應用之前,請隨意檢查 manifest )
注意:如果你的 Kubernetes 集羣在啟用了 RBAC 的 GKE 後,則需要額外的步驟:首先,你必須向你的 Google Cloud 帳戶授予 ClusterRole 集羣管理員許可權,以便在控制層中安裝某些遙測功能。為此,運行:
kubectl create clusterrolebinding cluster-admin-binding-$USER --clusterrole=cluster-admin --user=$(gcloud config get-value account)
你的 Kubernetes 集羣可能需要一兩分鐘才能獲取 Linkerd 鏡像,這取決於你的互聯網連接速度。在發生這種情況時,我們可以通過運行以下命令來驗證是否一切正常:
linkerd check
此命令將耐心等待 Linkerd 安裝並運行。
最後,我們準備好查看 Linkerd 的 dashboard 了!只需要運行:
linkerd dashboard
如果你看到類似下面的內容,那麼 Linkerd 現在應該正在你的集羣上運行了。??