Skip to content

Linkerd

Supported Versions: Linkerd 2.16+ Last Updated: February 22, 2026

Overview

Linkerd is a CNCF (Cloud Native Computing Foundation) graduated project and a lightweight service mesh solution. Originally developed by Buoyant in 2016, it was the project that first coined the term "service mesh." Linkerd's core values are simplicity, security by default, and minimal resource overhead, making service-to-service communication in Kubernetes environments secure and reliable.

Core Value Propositions

ValueDescription
SimplicitySensible defaults that work out of the box without complex configuration
Security by DefaultAutomatic mTLS encryption without any configuration
LightweightMicro-proxy written in Rust with minimal resource usage (~10MB memory)
Fast PerformanceLess than 1ms p99 latency overhead
Operational EaseSimple upgrades and intuitive debugging tools

Linkerd Architecture Overview

Service Mesh Comparison

Compare Linkerd, Istio, and Cilium Service Mesh to understand the characteristics of each solution.

FeatureLinkerdIstioCilium Service Mesh
Proxylinkerd2-proxy (Rust)Envoy (C++)eBPF + Envoy (optional)
Resource UsageVery Low (~10MB)High (~50-100MB)Low (eBPF mode)
Latency Overhead<1ms p992-5ms p99<1ms (eBPF mode)
ComplexityLowHighMedium
mTLSAutomatic (default)Configuration requiredConfiguration required
Traffic ManagementBasic (SMI)Very RichBasic
ObservabilityGood (built-in)ExcellentGood (Hubble)
Multi-clusterService MirroringComplex setupClusterMesh
CNI IntegrationSeparateSeparateNative
CNCF StatusGraduatedGraduatedGraduated
Learning CurveGentleSteepMedium
CommunityActiveVery ActiveActive

When to Choose Linkerd

Suitable Use Cases

  1. When Simplicity Matters
    • When basic service mesh capabilities are needed over complex traffic management features
    • Small operations teams or teams with limited service mesh experience
    • When fast adoption and low learning curve are priorities
  2. When Resource Efficiency is Critical
    • Environments running many Pods per node
    • When sidecar overhead needs to be minimized
    • Latency-sensitive applications
  3. When Security Should Be the Default
    • When automatic mTLS without configuration is needed
    • Zero-trust network implementation
    • Encryption requirements for compliance
  4. When Operational Simplicity is Required
    • Preference for simple upgrade processes
    • Minimal CRDs and configuration
    • Intuitive CLI tooling

Less Suitable Use Cases

  1. Advanced Traffic Management Needs
    • Complex routing rules, header manipulation
    • Advanced load balancing algorithms
    • Extensive protocol support (beyond gRPC)
  2. VM Workload Integration
    • Integration with workloads outside Kubernetes
    • Mixed VM and container environments
  3. Large-scale Multi-protocol Environments
    • Need for various protocol support (Kafka, MongoDB, etc.)
    • Complex Wasm extension requirements

Documentation Structure

This section covers Linkerd's main features and operational methods:

DocumentDescription
Installation and SetupCLI installation, control plane installation, HA configuration, extensions
ArchitectureControl plane, data plane, certificate hierarchy details
Traffic ManagementServiceProfile, TrafficSplit, retries, timeouts, canary deployments
SecuritymTLS, authorization policies, certificate management, external CA integration
ObservabilityMetrics, dashboards, CLI tools, Prometheus/Grafana integration, distributed tracing
Multi-clusterService mirroring, cluster linking, failover
Best PracticesProduction checklist, performance tuning, troubleshooting

Quick Start

1. Install Linkerd CLI

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

# Verify installation
linkerd version

2. Pre-flight Cluster Validation

bash
# Verify cluster meets Linkerd requirements
linkerd check --pre

3. Install Linkerd

bash
# Install CRDs
linkerd install --crds | kubectl apply -f -

# Install control plane
linkerd install | kubectl apply -f -

# Verify installation
linkerd check

4. Add Application to Mesh

bash
# Enable automatic injection for namespace
kubectl annotate namespace my-app linkerd.io/inject=enabled

# Restart existing deployments to inject proxy
kubectl rollout restart deployment -n my-app

# Or manually inject
kubectl get deploy -n my-app -o yaml | linkerd inject - | kubectl apply -f -

5. Install and Access Dashboard

bash
# Install Viz extension
linkerd viz install | kubectl apply -f -

# Open dashboard
linkerd viz dashboard

Checking Linkerd Component Status

bash
# Full status check
linkerd check

# Control plane status
linkerd check --proxy

# Data plane proxy status
linkerd viz stat deploy -n my-app

# Real-time traffic monitoring
linkerd viz tap deploy/my-app -n my-app

Core Concepts

Data Plane Proxy

Linkerd injects a sidecar container called linkerd-proxy into each Pod. This proxy:

  • Written in Rust for memory safety and high performance
  • Uses only ~10MB of memory
  • Adds less than 1ms latency
  • Handles all inbound/outbound traffic
  • Automatically applies mTLS encryption

Service Discovery

The Destination component monitors Kubernetes services and provides endpoint information to proxies:

  • Real-time endpoint updates
  • ServiceProfile-based routing information
  • Traffic split policy distribution

Automatic mTLS

Linkerd automatically encrypts all mesh traffic without configuration:

  1. Identity component issues certificates to each proxy
  2. Mutual TLS authentication between proxies
  3. Automatic certificate renewal (24-hour default)

Next Steps

  1. Installation and Setup: Detailed guide on installing Linkerd in your cluster
  2. Architecture: Understanding Linkerd's internal structure
  3. Quizzes: Test your knowledge

References