diff --git a/about/pricing.html.markerb b/about/pricing.html.markerb
index 501c3b355b..7fbb66f497 100644
--- a/about/pricing.html.markerb
+++ b/about/pricing.html.markerb
@@ -208,13 +208,6 @@ Static egress IPs for Machines provide dedicated outbound IP addresses for your
[Community support](https://community.fly.io/) is included for all customers, regardless of usage level.
You can get access to a support plan by purchasing a Standard ($29/month), Premium ($199/month), or Enterprise (starting at $2500/month) package in the **Support** section of your dashboard. For more about Support, see [Support at Fly.io](/docs/about/support/).
-## Fly Kubernetes
-
-[Fly Kubernetes](/docs/kubernetes/) (FKS) is a managed Kubernetes service that runs on Fly.io.
-
-* $75/month per cluster
-* Plus the cost of [compute](#compute) and [Fly volumes](#persistent-storage-volumes) that you create
-
## Extensions
Fly.io offers managed services operated by third parties, such as [Tigris Object Storage](/docs/tigris) and [Upstash Redis](/docs/upstash/redis/).
diff --git a/flyctl/cmd/fly_extensions_kubernetes.md b/flyctl/cmd/fly_extensions_kubernetes.md
deleted file mode 100644
index 8261da469b..0000000000
--- a/flyctl/cmd/fly_extensions_kubernetes.md
+++ /dev/null
@@ -1,32 +0,0 @@
-Provision and manage Kubernetes clusters
-
-
-## Usage
-~~~
-fly extensions kubernetes [command] [flags]
-~~~
-
-## Available Commands
-* [create](/docs/flyctl/extensions-kubernetes-create/) - Provision a Kubernetes cluster for an organization
-* [destroy](/docs/flyctl/extensions-kubernetes-destroy/) - Permanently destroy a Kubernetes cluster
-* [list](/docs/flyctl/extensions-kubernetes-list/) - List your Kubernetes clusters
-* [save-kubeconfig](/docs/flyctl/extensions-kubernetes-save-kubeconfig/) - Save the kubeconfig file of your cluster
-
-## Options
-
-~~~
- -h, --help help for kubernetes
-~~~
-
-## Global Options
-
-~~~
- -t, --access-token string Fly API Access Token
- --debug Print additional logs and traces
- --verbose Verbose output
-~~~
-
-## See Also
-
-* [fly extensions](/docs/flyctl/extensions/) - Extensions are additional functionality that can be added to your Fly apps
-
diff --git a/flyctl/cmd/fly_extensions_kubernetes_create.md b/flyctl/cmd/fly_extensions_kubernetes_create.md
deleted file mode 100644
index 825d7685da..0000000000
--- a/flyctl/cmd/fly_extensions_kubernetes_create.md
+++ /dev/null
@@ -1,30 +0,0 @@
-Provision a Kubernetes cluster for an organization
-
-
-## Usage
-~~~
-fly extensions kubernetes create [flags]
-~~~
-
-## Options
-
-~~~
- -h, --help help for create
- -n, --name string The name of your cluster
- -o, --org string The target Fly.io organization
- --output string The output path to save the kubeconfig file
- -r, --region string The target region (see 'flyctl platform regions')
-~~~
-
-## Global Options
-
-~~~
- -t, --access-token string Fly API Access Token
- --debug Print additional logs and traces
- --verbose Verbose output
-~~~
-
-## See Also
-
-* [fly extensions kubernetes](/docs/flyctl/extensions-kubernetes/) - Provision and manage Kubernetes clusters
-
diff --git a/flyctl/cmd/fly_extensions_kubernetes_destroy.md b/flyctl/cmd/fly_extensions_kubernetes_destroy.md
deleted file mode 100644
index 3e0bd94ebe..0000000000
--- a/flyctl/cmd/fly_extensions_kubernetes_destroy.md
+++ /dev/null
@@ -1,26 +0,0 @@
-Permanently destroy a Kubernetes cluster
-
-## Usage
-~~~
-fly extensions kubernetes destroy [name] [flags]
-~~~
-
-## Options
-
-~~~
- -h, --help help for destroy
- -y, --yes Accept all confirmations (also --auto-confirm)
-~~~
-
-## Global Options
-
-~~~
- -t, --access-token string Fly API Access Token
- --debug Print additional logs and traces
- --verbose Verbose output
-~~~
-
-## See Also
-
-* [fly extensions kubernetes](/docs/flyctl/extensions-kubernetes/) - Provision and manage Kubernetes clusters
-
diff --git a/flyctl/cmd/fly_extensions_kubernetes_list.md b/flyctl/cmd/fly_extensions_kubernetes_list.md
deleted file mode 100644
index bbdf02c50c..0000000000
--- a/flyctl/cmd/fly_extensions_kubernetes_list.md
+++ /dev/null
@@ -1,25 +0,0 @@
-List your Kubernetes clusters
-
-## Usage
-~~~
-fly extensions kubernetes list [flags]
-~~~
-
-## Options
-
-~~~
- -h, --help help for list
-~~~
-
-## Global Options
-
-~~~
- -t, --access-token string Fly API Access Token
- --debug Print additional logs and traces
- --verbose Verbose output
-~~~
-
-## See Also
-
-* [fly extensions kubernetes](/docs/flyctl/extensions-kubernetes/) - Provision and manage Kubernetes clusters
-
diff --git a/flyctl/cmd/fly_extensions_kubernetes_save-kubeconfig.md b/flyctl/cmd/fly_extensions_kubernetes_save-kubeconfig.md
deleted file mode 100644
index 09dd11820d..0000000000
--- a/flyctl/cmd/fly_extensions_kubernetes_save-kubeconfig.md
+++ /dev/null
@@ -1,26 +0,0 @@
-Save the kubeconfig file of your cluster
-
-## Usage
-~~~
-fly extensions kubernetes save-kubeconfig [cluster name] [flags]
-~~~
-
-## Options
-
-~~~
- -h, --help help for save-kubeconfig
- --output string The output path to save the kubeconfig file
-~~~
-
-## Global Options
-
-~~~
- -t, --access-token string Fly API Access Token
- --debug Print additional logs and traces
- --verbose Verbose output
-~~~
-
-## See Also
-
-* [fly extensions kubernetes](/docs/flyctl/extensions-kubernetes/) - Provision and manage Kubernetes clusters
-
diff --git a/index.html.md b/index.html.md
index e8b443b7a0..27fe6d5107 100644
--- a/index.html.md
+++ b/index.html.md
@@ -35,7 +35,6 @@ brew install flyctl
-Fly Kubernetes is in closed beta and not recommended for critical production usage. To report issues or provide feedback, email us at beta@fly.io.
-
-
-To create a Kubernetes cluster, run:
-
-```cmd
-fly ext k8s create [--name | --org | --region ]
-```
-
-Once a cluster is provisioned, it will return a kubeconfig that can be used to connect to your cluster's Kubernetes API server using kubectl.
-
-For example:
-
-```yaml
-apiVersion: v1
-clusters:
- - name: fks-flyio-fksdemo
- cluster:
- certificate-authority-data: ...
- server: https://fks-flyio-fksdemo.flycast:6443
- extensions:
- ...
- ...
-contexts:
- - context:
- cluster: fks-flyio-fksdemo
- user: default
- name: default
-current-context: default
-kind: Config
-preferences: {}
-users:
- - name: default
- user:
- ...
- ...
-```
-
-Your cluster is accessible over your organization's [private WireGuard network](/docs/reference/private-networking). To connect to your cluster, you need a WireGuard configuration.
-
-Follow the [Private Network VPN instructions](/docs/networking/private-networking/#private-network-vpn) to set up a permanent WireGuard connection to your Fly.io IPv6 private network.
-
-Once set up, you can use `kubectl`:
-
-```
-> kubectl get ns
-NAME STATUS AGE
-kube-public Active 22d
-kube-node-lease Active 22d
-default Active 22d
-kube-system Active 22d
-```
-
-## Related topics
-
-- [Connect to an FKS cluster](/docs/kubernetes/connect-clusters/)
-- [Configure FKS Services](/docs/kubernetes/services)
diff --git a/kubernetes/connect-clusters.html.markerb b/kubernetes/connect-clusters.html.markerb
deleted file mode 100644
index 1f9736cc85..0000000000
--- a/kubernetes/connect-clusters.html.markerb
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Connect to an FKS cluster
-layout: docs
-toc: false
-nav: firecracker
----
-
-
-Fly Kubernetes is in closed beta and not recommended for critical production usage. To report issues or provide feedback, email us at beta@fly.io.
-
-
-Fly Kubernetes clusters are accessible over an organization's [private WireGuard network](/docs/reference/private-networking). To connect to a cluster, you need a WireGuard configuration.
-Follow the [Private Network VPN instructions](/docs/networking/private-networking/#private-network-vpn) to set up a permanent WireGuard connection to your Fly.io IPv6 private network.
-
-To connect to your cluster, you need a kubeconfig file. These are generated when your [cluster is created](/docs/kubernetes/clusters/). They can also be retrieved using `flyctl`.
-First, we need our cluster name:
-
-```
-> fly ext k8s ls
-NAME ORG PRIMARY REGION
-fks-flyio-fksdemo flyio iad
-```
-
-Then, we can use `flyctl` to save our kubeconfig to disk. It is automatically saved with the name `kubeconfig` in the current directory
-
-```
-> fly ext k8s save-kubeconfig
-> ls
-kubeconfig somefile.txt
-```
-
-With the kubeconfig file, you can connect to your cluster. To make life easier, you can move the kubeconfig file to the default location kubectl searches for it, `$HOME/.kube`, under the name `config`.
-Alternatively set the environment variable `KUBECONFIG` to the path to the kubeconfig file
-
-```
-export KUBECONFIG=/path/to/kubeconfig
-```
-
-Once set up, you can use `kubectl`:
-
-```
-> kubectl get ns
-NAME STATUS AGE
-kube-public Active 22d
-kube-node-lease Active 22d
-default Active 22d
-kube-system Active 22d
-```
-
-## Related topics
-
-- [Create an FKS cluster](/docs/kubernetes/clusters/)
-- [Configure FKS Services](/docs/kubernetes/services)
diff --git a/kubernetes/fks-features.html.markerb b/kubernetes/fks-features.html.markerb
deleted file mode 100644
index 9377cfb73e..0000000000
--- a/kubernetes/fks-features.html.markerb
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: Fly Kubernetes features
-layout: docs
-nav: firecracker
----
-
-
-
-
-
-Fly Kubernetes benefits from the features of the Fly.io platform.
-
-## Fly.io infrastructure
-
-FKS is built on top of Fly.io infrastructure:
-
-* Compute is backed by [Fly Machines](/docs/machines/), our fast-launching VMs built with Firecracker.
-* Volumes are handled with [Fly Volumes](/docs/volumes/); local, fast NVMe drives.
-* Networking is built on our [internal WireGuard mesh](/docs/networking/private-networking/#private-network-vpn) with routing performed by Fly Proxy.
-
-## Cluster scalability
-
-Pods are scheduled across our fleet of bare-metal servers, not limited to a specific node. Workloads are automatically distributed across the fleet, enabling a cluster to scale with ease.
-
-## Security
-
-With Fly Kubernetes, you get all the security benefits of our platform.
-
- * Private network traffic flows over our internal WireGuard mesh, ensuring it is encrypted.
- * FKS clusters are secured within a private VPN.
- * Compute is built on Firecracker microVMs — lightweight and secure virtual machines. This provides improved isolation guarantees ensuring your application code is safe.
- * Volumes are encrypted at rest for additional protection of the data on the volume.
- * Secrets are automatically stored in an encrypted vault.
-
-## Simple and secure client authentication
-
-Connect to your cluster using kubectl. Clients are authenticated with our API tokens. They expire after an hour and are rotated automatically after expiration.
-
-## Not supported
-
-There are a few features we don't support yet but are part of the roadmap:
-
- * Sidecars and init processes
- * EmptyDir volumes
- * Horizontal pod autoscaling
- * Network policies
- * CronJob
-
-Features we don't support:
-
- * Node affinity
- * Inter-pod (anti) affinity
- * DaemonSets
-
-## Pricing
-
-See the [pricing page](/docs/about/pricing/#fly-kubernetes) for information on FKS pricing.
diff --git a/kubernetes/fks-quickstart.html.markerb b/kubernetes/fks-quickstart.html.markerb
deleted file mode 100644
index 1b02c5c670..0000000000
--- a/kubernetes/fks-quickstart.html.markerb
+++ /dev/null
@@ -1,162 +0,0 @@
----
-title: Fly Kubernetes Quickstart
-layout: docs
-nav: firecracker
----
-
-
-
-
-
-
-Fly Kubernetes is in closed beta and not recommended for critical production usage. To report issues or provide feedback, email us at beta@fly.io.
-
-
-To create a Kubernetes cluster, run:
-
-```cmd
-fly ext k8s create
-```
-This will start the provisioning process. You'll be asked for a cluster name, the organization, and the region in which to create the cluster.
-
-Once a cluster is provisioned, it will return a kubeconfig that can be used to connect to your cluster's Kubernetes API server using kubectl.
-
-For example:
-
-```yaml
-apiVersion: v1
-clusters:
- - name: fks-flyio-fksdemo
- cluster:
- certificate-authority-data: ...
- server: https://fks-flyio-fksdemo.flycast:6443
- extensions:
- ...
- ...
-contexts:
- - context:
- cluster: fks-flyio-fksdemo
- user: default
- name: default
-current-context: default
-kind: Config
-preferences: {}
-users:
- - name: default
- user:
- ...
- ...
-```
-
-We're going to save the output into a file named `kubeconfig` and create an environment variable `KUBECONFIG` that points to the file:
-
-```cmd
-export KUBECONFIG=/path/to/kubeconfig/file
-```
-
-Our cluster is accessible over our organization's [private WireGuard network](/docs/reference/private-networking). To connect to our cluster, we need a WireGuard configuration.
-
-Follow the [Private Network VPN instructions](/docs/networking/private-networking/#private-network-vpn) to set up a permanent WireGuard connection to your Fly.io IPv6 private network.
-
-From there, you can use standard YAML configuration to drive Kubernetes. Here's a simple deployment example from the [Kubernetes official documentation](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-a-deployment):
-
-```yaml
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: nginx-deployment
- labels:
- app: nginx
-spec:
- replicas: 3
- selector:
- matchLabels:
- app: nginx
- template:
- metadata:
- labels:
- app: nginx
- spec:
- containers:
- - name: nginx
- image: nginx:1.14.2
- ports:
- - containerPort: 80
-```
-
-This creates a `ReplicaSet` with 3 nginx pods. Using kubectl, we can apply this:
-
-```cmd
-kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml
-```
-```output
-deployment.apps/nginx-deployment created
-```
-
-We can see our deployment:
-
-```cmd
-kubectl get deployments
-```
-```output
-NAME READY UP-TO-DATE AVAILABLE AGE
-nginx-deployment 3/3 3 3 7s
-```
-
-We can view the logs of all the pods in the deployment:
-
-```cmd
-kubectl logs -l app=nginx
-```
-```output
-Pulling container image registry-1.docker.io/library/nginx:1.14.2
-Pulling container image registry-1.docker.io/library/nginx:1.14.2
-Pulling container image registry-1.docker.io/library/nginx:1.14.2
-Successfully prepared image registry-1.docker.io/library/nginx:1.14.2 (1.597714717s)
-Successfully prepared image registry-1.docker.io/library/nginx:1.14.2 (1.493016957s)
-Successfully prepared image registry-1.docker.io/library/nginx:1.14.2 (1.604003393s)
-Configuring firecracker
-Configuring firecracker
-Configuring firecracker
-...
-```
-
-## What we don't support
-
-- Multi-container pods (coming soon)
-- Network policies
-- Horizontal pod autoscaling
-- Gateway API
-- Daemon sets
-- EmptyDir volumes
-- Interactive pods (`kubectl run --interactive --tty`)
-
-On container specs, we don't support the following fields:
-
-- `workingDir`
-- `ports`
-- `livenessProbe`
-- `readinessProbe`
-- `startupProbe`
-- `resizePolicy`
-- `stdin`
-- `stdinOnce`
-- `tty`
-- `EnvVarSource.fieldRef`
-- `EnvVarSource.resourceFieldRef`
-- `volumeDevices`
-- `lifecycle`
-- `terminationMessagePath`
-- `terminationMessagePolicy`
-- `imagePullPolicy`
-- `securityContext`
-
-## Other caveats
-
-Right now we don't get logs from a single pod. If you try to get logs from a single pod, you'll get the logs from every pod in the namespace.
-
-## Related topics
-
-- [Create an FKS cluster](/docs/kubernetes/clusters/)
-- [Connect to an FKS cluster](/docs/kubernetes/connect-clusters/)
-- [Configure FKS Services](/docs/kubernetes/services)
diff --git a/kubernetes/index.html.markerb b/kubernetes/index.html.markerb
deleted file mode 100644
index d1fa72a4eb..0000000000
--- a/kubernetes/index.html.markerb
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Fly Kubernetes
-layout: docs
-toc: false
-nav: firecracker
----
-
-
-Fly Kubernetes is in closed beta and not recommended for critical production usage. To report issues or provide feedback, email us at beta@fly.io.
-
-
-Fly Kubernetes (FKS) is a fully managed Kubernetes service built on the Fly.io platform. Deploy Kubernetes clusters without the hassle of managing and operating the control plane. Learn more about [why and how we made FKS](https://fly.io/blog/fks/) in our blog.
-
-- **[Fly Kubernetes quickstart](/docs/kubernetes/fks-quickstart/):** Get up and running right away with our quickstart guide.
-
-- **[Fly Kubernetes features](/docs/kubernetes/fks-features/):** An overview of FKS benefits and supported features.
-
-- **[Create an FKS cluster](/docs/kubernetes/clusters/):** Create an FKS cluster with flyctl.
-
-- **[Connect to an FKS cluster](/docs/kubernetes/connect-clusters/):** Connect to an FKS cluster on your private network.
-
-- **[Configure FKS Services](/docs/kubernetes/services):** Configure ClusterIP and LoadBalancer services.
-
-- **[Use volumes with FKS](/docs/kubernetes/using-volumes/):** Use Fly Volumes for PersistentVolumes in FKS.
diff --git a/kubernetes/services.html.markerb b/kubernetes/services.html.markerb
deleted file mode 100644
index 27ace4ef68..0000000000
--- a/kubernetes/services.html.markerb
+++ /dev/null
@@ -1,184 +0,0 @@
----
-title: Configure FKS Services
-layout: docs
-toc: false
-nav: firecracker
----
-
-
-Fly Kubernetes is in closed beta and not recommended for critical production usage. To report issues or provide feedback, email us at beta@fly.io.
-
-
-A [Kubernetes Service](https://kubernetes.io/docs/concepts/services-networking/service/+external) exposes applications running on your cluster.
-Fly Kubernetes supports ClusterIP and LoadBalancer Services.
-
-You can create a Service with a service configuration file. Here's an example ClusterIP service:
-
-```yaml
-apiVersion: v1
-kind: Service
-metadata:
- name: fksdemo-service
-spec:
- selector:
- app: fksdemo
- ports:
- - name: http
- protocol: TCP
- port: 80
- targetPort: 8080
-```
-
-Using kubectl, create the service:
-
-```
-> kubectl apply -f service.yaml
-```
-
-To view your service:
-
-```
-> kubectl get svc
-NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
-kubernetes ClusterIP fdaa:3:dde8:0:1::3a 443/TCP 32h
-fksdemo-service ClusterIP fdaa:3:dde8:0:1::3b 80/TCP 11s
-```
-
-## Exposing Services publicly
-
-Services can be exposed to the public internet with a Service of type LoadBalancer.
-
-```
-apiVersion: v1
-kind: Service
-metadata:
- name: fksdemo-service-public
-spec:
- selector:
- app: fksdemo
- ports:
- - name: http
- protocol: TCP
- port: 80
- targetPort: 8080
- type: LoadBalancer
-```
-
-The domain name and IP address to access the Service over the internet can be found using kubectl. In the below output, the values are found
-under the `EXTERNAL-IP` column.
-
-```
-> kubectl get svc
-NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
-kubernetes ClusterIP fdaa:3:dde8:0:1::3a 443/TCP 32h
-fksdemo-service ClusterIP fdaa:3:dde8:0:1::3b 80/TCP 26m
-fksdemo-service-public LoadBalancer fdaa:3:dde8:0:1::3c fksdemo-service-public.svc.fks-default-vz5dlqz7v4ylrnpq.fly.dev,2a09:8280:1::31:ab8:0,137.66.25.254 80/TCP 8s
-```
-
-## Fly.io connection Handlers
-
-Fly.io connection handlers modify your connection before it reaches your application.
-Learn more about [connection handlers](/docs/networking/services/#connection-handlers).
-
-Connection handlers are supported with a custom annotation to a Service object. The annotations have the form:
-
-```yaml
-"service.fly.io/-handlers": ""
-```
-
-The example below adds an HTTP and TLS handler for port 443.
-
-```yaml
-apiVersion: v1
-kind: Service
-metadata:
- name: fksdemo-service
- annotations:
- "service.fly.io/https-handlers": "http,tls" # can replace https with 443
-spec:
- selector:
- app: fksdemo
- ports:
- - name: http
- protocol: TCP
- port: 80
- targetPort: 8080
- - name: https
- protocol: TCP
- port: 443
- targetPort: 8080
-```
-
-### TLS Options
-
-[TLS options](https://fly.io/docs/reference/configuration/#services-ports-tls_options) are used to configure the TLS settings
-of a service with a TLS connection handler. Fly's edge will use these settings to terminate TLS for your application. Refer
-to the [documentation](https://fly.io/docs/reference/configuration/#services-ports-tls_options) for details.
-
-TLS options are set using custom annotations. There are 3 annotations, one for each setting:
-
-
- * `service.fly.io/-tls-alpn` - Sets the ALPN for negotiation with clients. Values must be comma-separated.
- * `service.fly.io/-tls-versions` - Sets which TLS versions are allowed. Values must be comma-separated.
- * `service.fly.io/-tls-default-self-signed` - If true, serves a self-signed certificate if none exists.
-
-The most common use case for TLS options is to support gRPC. For example:
-
-```yaml
-apiVersion: v1
-kind: Service
-metadata:
- name: fksdemo-service
- annotations:
- "service.fly.io/https-handlers": "tls"
- "service.fly.io/https-tls-alpn": "h2"
-spec:
- selector:
- app: fksdemo
- ports:
- - name: http
- protocol: TCP
- port: 80
- targetPort: 8080
- - name: https
- protocol: TCP
- port: 443
- targetPort: 8080
-```
-
-## Concurrency limits
-
-[Concurrency limits](/docs/reference/configuration/#services-concurrency) are used to limit the load on your application.
-By default, the soft limit is set to 20 and the hard limit is set to 25.
-Learn more about [concurrency limits](/docs/reference/configuration/#services-concurrency).
-
-They can be configured on your Services using custom annotations. There are 3 annotations used to configure the limits:
-
- * `service.fly.io/concurrency-kind` - sets the metric used to measure concurrency
- * `service.fly.io/concurrency-limit-soft` - sets the concurrency soft limit
- * `service.fly.io/concurrency-limit-hard` - sets the concurrency hard limit
-
-Below is an example of setting this in your Service
-
-```yaml
-apiVersion: v1
-kind: Service
-metadata:
- name: fksdemo-service
- annotations:
- "service.fly.io/concurrency-kind": "connections"
- "service.fly.io/concurrency-limit-soft": 20
- "service.fly.io/concurrency-limit-hard": 25
-```
-
-## Not supported
-
-We currently do not support:
-
-* NodePort Services
-* UDP protocol
-
-## Related topics
-
-- [Create an FKS cluster](/docs/kubernetes/clusters/)
-- [Connect to an FKS cluster](/docs/kubernetes/connect-clusters/)
diff --git a/kubernetes/using-gpus.html.markerb b/kubernetes/using-gpus.html.markerb
deleted file mode 100644
index 77d0cb160a..0000000000
--- a/kubernetes/using-gpus.html.markerb
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Using GPUs with FKS
-layout: docs
-toc: false
-nav: firecracker
----
-
-
-**GPUs are deprecated and will be unavailable after August 1.**
-
-
-
-Fly Kubernetes is in closed beta and not recommended for critical production usage. To report issues or provide feedback, email us at beta@fly.io.
-
-
-GPUs are available on Fly Kubernetes. Information about our GPUs can be found in our [Fly GPUs documentation](https://fly.io/docs/gpus/#what-can-i-use-fly-gpus-for).
-
-GPUs are consumed by requesting a GPU resource, similarly to requesting `cpu` or `memory`. There is a custom resource `gpu.fly.io/` that is used to request
-GPUs. Note that:
-
-* The available GPU types are: `a10`, `l40s`, `a100-pcie-40gb` and `a100-sxm4-80gb`. Check the [documentation](https://fly.io/docs/gpus/#regions-with-gpus) for which regions they are available in.
-* Pods are deployed in the same region as your cluster. You can place your Pod in a particular region by adding a `fly.io/region: ` annotation to your Pod's metadata.
-* GPU resource requests should only specify the `limits` section.
-* You can specify CPU and memory resources alongside GPU resources. The minimum number of cores supported is 2 and the minimum amount of memory is 4096 MiB. The VMs
-deployed will always be performance Machines.
-* The valid number of GPUs you can request are: 1, 2, 4 and 8.
-* You can only request one type of GPU at a time
-
-Below is an example of a Pod with a GPU:
-
-```yaml
-apiVersion: v1
-kind: Pod
-metadata:
- name: ollama
- annotations:
- fly.io/region: ams # optional
-spec:
- containers:
- - name: ollama
- image: ollama/ollama:latest
- resources:
- limits:
- gpu.fly.io/a100-80gb: 1
-```
-
-This will deploy a GPU Machine with the size `a100-80gb` with 1 GPU core in the region `ams`.
diff --git a/kubernetes/using-volumes.html.markerb b/kubernetes/using-volumes.html.markerb
deleted file mode 100644
index 9198fb3e21..0000000000
--- a/kubernetes/using-volumes.html.markerb
+++ /dev/null
@@ -1,167 +0,0 @@
----
-title: Using volumes with FKS
-layout: docs
-toc: true
-nav: firecracker
----
-
-
-Fly Kubernetes is in closed beta and not recommended for critical production usage. To report issues or provide feedback, email us at beta@fly.io.
-
-
-Fly Kubernetes supports [persistent volumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/+external) and
-[generic ephemeral volumes](https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes+external).
-There are general considerations to keep in mind when using volumes in Fly Kubernetes:
-
-* Volumes are built on top of [Fly Volumes](/docs/volumes/). They are local NVME drives and require your Pod to be deployed in the same region as the volume.
-* Only one persistent or ephemeral volume can be mounted at a time.
-* The maximum storage size available is 500GB.
-
-## Persistent Volumes
-
-PersistentVolumes are managed through PersistentVolumeClaims (PVCs). PersistentVolumes (PVs) are tied to the lifecycle of a
-PersistentVolumeClaim. By default, creating a PVC creates an underlying PV and deleting a PVC deletes the PV bound to it.
-
-Below is an example of configuring a PersistentVolume to use with a Pod:
-
-```yaml
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
- name: myclaim
-spec:
- selector:
- matchLabels:
- region: iad
- storageClassName: flyio-volume
- accessModes:
- - ReadWriteOncePod
- resources:
- requests:
- storage: 5Gi
----
-apiVersion: v1
-kind: Pod
-metadata:
- name: nginx
-spec:
- containers:
- - name: nginx
- image: nginx:latest
- volumeMounts:
- - mountPath: "/var/www/html"
- name: mypd
- resources:
- limits:
- memory: "512Mi"
- cpu: "1"
- volumes:
- - name: mypd
- persistentVolumeClaim:
- claimName: myclaim
-```
-
-In our configuration:
-
-* The `storageClassName` must be set to either `flyio-volume` or `flyio-volume-retain`. You can view the available storage classes with `kubectl get sc`. The default StorageClass is `flyio-volume`.
-* `selector` is optional. It serves a dual purpose. First, it ensures that a PVC is bound to a PV in the region specified in the selector.
-Second, if a PVC requires dynamic provisioning of the underlying Fly Volume, it is provisioned in the specified region. If not set, the
-volume is created in the region of the cluster.
-* `accessModes` only supports `ReadWriteOncePod`.
-
-After applying the configuration, you can view the PVC and PV generated by the definition using `kubectl`.
-
-```
-> kubectl get pvc
-NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
-myclaim Bound pvc-r1plo75g59d25l0r 5Gi RWOP flyio-volume 9s
-```
-
-```
-> kubectl get pv
-NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
-pvc-r1plo75g59d25l0r 5Gi RWOP Delete Bound default/myclaim flyio-volume 55s
-```
-
-### Reclaim policy
-
-Fly Kubernetes supports both the `Delete` and `Retain` policy for PersistentVolumes.
-
-* StorageClass `flyio-volume` has a reclaim policy set to `Delete`
-* StorageClass `flyio-volume-retain` has a reclaim policy set to `Retain`
-
-By default, `flyio-volume` is used.
-
-When using the `flyio-volume-retain` StorageClass, you are responsible for deleting the PersistentVolume object and its underlying Fly Volume.
-The details of the underlying storage are found in the annotations of the PersistentVolume. Using the PV from above
-
-```
-> kubectl describe pv pvc-r1plo75g59d25l0r
-Name: pvc-r1plo75g59d25l0r
-Labels: region=iad
-Annotations: fly.io/app: fks-default-vz5dlqz7v4ylrnpq
- fly.io/region: iad
- pv.kubernetes.io/provisioned-by: volume.csi.fly.io
- volume.fly.io/id: vol_r1plo75g59d25l0r
-Finalizers: [kubernetes.io/pv-protection]
-StorageClass: flyio-volume
-Status: Bound
-Claim: default/myclaim
-Reclaim Policy: Delete
-Access Modes: RWOP
-VolumeMode: Filesystem
-Capacity: 5Gi
-Node Affinity:
-Message:
-Source:
- Type: CSI (a Container Storage Interface (CSI) volume source)
- Driver: volume.csi.fly.io
- FSType: ext4
- VolumeHandle: vol_r1plo75g59d25l0r
- ReadOnly: false
- VolumeAttributes:
-Events:
-```
-
-The annotation `fly.io/app` specifies which Fly app the volumes belongs to. The annotation `volume.fly.io/id` gives you the ID of the volume.
-You can delete the Fly Volume using `flyctl`
-
-```
-fly vol rm pvc-r1plo75g59d25l0r -a fks-default-vz5dlqz7v4ylrnpq
-```
-
-## Generic ephemeral volumes
-
-Fly Kubernetes supports ephemeral volumes through generic ephemeral volumes. It uses the same underlying PVC and PV machinery. Kubernetes
-handles creating the PVC and its corresponding PV and deleting both objects when the Pod is deleted. Below is an example of creating a Pod
-with a generic ephemeral volume:
-
-```yaml
-apiVersion: v1
-kind: Pod
-metadata:
- name: nginx
-spec:
- containers:
- image: nginx:latest
- volumeMounts:
- - mountPath: "/var/www/html"
- name: scratch-volume
- resources:
- limits:
- memory: "512Mi"
- cpu: "1"
- volumes:
- - name: scratch-volume
- ephemeral:
- volumeClaimTemplate:
- spec:
- accessModes:
- - ReadWriteOncePod
- storageClassName: "flyio-volume"
- resources:
- requests:
- storage: 5Gi
-```
-
-For generic ephemeral volumes to work as expected, `storageClassName` must be set to `flyio-volume`.
diff --git a/machines/api/apps-resource.html.markerb b/machines/api/apps-resource.html.markerb
index e37edd6a5f..21d38cd1c5 100644
--- a/machines/api/apps-resource.html.markerb
+++ b/machines/api/apps-resource.html.markerb
@@ -73,7 +73,7 @@ Machines must be associated with a Fly App. App names must be unique.
| Property | Type | Required | Description |
|-------------|---------|----------|----------------------------|
| `app_name` | string | yes | Name of the app to create |
- | `enable_subdomains` | boolean | no | Used for Fly Kubernetes. |
+ | `enable_subdomains` | boolean | no | |
| `org_slug` | string | yes | Slug of the org in which to create the app |
| `network` | string | no | Name for an IPv6 private network to segment the app onto. |
<% end %>
diff --git a/machines/api/machines-resource.html.markerb b/machines/api/machines-resource.html.markerb
index 34dce42672..60c2a16746 100644
--- a/machines/api/machines-resource.html.markerb
+++ b/machines/api/machines-resource.html.markerb
@@ -1141,9 +1141,9 @@ Properties of the `config` object for Machine configuration. See [Machine proper
**`dns`:**
- - `nameservers`: Used for Fly Kubernetes.
- - `searches`: Used for Fly Kubernetes.
- - `options`: Used for Fly Kubernetes.
+ - `nameservers`: Nameservers option in resolve.conf, used to set the nameservers for DNS queries
+ - `searches`: Space-separated list of domains appended to unqualified hostnames until a lookup succeeds
+ - `options`: DNS resolver options. See [resolv.conf man page](https://www.man7.org/linux/man-pages/man5/resolv.conf.5.html)
- `dns_forward_rules`: Used for dedicated hosts.
- `skip_registration`: boolean - If true, do not register the Machine's 6PN IP with the internal DNS system.
@@ -1228,7 +1228,7 @@ You cannot change which volume a Machine is attached to by updating the Machine'
- `entrypoint`: An array of strings. The process that will run.
- `cmd`: An array of strings. The arguments passed to the entrypoint.
- `env`: An object filled with key/value pairs to be set as environment variables.
- - `env_from` : An array of objects that define environment variables from Machine fields. Used for Fly Kubernetes.
+ - `env_from` : An array of objects that define environment variables from Machine fields.
- `exec`: An array of strings. The command to run for Machines in this process group on startup.
- `user`: string (nil) - An optional user that the process runs under.
- `ignore_app_secrets`: boolean - If true, only use the secrets provided at the process level. Default false.
diff --git a/partials/_firecracker_nav.html.erb b/partials/_firecracker_nav.html.erb
index 42fadff232..f95aa7dd4e 100644
--- a/partials/_firecracker_nav.html.erb
+++ b/partials/_firecracker_nav.html.erb
@@ -112,20 +112,6 @@
{ text: "Volume States", path: "/docs/volumes/volume-states/" }
]
},
- {
- title: "Fly Kubernetes",
- path: "/docs/kubernetes/fks-quickstart",
- open: false,
- links: [
- { text: "Fly Kubernetes Quickstart", path: "/docs/kubernetes/fks-quickstart/" },
- { text: "Fly Kubernetes Features", path: "/docs/kubernetes/fks-features/" },
- { text: "Create an FKS Cluster", path: "/docs/kubernetes/clusters/" },
- { text: "Connect to an FKS Cluster", path: "/docs/kubernetes/connect-clusters/" },
- { text: "Configure FKS Services", path: "/docs/kubernetes/services/" },
- { text: "Use GPUs with FKS", path: "/docs/kubernetes/using-gpus/" },
- { text: "Use Volumes with FKS", path: "/docs/kubernetes/using-volumes/" }
- ]
- },
{
title: "Networking",
path: "/docs/networking/",