Skip to content

Upstream Kubernetes on Flatcar Linux using Rafay

This blog is Part 3 of our series on Flatcar Linux and Kubernetes

  • In Part 1, we introduced Flatcar Linux and why it is a great fit for Kubernetes.
  • In Part 2, we covered how to install a Flatcar instance locally.
  • In this Part 3, we focus on deploying and managing Upstream Kubernetes on Flatcar Linux using Rafay MKS.

Our upcoming February release will introduce a number of new features and enhancements.We will write about these in separate blogs. This blog is focused on support for Upstream Kubernetes based on Rafay MKS on nodes running Flatcar Linux. The Rafay platform enables users to seamlessly provision new clusters and perform in-place upgrades of Kubernetes clusters, simplifying lifecycle management.

For more details on Flatcar Linux, visit the official Flatcar Linux website.

Flatcar Logo


Provision Cluster

Rafay MKS based Upstream Kubernetes clusters can be configured and provisioned on Flatcar Linux using all the supported interfaces i.e.

  • Web Console
  • API
  • CLI (declarative spec)
  • GitOps
  • Rafay Terraform/OpenTofu Provider

In this blog, we will demonstrate this using the web console and the Rafay RCTL CLI.

New Cluster Provisioning

Users of the Rafay platform can provision upstream Kubernetes clusters on Flatcar Linux-based nodes. Shown below is a screenshot.

Flatcar OS

Cluster Flatcar

Clicking on a node in the cluster dashboard will provide additional details about the Kubernetes version as well.

New Cluster Node

In-place Upgrade

Rafay's platform fully supports in-place upgrades of upstream Kubernetes clusters on Flatcar Linux. Users can initiate an upgrade via the Rafay console or API, enabling them to keep their clusters up to date with minimal disruption.

Cluster Upgrade Job

Upgraded Cluster to 1.32

New Cluster Provisioning

Users can also provision upstream Kubernetes clusters on Flatcar Linux-based nodes using RCTL CLI. Below is a sample basic cluster configuration. Notice the reference to Flatcar Linux in the cluster spec below

apiVersion: infra.k8smgmt.io/v3
kind: Cluster
metadata:
    name: mks-demo-cluster
    project: demo
spec:
    blueprint:
        name: minimal
        version: latest
    config:
        autoApproveNodes: true
        installerTtl: 365
        kubernetesVersion: v1.31.0
        network:
            cni:
                name: Calico
                version: 3.28.1
            podSubnet: 10.244.0.0/16
            serviceSubnet: 10.96.0.0/12
        nodes:
        - arch: x86_64
          hostname: flatcar-demo-vm
          operatingSystem: Flatcar Linux
          privateip: <private node IP>
          roles:
            - Worker
            - Master
            - Storage
          ssh:
            ipAddress: <public IP of the node>
            port: "22"
            privateKeyPath:
            username: <username>
    type: mks

To provision the cluster using the declarative cluster spec and the RCTL CLI and for all Day-2 operations

RCTL Command to Apply the Configuration

./rctl apply -f <cluster.yaml>

In-place Upgrades

Users can initiate a Kubernetes upgrade by simply updating the kubernetesVersion in the configuration and reapplying it using the same command as above.

./rctl apply -f <cluster.yaml>

Summary

In this blog series, we learnt how Flatcar Linux with its unique capabilities i.e. lightweight, immutable, and container-optimized OS is purpose built and designed for secure and efficient Kubernetes deployments. It simplifies cluster management with automated updates, enhanced security, and seamless integration with Kubernetes.