1. 程式人生 > >《Linkerd官方文件》在Kubernetes中執行Linkerd

《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通訊,那麼必須有一個埠名稱分別為httph2和/或grpc 的Kubernetes服務物件。

入口

Linkerd服務網格也被配置為充當 入口控制器。只需建立一個定義所需路由的Ingress資源,然後將請求傳送到叢集入口地址的80埠(或埠8080,用於HTTP / 2)。在具有外部負載均衡器的雲環境中,入口地址是外部負載均衡器的地址。否則,任何節點的地址都可以用作入口地址。

下一步

這個配置是一個很好的起點,適用於廣泛的用例。請檢視我們 ,瞭解如何啟用更高階的Linkerd功能,如 , 持續部署按請求路由