> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pelanor.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Kubernetes

> Learn more about Pelanor's eBPF Kubernetes agent and how to install it on your K8s clusters.

Pelanor’s Kubernetes sensor delivers granular cost allocation for every cluster, namespace, workload, and even individual network endpoint.

## Key Capabilities

* **Cost by namespace & workload** – CPU, memory, storage, and network
* **Network cost attribution** – cluster → namespace → workload → endpoint
* **eBPF-powered traffic mapping**
  * **DNS** – map cloud resources (e.g., ALB, RDS) to workloads
  * **HTTP** – link workloads to S3 buckets / object stores
  * **SQL** – attribute database queries to the calling pods

## Architecture Overview

A lightweight **DaemonSet** runs on each node. Using eBPF plus the Kubernetes API it gathers:

| Data collected                                         | Purpose                      |
| ------------------------------------------------------ | ---------------------------- |
| K8s object state (namespaces, deployments, pods, etc.) | Identity & ownership         |
| Pod/container CPU & memory requests & usage            | Cost & right-sizing          |
| Per-pod network statistics                             | Internal vs external traffic |
| DNS, HTTP, SQL traces                                  | Resource → workload mapping  |

<Info>
  The DaemonSet consumes \~50 MB memory and \< 2% CPU per node. It captures <strong>only metadata</strong>, never payloads.
</Info>

***

## Installation

After signing in to Pelanor, go to **Integrations → Kubernetes** and copy the pre-filled Helm command.

```bash theme={null}
helm repo add pelanor https://assets.pelanor.io/v1/charts

helm install pelanor pelanor/pelanor \
  --create-namespace -n pelanor \
  --set clusterName=<CLUSTER_NAME> \
  --set deployKey=<DEPLOY_KEY> \
  --set ingress=https://ingress.pelanor.io
```

### Required values

| Parameter     | Notes                                                                                                      |
| ------------- | ---------------------------------------------------------------------------------------------------------- |
| `deployKey`   | Unique per Kubernetes integration. Create one per cluster for better status tracking, or reuse if desired. |
| `clusterName` | Human-readable & <strong>unique</strong>. For EKS, the cluster ARN works well.                             |

<Warning>
  <code>clusterName</code> <strong>must be unique</strong> across all clusters in your tenant; duplicates will merge data.
</Warning>

***

## Troubleshooting

### Helm chart installed but some pods are not scheduled

<Steps>
  <Step title="Check for taints">
    Ensure pods aren’t unschedulable due to node taints (configure tolerations if needed).
  </Step>

  <Step title="Verify node resources">
    Confirm that all nodes have enough available CPU and memory to schedule the Pelanor pods.
  </Step>
</Steps>
