《Linkerd官方文件》在Kubernetes中執行Linkerd
在Kubernetes中執行
如果您擁有Kubernetes群集或者甚至只是執行,那麼將Linkerd作為服務網格部署是最快開始的方式。它不僅非常易於部署,而且還適用於大多數生產用例,提供服務發現,儀器,智慧客戶端負載均衡,斷路器和動態路由即開即用。
Linkerd服務網格作為Kubernetes ,在叢集的每個節點上執行一個Linkerd網格。執行在Kubernetes上的應用程式可以通過其節點上執行的Linkerd傳送其所有網路流量來利用服務網格。
部署Linkerd服務網格
使用以下命令部署Linkerd服務網格:
kubectl create ns linkerd kubectl apply -f https://raw.githubusercontent.com/linkerd/linkerd-examples/master/k8s-daemonset/k8s/servicemesh.yml
您可以通過執行驗證Linkerd是否已成功部署
kubectl -n linkerd port-forward $(kubectl -n linkerd get pod -l app=l5d -o jsonpath='{.items[0].metadata.name}') 9990 &
然後在您的瀏覽器中,通過訪問http://localhost:9990
檢視Linkerd管理儀表板。
請注意,如果您的群集使用CNI,則需要對Linkerd配置進行一些小的更改以啟用CNI相容性。這些在配置檔案本身中都被註釋掉。您可以在我們上了解有關CNI相容性的更多資訊 。
配置你的應用
要將應用程式配置為使用Linkerd進行HTTP通訊,您可以將http_proxy
$(NODE_NAME):4140
其中NODE_NAME
為執行應用程式例項的節點的名稱。該 NODE_NAME
環境變數可以通過使用:
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: http_proxy
value: $(NODE_NAME):4140
檢視我們的 , Kubernetes配置了一個完整的例子。
如果您的應用程式不支援http_proxy
環境變數,或者您想要將應用程式配置為使用Linkerd進行HTTP / 2或gRPC通訊,則必須將應用程式配置為直接向Linkerd傳送通訊:
$(NODE_NAME):4140
為HTTP$(NODE_NAME):4240
對於HTTP / 2$(NODE_NAME):4340
為gRPC
如果要傳送HTTP或HTTP / 2流量直接到Linkerd,必須將主機/管理局頭設定<service>
或<service>
.<namespace>,
並且 <service>
和<namespace>
是要代理服務和名稱空間的名稱。如果未指定,則<namespace>
預設為 default
。
如果您的應用程式接收HTTP,HTTP / 2,和/或GRPC通訊,那麼必須有一個埠名稱分別為http
,h2
和/或grpc
的Kubernetes服務物件。
入口
Linkerd服務網格也被配置為充當 入口控制器。只需建立一個定義所需路由的Ingress資源,然後將請求傳送到叢集入口地址的80埠(或埠8080,用於HTTP / 2)。在具有外部負載均衡器的雲環境中,入口地址是外部負載均衡器的地址。否則,任何節點的地址都可以用作入口地址。
下一步
這個配置是一個很好的起點,適用於廣泛的用例。請檢視我們 ,瞭解如何啟用更高階的Linkerd功能,如 , 持續部署和按請求路由。