---
title: "Introducing Fly Kubernetes"
description: "Fly.io introduces Fly Kubernetes (FKS), an implementation of Kubernetes that runs on its globally distributed container platform for users who want Kubernetes tooling and declarative orchestration. Fly.io says its earlier Nomad-based approach struggled with global scheduling at more than 200,000 applications and with placing workloads in users’ requested regions, so it moved state to individual workers and exposed the Fly Machines API, whose placement requests fail quickly rather than retry elsewhere. FKS combines K3s with Virtual Kubelet, mapping pod lifecycle operations to Fly Machines API calls while running K3s and Virtual Kubelet on one Fly Machine. A generated kubeconfig enables kubectl access, and Pods run on separate Fly Machines as the platform scales the cluster. The design provides declarative replica, autoscaling, and volume definitions plus automatic recovery for failed Machines, while retaining Fly Machines’ trade-off of failing when requested placement is unavailable."
---

# Introducing Fly Kubernetes

[Fly.io](https://yomu.fyi/company/fly-io) · Dec 18, 2023

**Type:** Announcement

## Summary

Fly.io introduces Fly Kubernetes (FKS), an implementation of Kubernetes that runs on its globally distributed container platform for users who want Kubernetes tooling and declarative orchestration. Fly.io says its earlier Nomad-based approach struggled with global scheduling at more than 200,000 applications and with placing workloads in users’ requested regions, so it moved state to individual workers and exposed the Fly Machines API, whose placement requests fail quickly rather than retry elsewhere. FKS combines K3s with Virtual Kubelet, mapping pod lifecycle operations to Fly Machines API calls while running K3s and Virtual Kubelet on one Fly Machine. A generated kubeconfig enables kubectl access, and Pods run on separate Fly Machines as the platform scales the cluster. The design provides declarative replica, autoscaling, and volume definitions plus automatic recovery for failed Machines, while retaining Fly Machines’ trade-off of failing when requested placement is unavailable.

## Context

Fly.io says its Nomad-based global scheduler faced scaling challenges across more than 200,000 applications and could place workloads in nearby regions rather than the specific regions requested by users. The company also wanted to offer Kubernetes tooling to projects for which Kubernetes is a better fit.

## Approach / What changed

Fly Kubernetes combines K3s with Virtual Kubelet on top of Fly.io. K3s and Virtual Kubelet run on a single Fly Machine, while Virtual Kubelet maps Kubernetes pod operations to the Fly Machines API and causes Pods to run on individual Fly Machines. A generated kubeconfig provides access through kubectl.

## Takeaways

- The Fly Machines API keeps application state local to workers and uses a market-style scheduler that bids on regional resources instead of maintaining a globally consistent scheduler state.
- FKS maps Virtual Kubelet pod lifecycle operations, including CreatePod and UpdatePod, to Fly Machines API endpoints for creating and updating Machines.
- Kubernetes deployments declare replica counts, autoscaling rules, and volumes, while Kubernetes automatically works to restore Machines to the declared state when they go down.

**Tags:** [Architecture](https://yomu.fyi/topic/architecture), [Distributed Systems](https://yomu.fyi/topic/distributed-systems), [Kubernetes](https://yomu.fyi/topic/kubernetes)

- Source: [Fly.io](https://fly.io/blog/fks)
- Source URL: https://fly.io/blog/fks
- Ingested by Yomu: 2026-09-03T01:23:32.292Z

[Read original post](https://fly.io/blog/fks)
