r/kubernetes • • 19d ago

Periodic Monthly: Who is hiring?

5 Upvotes

This monthly post can be used to share Kubernetes-related job openings within your company. Please include:

  • Name of the company
  • Location requirements (or lack thereof)
  • At least one of: a link to a job posting/application page or contact details

If you are interested in a job, please contact the poster directly.

Common reasons for comment removal:

  • Not meeting the above requirements
  • Recruiter post / recruiter listings
  • Negative, inflammatory, or abrasive tone

r/kubernetes • • 13h ago

Periodic Weekly: Questions and advice

3 Upvotes

Have any questions about Kubernetes, related tooling, or how to adopt or use Kubernetes? Ask away!


r/kubernetes • • 7h ago

Set up Longhorn storage for my 3-node homelab

15 Upvotes

My 3-node Talos homelab had no persistent storage, so anything with data, like Grafana or a database, had nowhere to live.

Longhorn keeps every volume on two of the three nodes, so one node can go down without losing data, and it rebuilds the missing copy on the third node.

It also takes hourly snapshots, and backups to S3 are optional. The Longhorn UI runs on my LAN and over Tailscale.

Repo: https://github.com/prateekjaindev/homelab

Write-up: https://blog.prateekjain.dev/persistent-storage-for-a-3-node-talos-homelab-with-longhorn-587c05356b73?sk=9093231c2d278ba92fd493098fbe237d

What are you using for storage in your homelab?


r/kubernetes • • 13h ago

zlb: many LoadBalancer Services on a few public IPs, via one edge node (no BGP/L2, nodes stay off the internet)

Post image
24 Upvotes

I built zlb for clusters where:
- public IPs are scarce and routed to one machine;
- nodes have no inbound internet access;
- there's no BGP or shared L2, so MetalLB, Cilium IPAM, and kube-vip don't fit.
A controller watches LoadBalancer Services and pushes the desired state to a small daemon on that machine. The daemon programs nftables DNAT from publicIP:port to node:NodePort, keeping the client IP.
Services are published on their NodePort, so all of them can share one IP: two Postgres Services on 5432 become IP:31543 and IP:30876. Literal ports like 80/443 come from explicit reservations (e.g Ingress Controller gets 80/443 on the public IP).
TCP/UDP/SCTP, Local/Cluster traffic policy, loadBalancerSourceRanges enforced at the edge
Atomic, verified nftables changes with rollback; forwarding survives crashes and upgrades
TLS/mTLS API, sandboxed non-root daemon, Helm chart with optional SSH bootstrap of the VM
Limits: the edge node is a single point of failure for now (active/standby with VRRP and conntrackd is planned). IPv4 only, no metrics yet.
https://github.com/abexamir/zlb (Apache-2.0)
Feedback welcome, especially from anyone running a similar single-entry setup.


r/kubernetes • • 7h ago

EKS support calendar for the next year: 1.34 goes to extended support Dec 2 (6x control plane cost)

1 Upvotes

I pulled together the current EKS support dates, since a few are coming up soon:

Version |End of standard support |End of extended support
1.31 |Nov 26, 2025 |Nov 26, 2026
1.32 |Mar 23, 2026 |Mar 23, 2027
1.33 |Jul 29, 2026 |Jul 29, 2027
1.34 |Dec 2, 2026 |Dec 2, 2027
1.35 |Mar 27, 2027 |Mar 27, 2028
1.36 |Aug 2, 2027 |Aug 2, 2028
1.37 |Dec 1, 2027 |Dec 1, 2028 What this means:
- Once a version is in extended support, the control plane is $0.60/hr instead of $0.10/hr, about $365/month more per cluster. Running dev/stage/prod on 1.33 is roughly $1,100/month extra for nothing.
- 1.31 is 5 weeks from end of extended support (Nov 26). After that AWS upgrades the control plane for you, which is not a fun surprise if you have deprecated APIs in use.
- 1.34 is the next to tip over, on Dec 2. Upgrading to 1.35 buys you until Mar 27, 2027, and 1.37 (released Oct 1) gets you to Dec 2027.
- You can set the cluster upgrade policy to STANDARD so it won't drop into extended support, but then it auto-upgrades at end of standard support instead.

Before upgrading, the usual: check for removed APIs (pluto, or EKS Upgrade Insights in the console), bump add-ons (VPC CNI, CoreDNS, kube-proxy), and remember node groups can only be a limited number of minor versions behind the control plane.

Disclosure: I built a free tracker with these dates plus RDS, Aurora, Lambda, etc. It refreshes daily from endoflife.date and AWS pricing: https://eolwatch.pages.dev. Happy to fix anything that's wrong.


r/kubernetes • • 10h ago

Declare a team Hermes agent in a manifest, run it on Kubernetes

Post image
0 Upvotes

Problem state

Every team in my company started building its own AI agent and they were getting more out of control. Most use cases were similar: code review or doc Q&A, the kind of thing an general agent handles fine. The bigger issue was not the count, it was the state. What is that agent even doing? Which skills got installed on it, by whom? All of that lived in config files inside pods. So I've decided to build a platform to address it.

Components

This platform consist of two components

  • Web: User-facing web server. It manages Hermes agents.
  • Custom resource operator: Reconcile a HermesAgent custom resource to manage Hermes agents.

State outside the pod

The general agent we standardized on is Hermes. It is a personal agent: config.yaml plus skills, plugins, and cron jobs installed via commands, all stored in local files. Powerful for personal use, but hard for a team, because state inside a pod is invisible state.

An agent needs config.yaml, secrets, network, storage and etc. Kubernetes already has a mechanism for each, so I decided to declares agent state in a CRD. The operator

  • config.yaml comes from a ConfigMap the operator mounts
  • skills and plugins are listed by identifier in the spec, and init containers install them before the main container starts
  • pip/npm packages pre-install the same way

Ex) HermesAgent custom resource

apiVersion: agents.hermeum.app/v1alpha1
kind: HermesAgent
metadata:
  name: code-review-agent
spec:
  hermes:
    config:
      raw:
        model:
          default: glm-5.3
          provider: ollama-cloud
        platforms:
          webhook:
            extra: ...
    workspace:
      files:
        SOUL.md: You are a pragmatic repository maintainer ...
    storage:
      persistence:
        enabled: true
        size: 5Gi

Now, the agent is declared in a manifest and the operator keeps it in sync. The state of Hermes is configurable from outside the pod.

Hide the infra

The CRD carries infra config too: storage, networking, security. But most users do not want any of it. Hermeum defines a thin agent spec holding only the core settings (config, skills, plugins, crons) plus an agent type field. A mutating admission webhook patches the HermesAgent resource at creation time, filling in the infra fields that match the type. The agent spec no longer touches infrastructure.

Ex) Agent spec

name: Hermeum GitHub Maintainer
description: Maintains hermeum/hermeum on ...
type: small       # <- This is the agent type. The admission server patches the storage and networking fields
soul: You are a pragmatic repository maintainer ...
config:
  model:
    provider: ollama-cloud
    default: glm-5.3
  platforms:
    webhook:
      extra: ...

And the greatest thing of management via manifesto is we can leverage the chatbot to create and manage any Hermes agent we want. The chatbot in the platform write up the manifest so non-dev members are able to create their own agent.

What it left us with

Every agent and its state are visible in one place. We raised agent visibility to tackle the agent sprawl problem.

Questions and criticism welcome. I am specifically curious how others here are handling per-agent config drift.


r/kubernetes • • 1d ago

Sidecar, service, or application middleware for data protection?

19 Upvotes

Suppose a Kubernetes-based application needs to protect sensitive fields before requests reach external APIs or AI services.

There are a few architectural options:

A sidecar that handles requests close to each workload

A shared service that centralizes tokenization and policy enforcement

Middleware integrated directly into the application

A sidecar might simplify adoption, but introduces resource overhead and deployment complexity. A shared service can centralize policy, but creates network dependencies and needs careful scaling. Middleware gives control but requires application changes.

For teams running production workloads, which approach would you choose, and what failure modes would you consider first?

I'm particularly interested in latency, availability, and policy consistency.


r/kubernetes • • 17h ago

Most K8s outages aren't in your logs, they're in your values.yaml

0 Upvotes

The pitch for AI SRE tools in here always focuses on alert correlation: taking 50 firing Prometheus alerts and summarizing them in Slack.

But alert storms are almost always just downstream symptoms. When a consumer backs up because someone pushed a bad memory limit in Helm or a secret didn't sync properly, an LLM looking at pod logs and metrics will just confirm that the pod is restarting and the queue is full. It can't diagnose the actual failure because the cause lives in deployment history and manifest drift, not in runtime telemetry.

Automated troubleshooting only becomes useful when it can query recent GitOps diffs, environment baselines, and workload ownership instead of just grepping container logs. Without that context, alert correlation just tells you things are on fire in slightly nicer English.


r/kubernetes • • 2d ago

Longhorn fails to mount encrypted volume

3 Upvotes

Hey :) I'm trying to create an encrypted Longhorn volume on a NixOS node. The problem is, that it fails. I tried searching online but I couldn't find any helpful issues/discussions/articles.

The errors are:

Warning  FailedMount             34m                kubelet                  MountVolume.MountDevice failed for volume "pvc-cb2e2720-36bb-4640-bf19-dab12812819c" : rpc error: code = Internal desc = failed to encrypt device /dev/longhorn/pvc-cb2e2720-36bb-4640-bf19-dab12812819c with LUKS: failed after 10 attempts to refresh stale namespace directory: timeout executing: /usr/bin/nsenter [nsenter --mount=/host/proc/8419/ns/mnt --ipc=/host/proc/8419/ns/ipc cryptsetup -q luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --key-size 256 --pbkdf argon2i --pbkdf-force-iterations 200000 --pbkdf-memory 0 /dev/longhorn/pvc-cb2e2720-36bb-4640-bf19-dab12812819c -d -]

Warning  FailedMount             3s (x24 over 34m)  kubelet                  MountVolume.MountDevice failed for volume "pvc-cb2e2720-36bb-4640-bf19-dab12812819c" : rpc error: code = Internal desc = failed after 10 attempts to refresh stale namespace directory: failed to execute: /usr/bin/nsenter [nsenter --mount=/host/proc/8419/ns/mnt --ipc=/host/proc/8419/ns/ipc cryptsetup luksOpen /dev/longhorn/pvc-cb2e2720-36bb-4640-bf19-dab12812819c pvc-cb2e2720-36bb-4640-bf19-dab12812819c -d -], output , stderr No usable keyslot is available.: exit status 1

I already thought of a PATH issue, because NixOS uses non-standard locations for it's binaries but wouldn't the error contain something like "no such file or directory" or "couldn't be found" then? (All containers in the longhorn-system namespace have a kyverno policy adding the NixOS directories to the PATH as suggested by the NixOS wiki.)

If i do cryptsetup luksDump on the volumes the key slot section is empty. (I don't know if it matters but i thought it might help) I also searched for luks or nsenter in the Longhorn manager logs. There are no occurrences.

Does anyone here have an idea what might cause the issue? I've tried fixing it for hours now and I'm really out of options. I appreciate any help!


r/kubernetes • • 1d ago

Why "vibecoding" infrastructure is an existential risk: lessons from 30 years on call

0 Upvotes

The default advice in cloud-native engineering has become: "Just click a button in EKS or GKE and pay the bill."

That works until your compute requirements grow, your managed egress costs eclipse your engineering payroll, or you encounter a networking failure inside a managed control plane that you have zero visibility into.

For our production platform architecture, we deliberately went sovereign: bare-metal Proxmox VE hypervisors across segregated failure domains, provisioned from Stage Zero up to autonomous Day-2 operations.

Here is what the stack looks like when you refuse to rely on cloud magic:

- Stage Zero: Automated Ubuntu golden images built via cloud-init with identity sanitation. Idempotent bootstrap runners that can partially fail and resume cleanly.

- HA Endpoint: Dual HAProxy + Keepalived virtual IPs fronting three stacked control-plane nodes. We learned the hard way why "kubeadm init" must remain a deliberate manual operation, how a forgotten SAN in certSANs blows up worker joins, and how to recover an etcd cluster suffering from phantom limb syndrome after an ungraceful node crash.

- eBPF Dataplane: Cilium without kube-proxy. Resolving the infamous Jinja2 "trim_blocks" newline collision that threw CoreDNS into a forwarding loop with systemd-resolved.

- Private Supply Chain: Dedicated Harbor external to the cluster, distributed MinIO S3 object storage, and CloudNativePG for high-availability PostgreSQL with automated node fencing and split-brain prevention.

- Declarative Reconciliation: ArgoCD in an App-of-Apps pattern, including the exact protocol for adopting legacy resources without controller reconciliation wars against Ansible.

And at the very top: cluster-medic, an autonomous triage agent running in AWX that parses CI lint failures, generates diffs, and submits PRs—held in check by a structural scope fence that physically prevents it from mutating RBAC or Terraform state.

I've documented the entire architecture, complete with runnable reproduction code for every failure mode, in "Don't Trust. Don't Fear. Don't Beg: Infrastructure Engineering with AI":

https://www.amazon.com/dp/B0HNGT7GR7


r/kubernetes • • 2d ago

Kubernetes event-banglore oct 31st

11 Upvotes

Anyone attending kubernetes Banglore meet-up event by open community groups on 31st October?


r/kubernetes • • 1d ago

Terraform not deleting the nodes created by Karpenter !!!

0 Upvotes

Hello guys,

So I have implemented a personal project in which I have provisioned AWS EKS architecture, bootstrapped flux through terraform and then flux reconciles everything including Karpenter. Terraform is handling the IRSA part and then pass iam role arn of controller and node iam role name through configmap terraform resource.

How should I configure so that Karpenter nodes are also deleted automatically. Found that I should delete nodeclaim’s first and then terraform destroy but I want to automate this.


r/kubernetes • • 3d ago

How does your organisation handle CI/CD and image tagging for microservices?

72 Upvotes

Hi everyone,

I’m trying to understand how different organisations design their CI/CD workflows for microservices, particularly the deployment process after a Docker image is pushed to a container registry like JFrog Artifactory.

I have a few questions:

Image tagging strategy: Do you use Git commit SHA, build number, semantic versioning, or any other strategy? How do you promote the same image across QA, staging, and production?

Deployment workflow: Do you handle deployments entirely through Jenkins pipelines, or do you use a GitOps approach with Argo CD, where image tags are updated in a Git repository and Argo CD syncs the changes?

Helm and manifests: If you use Argo CD, how do you manage deployment manifests and Helm charts? Does Jenkins update the image tag in the Helm values file, or is this handled differently?

Progressive deployments: Do you use Argo Rollouts with Argo CD for canary or blue-green deployments, or do you manage rollout strategies directly through Kubernetes deployments?

End-to-end flow: How does the overall process work in your organisation, from code commit and image build to deployment in production?

I’m particularly interested in understanding the different approaches organisations take and the reasoning behind their choices.

Would appreciate it if you could share your workflow or experience. Thanks!


r/kubernetes • • 3d ago

Kubernetes Events and Controller design

Thumbnail
packagemain.tech
59 Upvotes

r/kubernetes • • 3d ago

We're running a student SRE hackathon with real Grafana dashboards, logs and traces. Round 1 is online till 18 Oct

12 Upvotes

GDG on Campus IIIT Nagpur. We're running **KEEP ALIVE '26**, a national incident-response hackathon for students, at TantraFiesta 2026.

**What's different:** you don't build an app. Your team gets a broken microservices system's alerts, Grafana dashboards, logs and traces, works out what broke and why, and presents the fix. It's what an on-call SRE does on a bad night.

- **Who:** UG, PG and diploma students, teams of 2–3 from the same college

- **Level:** 6–12 months of DevOps learning; no production experience needed

- **Round 1:** a 30-minute online team assessment on Unstop, open till Sun 18 Oct, 11:59 PM IST

- **Finale:** top 15 teams at IIIT Nagpur on 26 Oct

- **Prizes:** ₹50,000 prize pool (₹25,000 cash + goodies for every finalist)

- **Partners:** Grafana (Official Platform Partner), CNCG Noida (Community Partner)

Register: https://unstop.com/hackathons/keep-alive-26-iiitn-1766226

Happy to answer anything in the comments, including how the incident platform works.


r/kubernetes • • 3d ago

Beyond Kubernetes at Modal: How to Scale 1 Million Concurrent Sandboxes in Seconds

Thumbnail
infoq.com
39 Upvotes

They also note that overcoming these limitations is feasible, but requires "serious work", including rewriting or replacing etcd and parallelizing the scheduling algorithm.

In this case, can you see a world where there'll be a version of etcd or other components for reinforcement learning tasks and/or anything involving sandbox creation at scale? Or do you think a load of companies, like Modal, are just going to rewrite each of these components until they work for their use case? Genuinely curious.


r/kubernetes • • 3d ago

PSA: since 1.35 the kubelet refuses to start on cgroup v1 nodes. One-liner to check every node without SSH

30 Upvotes

Since v1.35 the kubelet setting failCgroupV1 defaults to true, so on a node still running cgroup v1 the kubelet does not start. kubeadm's SystemVerification preflight also errors on init/join/upgrade once the kubelet is 1.35+. On a control-plane node that means the static pods (API server, etcd) do not come back after a reboot either.

Check a node:

stat -fc %T /sys/fs/cgroup/

cgroup2fs = v2, fine. tmpfs = v1.

Check every node from your laptop, no SSH:

for n in $(kubectl get nodes -o name); do
  printf "%s " "$n"
  kubectl debug "$n" -n default -q -i --profile=general --image=busybox \
    -- chroot /host stat -fc %T /sys/fs/cgroup
done

Two gotchas from testing it on a 1.35 kind cluster:

  • Keep the chroot /host. Busybox's own stat does not know the cgroup2 magic and prints UNKNOWN on a healthy v2 node.
  • It leaves one node-debugger-* pod per node behind: kubectl get pods -n default -o name | grep node-debugger | xargs kubectl delete -n default

Defaults to v1: CentOS 7, RHEL 7/8, Ubuntu 18.04/20.04, Amazon Linux 2. Most of those ship a kernel below the documented 5.8 minimum, and AWS does not support v2 on AL2 at all, so a kernel argument will not fix them. They need a new OS image.

failCgroupV1: false is the escape hatch; KEP-5573 slates removal for no earlier than 1.38.

I wrote up the full checklist (requirements, driver checks, in-place switch vs replace) here: https://saipisey.com/blog/cgroup-v1-kubelet-check

Happy to be corrected if your distro behaves differently.


r/kubernetes • • 3d ago

Linux CPU Limits Explained: cpu.weight vs cpu.max, Quota, Period & Throttling (part2)

Thumbnail
youtu.be
4 Upvotes

r/kubernetes • • 2d ago

AI Agents Are Having Their Kubernetes Moment 👀

Thumbnail
0 Upvotes

r/kubernetes • • 2d ago

PSA: EKS charges 6× once a cluster falls out of standard support. I built a checker for EKS/AKS/GKE/OpenShift support dates and costs

0 Upvotes

Quick reminder that bit a team I know: when an EKS version leaves standard support (about 14 months after release), extended support starts automatically and the control plane goes from $0.10 to $0.60 per cluster-hour. That’s roughly +$365/month per cluster, and it shows up on the bill before anyone notices.

The other clouds handle it differently:

  • EKS: extended support is automatic, $0.60/hr, for up to 12 more months, then AWS force-upgrades the control plane.
  • AKS: staying supported past community support needs Long-Term Support, which requires the Premium tier ($0.60/hr vs $0.10 Standard). Without it, you’re simply unsupported.
  • GKE: only clusters on the Extended release channel get extended support, at +$0.50/hr. Everything else gets auto-upgraded.
  • On-prem (kubeadm, k3s, RKE2, Talos): no fee, but upstream patches stop at end of life, so you’re on your own for CVEs.

I got tired of checking four lifecycle pages, so I built a small tool. You paste your clusters like this:

prod: eks 1.33 x3
staging: aks 1.33
analytics: gke 1.34
onprem: k3s 1.31
openshift 4.20

and it tells you the support phase, days left, what to upgrade to, and what extended support costs. Real output for that example:

Amazon EKS 1.33 (3 clusters) is in extended support (about $1,095/month extra) until 2027-07-29, then AWS upgrades it automatically. Upgrade to 1.37 (newest) or at least 1.34.

Kubernetes (upstream / on-prem) 1.31 is past end of support (ended 2025-11-11). Upgrade to 1.34.

That example alone has about $1,800/month in possible extended-support fees.

You can run it on a weekly schedule with Slack or webhook alerts at 90/30/7 days. It only pings you when something changes, not every run. It also covers OpenShift (Full, Maintenance, then EUS) and Rancher. Dates come from endoflife.date, which tracks the official calendars.

It runs on Apify: https://apify.com/cobalt_relay/kubernetes-support-radar
($0.02 per cluster line, free to try right now).

Curious how others track this. Calendar reminders? Renovate? Something in your IaC pipeline?


r/kubernetes • • 3d ago

Self-Hosted Databricks Alternative: Homelab Data Lakehouse

Post image
1 Upvotes

r/kubernetes • • 4d ago

Two speaker sessions at next NYC IRL meetup - join us on Thursday, 10/29!

10 Upvotes

Happy Autumn k8s folks! (Unless you're down under then Happy Spring~)

Join us on Thursday, 10/29 for another double-header meetup and you'll get to hear from Lesley Cordero and Michael Guarino.

👀 Lesley will be leading a session on "Who Watches the Watchers? Data Governance for Observability"

Lesley's Session Abstract: As organizations invest more in observability, application telemetry (metrics, logs, and traces) has become voluminous and operationally critical. As applications decompose into microservices, silos and telemetry gaps proliferate. We’ll explore data governance for application telemetry: shared specifications, standard context propagation, and standardized platform components for instrumentation, collection, and analysis. We’ll discuss real-world risks and tradeoffs around privacy, cost, access control, and data lifecycle management, alongside strategies for balancing developer productivity with governance.

✍️ Michael will share lessons from rewriting Prometheus / Loki / Tempo in Rust.

Michael's Session Abstract: We recently did a major spike on rewriting the grafana LGTM stack from go to rust, on top of a new object store native database slatedb. We'll go into some lessons learned, which spans diving into the internals of the new breed of object store backed datastores and pushing agentic development to its limit.

RSVP at https://luma.com/05srus23

Let me know if you have any questions - this is a free event and we welcome new folks :)


r/kubernetes • • 4d ago

Building your own Kubernetes cluster once is still worth doing

94 Upvotes

Managed Kubernetes makes working in Kubernetes easier.

But I still think anyone learning Kubernetes seriously should build at least one cluster using kubeadm.

It helps you understand what is behind managed clusters like EKS, AKS, or GKE.

While setting up, you will deal with things like:

  • container runtime
  • kubelet
  • control plane bootstrap
  • CNI
  • certificates
  • worker node joining
  • kubeconfig
  • static control plane Pods

Once you do it manually, everything in Kubernetes makes much more sense.

Troubleshooting also becomes easier because you understand the backend that normally gets hidden from you.

What do you guys think?


r/kubernetes • • 4d ago

How do you test your addons/apps before merging argocd?

9 Upvotes

Currently at work we have an argocd cluster with all our clusters. We have our clusters split with environments.

When we need to test our changes before opening a pr to merge we have to create a whole new cluster that runs argo on it. Making sure it deploys as it should. We do this so it's a 1:1 with how our live clusters are like. However, it takes 45 min to spin up a new cluster. No problem, just have one cluster we all use but then we run into a problem that if multiple people are testing changes to their addon, we are not testing only our changes.

All the blog posts online just run a local cluster with Argo to test. This wouldn't mimic our vpc, iam roles, etc.

So how do all of you test your changes with argocd?


r/kubernetes • • 4d ago

cgroup v2 Basics: The Tree, Controllers & subtree_control (part1)

Thumbnail
youtube.com
5 Upvotes