linkerd官方文档中文版
  • Introduction
  • 官方文档
    • 概况
      • 介绍
      • linkerd是什么?
    • 入门
      • 概况
      • 本地运行
      • 用docker运行
      • 在kubernetes中运行
      • 在DC/OS中运行
      • 用istio运行
      • 在ECS中运行
      • 管理
    • 特性
      • 概况
      • 负载均衡
      • 熔断
      • 服务发现
      • 动态请求路由
      • 重试次数和截止时间
      • TLS
      • HTTP代理集成
      • 透明代理
      • gRPC
      • 分布式跟踪
      • 仪器仪表
    • 配置
      • 概况
      • linkerd
      • namerd
    • 高级
      • 概述
      • 路由
      • namerd
      • dtabs
      • 部署
      • 插件
    • 支持
      • 常见问题
      • 获取帮助
      • 外部资源
      • 联系我们
    • 企业
      • 企业
  • 官方博客
    • 超越轮循:为了延迟的负载均衡
    • LINKERD:用于微服务的TWITTER风格可操作性
  • 全文标签总览
Powered by GitBook
On this page
  • 部署Linkerd服务网格
  • 配置应用程序
  • Ingress
  • 下一步
  1. 官方文档
  2. 入门

在kubernetes中运行

Previous用docker运行Next在DC/OS中运行

Last updated 6 years ago

如果您有一个Kubernetes集群,或者仅仅是运行,则将Linkerd部署为服务网格是开始的最快方式。它不仅部署非常简单,还适用于大多数生产用例,提供服务发现,仪器仪表,智能客户端负载均衡,熔断器和开箱即用的动态路由。

Linkerd服务网格被部署为Kubernetes ,在集群的每个节点上运行一个Linkerd pod。在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管理控制面板。

Note that if your cluster uses CNI, you will need to make a few small changes to the Linkerd config to enable CNI compatibility. These are indicated as comments in the config file itself. You can learn more about CNI compatibility on our Flavors of Kubernetes page.

请注意,如果您的群集使用CNI,则需要对Linkerd配置进行一些小的更改才能开启CNI兼容性。这些在配置文件本身表示为注释。您可以在我们的 页面上了解有关CNI兼容性的更多信息。

配置应用程序

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

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

如果您的应用程序不支持 http_proxy 环境变量,或者要将应用程序配置为使用Linkerd进行 HTTP/2或gRPC流量,则必须配置应用程序直接将流量发送到Linkerd:

  • $(NODE_NAME):4140 用于 HTTP

  • $(NODE_NAME):4240 用于 HTTP/2

  • $(NODE_NAME):4340 用于 gRPC

如果您直接向Linkerd发送 HTTP 或 HTTP/2 请求,则必须将 Host/Authority 标头设置为 <service> 或 <service>.<namespace>.其中 <service> 和 <namespace> 是想要代理的服务和命名空间的名称。如果没有指定,则 <namespace> 默认为 default。

如果您的应用程序接收 HTTP,HTTP/2 和/或 gRPC 请求,则它必须有Kubernetes服务对象,分别具有名为 http,h2 和/或 grpc 的端口的。

Ingress

Linkerd服务网格也可配置为作为Ingress控制器工作。只需创建一个Ingress资源,定义好需要的路由器,然后发送请求到群集的入口地址的80端口(或HTTP/2的端口8080)。在具有外部负载均衡器的云环境中,入口地址是外部负载均衡器的地址。除此以外,可以将任何节点的地址用作入口地址。

下一步

请参阅我们的 Kubernetes配置,作为完整的例子。

请注意,spec.nodeName 在某些环境(如)中不起作用。请参阅我们的 了解解决方法。

有关更多详情,请参阅我们的 。

这个配置是一个很好的起点,适用于广泛的用例。请查看我们的 ,了解如何启用更高级的Linkerd功能,如 , 和 。

Minikube
DaemonSet
Flavors of Kubernetes page
Kubernetes downward API
hello world
Minikube
Flavors of Kubernetes page
Ingress博文
Kubernetes服务网格博客系列
服务到服务加密
持续部署
每请求路由