Exploring cgroups v2 and MemoryQoS With EKS and Bottlerocket

This page summarizes the projects mentioned and recommended in the original post on dev.to

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • bottlerocket

    An operating system designed for hosting containers

  • According to this discussion - starting with Bottlerocket 1.13.0 (Mar 2023) new distributions will default to using Cgroups v2 interface for process organization and enforcing resource limits.

  • To easily spin up a cluster - use the cluster.yaml in the attached github repository:

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • bottlerocket-admin-container

    A container for admin access to Bottlerocket

  • This will create a cluster with one Bottlerocket node. It also configures ssh access to the nodes by running the Bottlerocket admin container.

  • busyhttp

    A trivial HTTP server that eats CPU cycles or memory at each request.

  • Ok, now let's deploy a pod to our node. We'll do that by creating a deployment based on the following yaml spec. This deploys antweiss/busyhttp, that I forked from jpetazzo/busyhttp and added memory load and release endpoints to. You'll notice that the pod runs a container with Guaranteed QoS - i.e memory and CPU limits are equal to requests:

  • busyhttp

    A trivial HTTP server that eats CPU cycles at each request. (by jpetazzo)

  • Ok, now let's deploy a pod to our node. We'll do that by creating a deployment based on the following yaml spec. This deploys antweiss/busyhttp, that I forked from jpetazzo/busyhttp and added memory load and release endpoints to. You'll notice that the pod runs a container with Guaranteed QoS - i.e memory and CPU limits are equal to requests:

  • containerd

    Discontinued A daemon to control OCI container runtimes https://containerd.tools/ (by projectatomic)

  • Back inside the sheltie prompt let's explore the containers running on Bottlerocket. Bottlerocket OS is using containerd container runtime. In order to interact with it we'll need to use ctr.

  • enhancements

    Enhancements tracking repo for Kubernetes

  • 0 is not the request we've defined. And that makes sense. Memory QoS has been in alpha since Kubernetes 1.22 (August 2021) and according to the KEP data was still in alpha as of 1.27.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts