一、环境准备
1. Kubernetes集群配置
bash
# 确保Kubernetes版本>=1.21
kubectl version
# 安装必要工具
curl -sL https://run.linkerd.io/install | sh
export PATH=$PATH:$HOME/.linkerd2/bin
2. 验证环境
bash
# 检查集群是否满足要求
linkerd check --pre
# 配置kubectl插件
kubectl krew install linkerd
二、Linkerd安装
1. 核心组件安装
bash
# 安装CRDs
linkerd install --crds | kubectl apply -f -
# 安装Linkerd核心组件
linkerd install | kubectl apply -f -
# 验证安装
linkerd check
2. 可视化组件
bash
# 安装dashboard
linkerd viz install | kubectl apply -f -
# 安装Jaeger
linkerd jaeger install | kubectl apply -f -
# 验证组件
linkerd viz check
三、应用部署
1. 注入Sidecar
yaml
# deployment.yaml
apiVersion: apps/v1
kind:Deployment
metadata:
name: example-app
annotations:
linkerd.io/inject: enabled
spec:
replicas:3
template:
spec:
containers:
- name: app
image: example/app:latest
2. 流量配置
yaml
# service-profile.yaml
apiVersion: linkerd.io/v1alpha2
kind:ServiceProfile
metadata:
name: example-service
namespace:default
spec:
routes:
- name: GET /api/v1/users
condition:
method: GET
pathRegex:/api/v1/users
timeout:500ms
四、流量管理
1. 负载均衡
yaml
# traffic-split.yaml
apiVersion: split.smi-spec.io/v1alpha2
kind:TrafficSplit
metadata:
name: backend-split
spec:
service: backend
backends:
- service: backend-v1
weight:80
- service: backend-v2
weight:20
2. 重试策略
yaml
# retry-policy.yaml
apiVersion: policy.linkerd.io/v1alpha1
kind:RetryPolicy
metadata:
name:retry-policy
spec:
maxRetries:3
retryOn:
-5xx
- gateway-error
- reset
五、监控配置
1. Grafana面板
bash
# 访问Grafana仪表板
linkerd viz dashboard &
# 配置自定义面板
kubectl apply -f -<<EOF
apiVersion: monitoring.coreos.com/v1
kind:ServiceMonitor
metadata:
name: linkerd-monitor
spec:
selector:
matchLabels:
linkerd.io/control-plane-component: controller
endpoints:
- port: metrics
EOF
2. 性能指标
bash
# 查看服务指标
linkerd viz stat deployments
# 查看详细指标
linkerd viz top deployments
六、故障排查
1. 诊断工具
bash
# 检查代理状态
linkerd viz proxy-status
# 查看路由配置
linkerd viz routes svc/example-service
# 抓取代理日志
kubectl logs -n linkerd deploy/linkerd-controller -c controller
2. 调试配置
yaml
# debug-config.yaml
apiVersion: v1
kind:ConfigMap
metadata:
name: linkerd-config-overrides
data:
values:|
global:
proxy:
logLevel: debug