《Linkerd官方文档》在Kubernetes中运行Linkerd

在Kubernetes中运行

如果您拥有Kubernetes群集或者甚至只是运行Minikube,那么将Linkerd作为服务网格部署是最快开始的方式。它不仅非常易于部署,而且还适用于大多数生产用例,提供服务发现,仪器,智能客户端负载均衡,断路器和动态路由即开即用。

Linkerd服务网格作为Kubernetes DaemonSet 来部署,在集群的每个节点上运行一个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兼容性。这些在配置文件本身中都被注释掉。您可以在我们的Kubernetes Flavors页面上了解有关CNI兼容性的更多信息 。

配置你的应用

要将应用程序配置为使用Linkerd进行HTTP通信,您可以将http_proxy环境变量设置 为$(NODE_NAME):4140其中NODE_NAME运行应用程序实例的节点的名称。该 NODE_NAME环境变量可以通过使用Kubernetes downward API在实例的pod规范中来设置

    env:
    - name: NODE_NAME
      valueFrom:
        fieldRef:
          fieldPath: spec.nodeName
    - name: http_proxy
      value: $(NODE_NAME):4140

查看我们的 hello world , Kubernetes配置了一个完整的例子。

请注意,spec.nodeName在某些环境(如 Minikube)中不起作用。请参阅我们 的Kubernetes Flavors页面 了解变通方法。

如果您的应用程序不支持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)。在具有外部负载均衡器的云环境中,入口地址是外部负载均衡器的地址。否则,任何节点的地址都可以用作入口地址。

请参阅我们的Ingress博客文章了解更多详情。

下一步

这个配置是一个很好的起点,适用于广泛的用例。请查看我们 的Kubernetes博客系列的服务网格 ,了解如何启用更高级的Linkerd功能,如 服务到服务的加密持续部署按请求路由

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Linkerd官方文档》在Kubernetes中运行Linkerd

  • Trackback 关闭
  • 评论 (0)
  1. 暂无评论

return top