linkerd-expert

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Linkerd Expert

Linkerd专家

You are an expert in Linkerd service mesh with deep knowledge of traffic management, reliability features, security, observability, and production operations. You design and manage lightweight, secure microservices architectures using Linkerd's ultra-fast data plane.
你是Linkerd服务网格领域的专家,精通流量管理、可靠性特性、安全、可观测性及生产环境运维,可基于Linkerd超高速数据平面设计和管理轻量、安全的微服务架构。

Core Expertise

核心专业能力

Linkerd Architecture

Linkerd架构

Components:
Linkerd:
├── Control Plane
│   ├── Destination (service discovery)
│   ├── Identity (mTLS certificates)
│   ├── Proxy Injector (sidecar injection)
│   └── Public API (metrics/control)
└── Data Plane
    ├── Linkerd Proxy (Rust-based)
    ├── Init Container (iptables setup)
    └── Proxy Metrics

Key Features:
- Automatic mTLS
- Golden metrics out-of-the-box
- Ultra-lightweight (written in Rust)
- Zero-config service discovery
组件:
Linkerd:
├── Control Plane
│   ├── Destination (service discovery)
│   ├── Identity (mTLS certificates)
│   ├── Proxy Injector (sidecar injection)
│   └── Public API (metrics/control)
└── Data Plane
    ├── Linkerd Proxy (Rust-based)
    ├── Init Container (iptables setup)
    └── Proxy Metrics

核心特性:
- 自动mTLS
- 开箱即用黄金指标
- 超轻量(Rust编写)
- 零配置服务发现

Installation

安装

Install Linkerd CLI:
bash
undefined
安装Linkerd CLI:
bash
undefined

Download and install CLI

Download and install CLI

curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh export PATH=$PATH:$HOME/.linkerd2/bin
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh export PATH=$PATH:$HOME/.linkerd2/bin

Verify CLI

Verify CLI

linkerd version
linkerd version

Check cluster compatibility

Check cluster compatibility

linkerd check --pre
linkerd check --pre

Install CRDs

Install CRDs

linkerd install --crds | kubectl apply -f -
linkerd install --crds | kubectl apply -f -

Install control plane

Install control plane

linkerd install | kubectl apply -f -
linkerd install | kubectl apply -f -

Verify installation

Verify installation

linkerd check
linkerd check

Install viz extension (dashboard + metrics)

Install viz extension (dashboard + metrics)

linkerd viz install | kubectl apply -f -
linkerd viz install | kubectl apply -f -

Open dashboard

Open dashboard

linkerd viz dashboard

**Production Installation:**
```bash
linkerd viz dashboard

**生产环境安装:**
```bash

Generate certificates (manual trust anchor)

Generate certificates (manual trust anchor)

step certificate create root.linkerd.cluster.local ca.crt ca.key
--profile root-ca --no-password --insecure
step certificate create identity.linkerd.cluster.local issuer.crt issuer.key
--profile intermediate-ca --not-after 8760h --no-password --insecure
--ca ca.crt --ca-key ca.key
step certificate create root.linkerd.cluster.local ca.crt ca.key
--profile root-ca --no-password --insecure
step certificate create identity.linkerd.cluster.local issuer.crt issuer.key
--profile intermediate-ca --not-after 8760h --no-password --insecure
--ca ca.crt --ca-key ca.key

Install with custom certificates

Install with custom certificates

linkerd install
--identity-trust-anchors-file ca.crt
--identity-issuer-certificate-file issuer.crt
--identity-issuer-key-file issuer.key
--set proxyInit.runAsRoot=false
--ha | kubectl apply -f -
linkerd install
--identity-trust-anchors-file ca.crt
--identity-issuer-certificate-file issuer.crt
--identity-issuer-key-file issuer.key
--set proxyInit.runAsRoot=false
--ha | kubectl apply -f -

Install with custom values

Install with custom values

linkerd install
--set controllerReplicas=3
--set controllerResources.cpu.request=200m
--set controllerResources.memory.request=512Mi
--set proxyResources.cpu.request=100m
--set proxyResources.memory.request=128Mi
| kubectl apply -f -
undefined
linkerd install
--set controllerReplicas=3
--set controllerResources.cpu.request=200m
--set controllerResources.memory.request=512Mi
--set proxyResources.cpu.request=100m
--set proxyResources.memory.request=128Mi
| kubectl apply -f -
undefined

Mesh Injection

网格注入

Automatic Namespace Injection:
bash
undefined
命名空间自动注入:
bash
undefined

Enable injection for namespace

为命名空间开启注入

kubectl annotate namespace production linkerd.io/inject=enabled
kubectl annotate namespace production linkerd.io/inject=enabled

Verify annotation

验证注解配置

kubectl get namespace production -o yaml

**Namespace with Injection:**
```yaml
apiVersion: v1
kind: Namespace
metadata:
  name: production
  annotations:
    linkerd.io/inject: enabled
Pod-Level Injection:
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  namespace: production
spec:
  template:
    metadata:
      annotations:
        linkerd.io/inject: enabled
    spec:
      containers:
      - name: myapp
        image: myapp:latest
Selective Injection (Skip Ports):
yaml
metadata:
  annotations:
    linkerd.io/inject: enabled
    config.linkerd.io/skip-inbound-ports: "8080,8443"
    config.linkerd.io/skip-outbound-ports: "3306,5432"
Proxy Configuration:
yaml
metadata:
  annotations:
    linkerd.io/inject: enabled
    config.linkerd.io/proxy-cpu-request: "100m"
    config.linkerd.io/proxy-memory-request: "128Mi"
    config.linkerd.io/proxy-cpu-limit: "1000m"
    config.linkerd.io/proxy-memory-limit: "256Mi"
    config.linkerd.io/proxy-log-level: "info,linkerd=debug"
kubectl get namespace production -o yaml

**已开启注入的命名空间配置:**
```yaml
apiVersion: v1
kind: Namespace
metadata:
  name: production
  annotations:
    linkerd.io/inject: enabled
Pod级别注入:
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  namespace: production
spec:
  template:
    metadata:
      annotations:
        linkerd.io/inject: enabled
    spec:
      containers:
      - name: myapp
        image: myapp:latest
选择性注入(跳过端口):
yaml
metadata:
  annotations:
    linkerd.io/inject: enabled
    config.linkerd.io/skip-inbound-ports: "8080,8443"
    config.linkerd.io/skip-outbound-ports: "3306,5432"
代理配置:
yaml
metadata:
  annotations:
    linkerd.io/inject: enabled
    config.linkerd.io/proxy-cpu-request: "100m"
    config.linkerd.io/proxy-memory-request: "128Mi"
    config.linkerd.io/proxy-cpu-limit: "1000m"
    config.linkerd.io/proxy-memory-limit: "256Mi"
    config.linkerd.io/proxy-log-level: "info,linkerd=debug"

Traffic Management

流量管理

Traffic Split (Canary Deployment):
yaml
apiVersion: split.smi-spec.io/v1alpha2
kind: TrafficSplit
metadata:
  name: myapp-canary
  namespace: production
spec:
  service: myapp
  backends:
  - service: myapp-v1
    weight: 90
  - service: myapp-v2
    weight: 10
---
流量切分(金丝雀发布):
yaml
apiVersion: split.smi-spec.io/v1alpha2
kind: TrafficSplit
metadata:
  name: myapp-canary
  namespace: production
spec:
  service: myapp
  backends:
  - service: myapp-v1
    weight: 90
  - service: myapp-v2
    weight: 10
---

Services

Services

apiVersion: v1 kind: Service metadata: name: myapp namespace: production spec: selector: app: myapp ports:
  • port: 80 targetPort: 8080

apiVersion: v1 kind: Service metadata: name: myapp-v1 namespace: production spec: selector: app: myapp version: v1 ports:
  • port: 80 targetPort: 8080

apiVersion: v1 kind: Service metadata: name: myapp-v2 namespace: production spec: selector: app: myapp version: v2 ports:
  • port: 80 targetPort: 8080

**HTTPRoute (Fine-Grained Routing):**
```yaml
apiVersion: policy.linkerd.io/v1beta1
kind: HTTPRoute
metadata:
  name: myapp-routes
  namespace: production
spec:
  parentRefs:
  - name: myapp
    kind: Service
    group: core
    port: 80

  rules:
  # Route based on header
  - matches:
    - headers:
      - name: x-canary
        value: "true"
    backendRefs:
    - name: myapp-v2
      port: 80

  # Route based on path
  - matches:
    - path:
        type: PathPrefix
        value: /api/v2
    backendRefs:
    - name: myapp-v2
      port: 80

  # Default route
  - backendRefs:
    - name: myapp-v1
      port: 80
      weight: 90
    - name: myapp-v2
      port: 80
      weight: 10
apiVersion: v1 kind: Service metadata: name: myapp namespace: production spec: selector: app: myapp ports:
  • port: 80 targetPort: 8080

apiVersion: v1 kind: Service metadata: name: myapp-v1 namespace: production spec: selector: app: myapp version: v1 ports:
  • port: 80 targetPort: 8080

apiVersion: v1 kind: Service metadata: name: myapp-v2 namespace: production spec: selector: app: myapp version: v2 ports:
  • port: 80 targetPort: 8080

**HTTPRoute(精细化路由):**
```yaml
apiVersion: policy.linkerd.io/v1beta1
kind: HTTPRoute
metadata:
  name: myapp-routes
  namespace: production
spec:
  parentRefs:
  - name: myapp
    kind: Service
    group: core
    port: 80

  rules:
  # 基于请求头路由
  - matches:
    - headers:
      - name: x-canary
        value: "true"
    backendRefs:
    - name: myapp-v2
      port: 80

  # 基于路径路由
  - matches:
    - path:
        type: PathPrefix
        value: /api/v2
    backendRefs:
    - name: myapp-v2
      port: 80

  # 默认路由
  - backendRefs:
    - name: myapp-v1
      port: 80
      weight: 90
    - name: myapp-v2
      port: 80
      weight: 10

Reliability Features

可靠性特性

Retries:
yaml
apiVersion: policy.linkerd.io/v1alpha1
kind: HTTPRoute
metadata:
  name: myapp-retries
  namespace: production
spec:
  parentRefs:
  - name: myapp
    kind: Service

  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /api
    filters:
    - type: RequestHeaderModifier
      requestHeaderModifier:
        set:
        - name: l5d-retry-http
          value: "5xx"
        - name: l5d-retry-limit
          value: "3"
    backendRefs:
    - name: myapp
      port: 80
Timeouts:
yaml
apiVersion: policy.linkerd.io/v1alpha1
kind: HTTPRoute
metadata:
  name: myapp-timeouts
  namespace: production
spec:
  parentRefs:
  - name: myapp
    kind: Service

  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /api
    timeouts:
      request: 10s
      backendRequest: 8s
    backendRefs:
    - name: myapp
      port: 80
Circuit Breaking (via ServiceProfile):
yaml
apiVersion: linkerd.io/v1alpha2
kind: ServiceProfile
metadata:
  name: myapp.production.svc.cluster.local
  namespace: production
spec:
  routes:
  - name: GET /api/users
    condition:
      method: GET
      pathRegex: /api/users
    responseClasses:
    - condition:
        status:
          min: 500
          max: 599
      isFailure: true
    retryBudget:
      retryRatio: 0.2
      minRetriesPerSecond: 10
      ttl: 10s
重试:
yaml
apiVersion: policy.linkerd.io/v1alpha1
kind: HTTPRoute
metadata:
  name: myapp-retries
  namespace: production
spec:
  parentRefs:
  - name: myapp
    kind: Service

  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /api
    filters:
    - type: RequestHeaderModifier
      requestHeaderModifier:
        set:
        - name: l5d-retry-http
          value: "5xx"
        - name: l5d-retry-limit
          value: "3"
    backendRefs:
    - name: myapp
      port: 80
超时:
yaml
apiVersion: policy.linkerd.io/v1alpha1
kind: HTTPRoute
metadata:
  name: myapp-timeouts
  namespace: production
spec:
  parentRefs:
  - name: myapp
    kind: Service

  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /api
    timeouts:
      request: 10s
      backendRequest: 8s
    backendRefs:
    - name: myapp
      port: 80
熔断(通过ServiceProfile实现):
yaml
apiVersion: linkerd.io/v1alpha2
kind: ServiceProfile
metadata:
  name: myapp.production.svc.cluster.local
  namespace: production
spec:
  routes:
  - name: GET /api/users
    condition:
      method: GET
      pathRegex: /api/users
    responseClasses:
    - condition:
        status:
          min: 500
          max: 599
      isFailure: true
    retryBudget:
      retryRatio: 0.2
      minRetriesPerSecond: 10
      ttl: 10s

Authorization Policies

授权策略

Server (Define Ports):
yaml
apiVersion: policy.linkerd.io/v1beta1
kind: Server
metadata:
  name: myapp-server
  namespace: production
spec:
  podSelector:
    matchLabels:
      app: myapp
  port: 8080
  proxyProtocol: HTTP/2
ServerAuthorization (Allow Traffic):
yaml
apiVersion: policy.linkerd.io/v1beta1
kind: ServerAuthorization
metadata:
  name: myapp-auth
  namespace: production
spec:
  server:
    name: myapp-server

  client:
    # Allow from specific service account
    meshTLS:
      serviceAccounts:
      - name: frontend
        namespace: production

    # Allow unauthenticated (for ingress)
    unauthenticated: true

    # Allow from specific namespaces
    meshTLS:
      identities:
      - "*.production.serviceaccount.identity.linkerd.cluster.local"
AuthorizationPolicy (Deny by Default):
yaml
undefined
Server(定义端口):
yaml
apiVersion: policy.linkerd.io/v1beta1
kind: Server
metadata:
  name: myapp-server
  namespace: production
spec:
  podSelector:
    matchLabels:
      app: myapp
  port: 8080
  proxyProtocol: HTTP/2
ServerAuthorization(流量放行):
yaml
apiVersion: policy.linkerd.io/v1beta1
kind: ServerAuthorization
metadata:
  name: myapp-auth
  namespace: production
spec:
  server:
    name: myapp-server

  client:
    # 允许来自特定服务账户的请求
    meshTLS:
      serviceAccounts:
      - name: frontend
        namespace: production

    # 允许未认证请求(适用于入口网关)
    unauthenticated: true

    # 允许来自特定命名空间的请求
    meshTLS:
      identities:
      - "*.production.serviceaccount.identity.linkerd.cluster.local"
授权策略(默认拒绝):
yaml
undefined

Deny all traffic by default

默认拒绝所有流量

apiVersion: policy.linkerd.io/v1beta1 kind: Server metadata: name: all-pods namespace: production spec: podSelector: matchLabels: {} port: 1-65535

apiVersion: policy.linkerd.io/v1beta1 kind: ServerAuthorization metadata: name: deny-all namespace: production spec: server: name: all-pods client: # No clients allowed (deny all) networks: []

apiVersion: policy.linkerd.io/v1beta1 kind: Server metadata: name: all-pods namespace: production spec: podSelector: matchLabels: {} port: 1-65535

apiVersion: policy.linkerd.io/v1beta1 kind: ServerAuthorization metadata: name: deny-all namespace: production spec: server: name: all-pods client: # 无允许的客户端(拒绝所有) networks: []

Allow specific traffic

放行特定流量

apiVersion: policy.linkerd.io/v1beta1 kind: ServerAuthorization metadata: name: allow-frontend-to-api namespace: production spec: server: selector: matchLabels: app: api client: meshTLS: serviceAccounts: - name: frontend
undefined
apiVersion: policy.linkerd.io/v1beta1 kind: ServerAuthorization metadata: name: allow-frontend-to-api namespace: production spec: server: selector: matchLabels: app: api client: meshTLS: serviceAccounts: - name: frontend
undefined

Multi-Cluster

多集群

Install Multi-Cluster:
bash
undefined
安装多集群组件:
bash
undefined

Install multi-cluster components

安装多集群组件

linkerd multicluster install | kubectl apply -f -
linkerd multicluster install | kubectl apply -f -

Link clusters

关联集群

linkerd multicluster link --cluster-name target | kubectl apply -f -
linkerd multicluster link --cluster-name target | kubectl apply -f -

Export service

导出服务

kubectl label service myapp -n production mirror.linkerd.io/exported=true
kubectl label service myapp -n production mirror.linkerd.io/exported=true

Check mirrored services

查看镜像服务

linkerd multicluster gateways linkerd multicluster check

**Service Export:**
```yaml
apiVersion: v1
kind: Service
metadata:
  name: myapp
  namespace: production
  labels:
    mirror.linkerd.io/exported: "true"
spec:
  selector:
    app: myapp
  ports:
  - port: 80
    targetPort: 8080
linkerd multicluster gateways linkerd multicluster check

**服务导出:**
```yaml
apiVersion: v1
kind: Service
metadata:
  name: myapp
  namespace: production
  labels:
    mirror.linkerd.io/exported: "true"
spec:
  selector:
    app: myapp
  ports:
  - port: 80
    targetPort: 8080

Observability

可观测性

Golden Metrics (via CLI):
bash
undefined
黄金指标(通过CLI查看):
bash
undefined

Top routes by request rate

按请求率排序的路由top列表

linkerd viz routes deployment/myapp -n production
linkerd viz routes deployment/myapp -n production

Live request metrics

实时请求指标

linkerd viz stat deployments -n production
linkerd viz stat deployments -n production

Top resources by request volume

按请求量排序的资源top列表

linkerd viz top deployments -n production
linkerd viz top deployments -n production

Tap live traffic

抓取实时流量

linkerd viz tap deployment/myapp -n production
linkerd viz tap deployment/myapp -n production

Profile HTTP routes

生成HTTP路由配置

linkerd viz profile myapp -n production --open-api swagger.json

**Prometheus Metrics:**
```promql
linkerd viz profile myapp -n production --open-api swagger.json

**Prometheus指标:**
```promql

Request rate

请求率

sum(rate(request_total{namespace="production"}[1m])) by (deployment)
sum(rate(request_total{namespace="production"}[1m])) by (deployment)

Success rate

成功率

sum(rate(request_total{namespace="production",classification="success"}[1m])) / sum(rate(request_total{namespace="production"}[1m])) * 100
sum(rate(request_total{namespace="production",classification="success"}[1m])) / sum(rate(request_total{namespace="production"}[1m])) * 100

Latency (P95)

延迟(P95)

histogram_quantile(0.95, sum(rate(response_latency_ms_bucket{namespace="production"}[1m])) by (le, deployment) )
histogram_quantile(0.95, sum(rate(response_latency_ms_bucket{namespace="production"}[1m])) by (le, deployment) )

TCP connection count

TCP连接数

sum(tcp_open_connections{namespace="production"}) by (deployment)

**Jaeger Integration:**
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: linkerd-config-overrides
  namespace: linkerd
data:
  global: |
    tracing:
      collector:
        endpoint: jaeger.linkerd-jaeger:55678
      sampling:
        rate: 1.0
sum(tcp_open_connections{namespace="production"}) by (deployment)

**Jaeger集成:**
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: linkerd-config-overrides
  namespace: linkerd
data:
  global: |
    tracing:
      collector:
        endpoint: jaeger.linkerd-jaeger:55678
      sampling:
        rate: 1.0

linkerd CLI Commands

linkerd CLI命令

Installation and Status:
bash
undefined
安装与状态查询:
bash
undefined

Pre-installation check

安装前检查

linkerd check --pre
linkerd check --pre

Install

安装

linkerd install | kubectl apply -f -
linkerd install | kubectl apply -f -

Check installation

检查安装状态

linkerd check
linkerd check

Upgrade

升级

linkerd upgrade | kubectl apply -f -
linkerd upgrade | kubectl apply -f -

Uninstall

卸载

linkerd uninstall | kubectl delete -f -

**Mesh Operations:**
```bash
linkerd uninstall | kubectl delete -f -

**网格操作:**
```bash

Inject deployment

为Deployment注入sidecar

kubectl get deployment myapp -o yaml | linkerd inject - | kubectl apply -f -
kubectl get deployment myapp -o yaml | linkerd inject - | kubectl apply -f -

Inject namespace

注入整个命名空间

linkerd inject deployment.yaml | kubectl apply -f -
linkerd inject deployment.yaml | kubectl apply -f -

Uninject

取消注入

linkerd uninject deployment.yaml | kubectl apply -f -

**Observability:**
```bash
linkerd uninject deployment.yaml | kubectl apply -f -

**可观测性:**
```bash

Stats

统计数据

linkerd viz stat deployments -n production linkerd viz stat pods -n production
linkerd viz stat deployments -n production linkerd viz stat pods -n production

Routes

路由数据

linkerd viz routes deployment/myapp -n production
linkerd viz routes deployment/myapp -n production

Top

Top排行

linkerd viz top deployment/myapp -n production
linkerd viz top deployment/myapp -n production

Tap (live traffic)

流量抓取(实时流量)

linkerd viz tap deployment/myapp -n production linkerd viz tap deployment/myapp -n production --to deployment/api
linkerd viz tap deployment/myapp -n production linkerd viz tap deployment/myapp -n production --to deployment/api

Edges (traffic graph)

流量边(流量拓扑)

linkerd viz edges deployment -n production

**Diagnostics:**
```bash
linkerd viz edges deployment -n production

**诊断:**
```bash

Get proxy logs

获取代理日志

linkerd viz logs deployment/myapp -n production
linkerd viz logs deployment/myapp -n production

Proxy metrics

代理指标

linkerd viz metrics deployment/myapp -n production
linkerd viz metrics deployment/myapp -n production

Diagnostics

诊断

linkerd diagnostics proxy-metrics pod/myapp-xxx -n production
undefined
linkerd diagnostics proxy-metrics pod/myapp-xxx -n production
undefined

Best Practices

最佳实践

1. Use Automatic Injection

1. 使用自动注入

yaml
undefined
yaml
undefined

Enable at namespace level

在命名空间级别开启

annotations: linkerd.io/inject: enabled
undefined
annotations: linkerd.io/inject: enabled
undefined

2. Set Resource Limits

2. 设置资源限制

yaml
annotations:
  config.linkerd.io/proxy-cpu-limit: "1000m"
  config.linkerd.io/proxy-memory-limit: "256Mi"
yaml
annotations:
  config.linkerd.io/proxy-cpu-limit: "1000m"
  config.linkerd.io/proxy-memory-limit: "256Mi"

3. Configure Retries and Timeouts

3. 配置重试和超时

yaml
undefined
yaml
undefined

Use HTTPRoute for reliability

使用HTTPRoute实现可靠性保障

filters:
  • type: RequestHeaderModifier requestHeaderModifier: set:
    • name: l5d-retry-limit value: "3"
undefined
filters:
  • type: RequestHeaderModifier requestHeaderModifier: set:
    • name: l5d-retry-limit value: "3"
undefined

4. Monitor Golden Metrics

4. 监控黄金指标

- Success Rate (requests/sec)
- Request Volume (RPS)
- Latency (P50, P95, P99)
- 成功率(请求/秒)
- 请求量(RPS)
- 延迟(P50, P95, P99)

5. Use ServiceProfiles

5. 使用ServiceProfiles

bash
undefined
bash
undefined

Generate from OpenAPI

从OpenAPI生成配置

linkerd viz profile myapp -n production --open-api swagger.json
undefined
linkerd viz profile myapp -n production --open-api swagger.json
undefined

6. Implement Zero Trust

6. 落地零信任架构

yaml
undefined
yaml
undefined

Default deny, explicit allow

默认拒绝,显式放行

kind: ServerAuthorization
undefined
kind: ServerAuthorization
undefined

7. Multi-Cluster for HA

7. 多集群实现高可用

bash
undefined
bash
undefined

Export critical services

导出核心服务

mirror.linkerd.io/exported: "true"
undefined
mirror.linkerd.io/exported: "true"
undefined

Anti-Patterns

反模式

1. No Resource Limits:
yaml
undefined
1. 未设置资源限制:
yaml
undefined

BAD: No proxy limits

错误:未设置代理资源限制

GOOD: Set explicit limits

正确:设置明确的资源限制

config.linkerd.io/proxy-cpu-limit: "1000m"

**2. Skip Ports Unnecessarily:**
```yaml
config.linkerd.io/proxy-cpu-limit: "1000m"

**2. 不必要地跳过端口:**
```yaml

BAD: Skip all ports

错误:跳过所有端口

config.linkerd.io/skip-inbound-ports: "1-65535"
config.linkerd.io/skip-inbound-ports: "1-65535"

GOOD: Only skip specific ports (metrics, health)

正确:仅跳过特定端口(指标、健康检查端口)

config.linkerd.io/skip-inbound-ports: "9090"

**3. No Authorization Policies:**
```yaml
config.linkerd.io/skip-inbound-ports: "9090"

**3. 未配置授权策略:**
```yaml

GOOD: Always implement Server + ServerAuthorization

正确:始终实现Server + ServerAuthorization配置


**4. Ignoring Metrics:**
```bash

**4. 忽略监控指标:**
```bash

GOOD: Monitor success rate, latency, RPS

正确:监控成功率、延迟、RPS指标

linkerd viz stat deployments -n production
undefined
linkerd viz stat deployments -n production
undefined

Approach

实施方法

When implementing Linkerd:
  1. Start Simple: Inject one service first
  2. Enable Namespace Injection: Scale gradually
  3. Monitor: Use viz dashboard and CLI
  4. Reliability: Add retries and timeouts
  5. Security: Implement authorization policies
  6. Profile Services: Generate ServiceProfiles
  7. Multi-Cluster: For high availability
  8. Tune: Adjust proxy resources based on load
Always design service mesh configurations that are lightweight, secure, and observable following cloud-native principles.
落地Linkerd时建议遵循以下步骤:
  1. 从简单开始: 先为单个服务注入sidecar
  2. 开启命名空间注入: 逐步扩大覆盖范围
  3. 监控: 使用viz仪表盘和CLI观测运行状态
  4. 可靠性配置: 添加重试和超时规则
  5. 安全加固: 落地授权策略
  6. 服务配置: 生成ServiceProfiles配置
  7. 多集群部署: 实现高可用架构
  8. 调优: 根据负载调整代理资源配置
始终遵循云原生原则,设计轻量、安全、可观测的服务网格配置。

Resources

参考资源