Linkerd — 轻量级服务网格
Linkerd vs Istio
| 特性 | Linkerd | Istio |
|---|---|---|
| 复杂度 | 低 | 高 |
| 资源消耗 | 低(Rust 代理) | 高(Envoy) |
| 功能 | 核心功能 | 功能完整 |
| 学习曲线 | 平缓 | 陡峭 |
| 适用场景 | 中小规模 | 大规模/复杂需求 |
安装
bash
# 安装 linkerd CLI
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh
# 预检查
linkerd check --pre
# 安装 Linkerd
linkerd install --crds | kubectl apply -f -
linkerd install | kubectl apply -f -
# 验证
linkerd check
# 安装可视化组件
linkerd viz install | kubectl apply -f -
linkerd viz check注入 Sidecar
bash
# 命名空间级别自动注入
kubectl annotate namespace production linkerd.io/inject=enabled
# 手动注入
kubectl get deploy my-app -o yaml | linkerd inject - | kubectl apply -f -
# 查看注入状态
linkerd check --proxy -n production流量观测
bash
# 实时流量统计
linkerd viz stat deploy -n production
# 查看服务拓扑
linkerd viz edges deploy -n production
# 实时 Top 请求
linkerd viz top deploy/my-app -n production
# 打开 Dashboard
linkerd viz dashboard流量分割(金丝雀)
yaml
apiVersion: split.smi-spec.io/v1alpha1
kind: TrafficSplit
metadata:
name: my-app-split
spec:
service: my-app
backends:
- service: my-app-stable
weight: 900m # 90%
- service: my-app-canary
weight: 100m # 10%mTLS
Linkerd 默认为所有 Pod 间通信启用 mTLS,无需额外配置:
bash
# 验证 mTLS
linkerd viz edges pod -n production
# 查看证书
linkerd identity -n production pod/my-pod-xxx