Skip to main content

Installation Troubleshooting Guide

Common Installation Issues

Port Conflicts

When deploying Kmesh, you might encounter port conflicts, particularly with port 15006 which is used by default.

Error CodeDescriptionImpactSolution
ERR_PORT_IN_USEPort 15006 already in usePrevents Kmesh startupChange port or free existing port
MISSING_DEPMissing libbpf dependencyBPF features unavailableInstall libbpf ≥0.8
CNI_CONFLICTCNI plugin conflictsNetwork setup failsVerify CNI configuration

Detailed Solutions

Port Conflict Resolution

If you encounter ERR_PORT_IN_USE, follow these steps:

  1. Diagnose the Conflict:

    # Check what's using port 15006
    sudo lsof -i :15006

    # For systemd services
    sudo ss -lptn 'sport = :15006'
  2. Resolution Options:

    a. Change Kmesh Port:

    # kmesh-config.yaml
    apiVersion: kmesh.net/v1
    kind: KmeshConfig
    metadata:
    name: kmesh-config
    namespace: kmesh-system
    spec:
    port: 15007
    logLevel: info
    enableMetrics: true

    b. Free Existing Port:

    # Identify and stop conflicting process
    sudo fuser -k 15006/tcp

Dependency Management

Install libbpf

Required for BPF functionality:

# Ubuntu/Debian systems
sudo apt-get update
sudo apt-get install -y \
libbpf-dev \
linux-headers-$(uname -r)

# Verify installation
dpkg -l | grep libbpf

# CentOS/RHEL systems
sudo yum install -y libbpf-devel kernel-devel

Runtime Verification

System Requirements Check

# Kernel version check
uname -r # Should be ≥ 5.10.0 for full features

# BPF verification
sudo bpftool prog list

# Resource limits
ulimit -n # Should be ≥ 65535

Pod Management

Verify Kmesh integration:

# Check pod annotations
kubectl get pod <pod-name> -o jsonpath='{.metadata.annotations}' | jq

# Enable Kmesh management
kubectl label namespace default istio.io/dataplane-mode=Kmesh --overwrite

# Verify Kmesh status
kubectl -n kmesh-system get pods -l app=kmesh

Logging and Debugging

Enhanced Logging

# Enable debug logging
kmeshctl accesslog <kmesh-pod-name> --set default:debug

# Monitor BPF events (kernel ≥ 5.10.0)
kubectl exec -n kmesh-system <kmesh-pod> -- kmesh-daemon log --set bpf:debug

# Collect all logs
kubectl logs -n kmesh-system -l app=kmesh --all-containers --tail=1000 > kmesh-debug.log

Clean-up Procedures

Cleanup

Remove Kmesh and its configurations:

# Using Helm
helm uninstall kmesh -n kmesh-system

# Using kubectl
kubectl delete namespace kmesh-system
kubectl delete -f kmesh-config.yaml

# Clean CNI configurations
sudo rm -f /etc/cni/net.d/kmesh-cni*

Configuration Reset

Reset to default settings:

# Remove namespace labels
kubectl label namespace default istio.io/dataplane-mode-

# Reset CNI
kubectl -n kmesh-system delete pod -l app=kmesh-cni

Health Verification

System Health Check

# Component status
kubectl get componentstatuses

# Event monitoring
kubectl get events -n kmesh-system --sort-by='.lastTimestamp'

# Resource usage
kubectl top pod -n kmesh-system

Additional Resources

For more complex issues, please refer to our GitHub Issues or join our community channels.