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

透明代理

PreviousHTTP代理集成NextgRPC

Last updated 6 years ago

如果您在 Kubnernetes 中运行,则可以使用 工具透明地通过 代理请求。该脚本在每个pod中运行一个,在每个pod上设置 iptables 规则,将流量转发到在 node 上运行的linkerd。请注意,此设置将所有出站流量代理到单个 linkerd 端口,因此如果使用多个协议,则不能工作。

使用 linkerd-inject:

# install linkerd-inject
$ go get github.com/linkerd/linkerd-inject

# inject init container and deploy this config
$ kubectl apply -f <(linkerd-inject -f <your k8s config>.yml -linkerdPort 4140)

请注意,在 minikube 中,需要使用 -useServiceVip 标志。

如果不想使用脚本修改配置,则可以手动将以下 initContainer 规范插入到配置中:

initContainers:
- name: init-linkerd
  image: linkerd/istio-init:v1
  env:
  - name: NODE_NAME
    valueFrom:
      fieldRef:
        fieldPath: spec.nodeName
  args:
    - -p
    - "4140" # port of the Daemonset linkerd's incoming router
    - -s
    - "L5D" # linkerd Daemonset service name, uppercased
    - -m
    - "false" # set to true if running in minikube
  imagePullPolicy: IfNotPresent
  securityContext:
    capabilities:
      add:
      - NET_ADMIN

非Kubernetes环境

设置 iptables 规则的 脚本假设您运行在Kubernetes(并且您正在运行 Daemonset linkerd),但是也可以将 iptables 规则设置为在其他环境中透明地代理请求。如果您正在每个主机运行一个 linkerd,那么查看该文件中的 OUTPUT 链规则可以让您开始。

linkerd-inject
Daemonset linkerd
initContainer
prepare-proxy.sh