Edit

Share via


Prepare Linux for Edge Volumes

The article describes how to prepare Linux for Edge Volumes using Azure Kubernetes Service (AKS) enabled by Azure Arc, Edge Essentials, or Ubuntu.

These instructions assume that you already have an Arc-enabled Kubernetes cluster. To connect an existing Kubernetes cluster to Azure Arc, see these instructions.

If you want to use Azure Container Storage enabled by Azure Arc with Azure IoT Operations, follow the instructions to create a cluster for Azure IoT Operations.

You must also install a cert-manager as described in Install Edge Volumes.

Prerequisites

The following table lists the prerequisites for Azure Container Storage enabled by Azure Arc:

Requirement Single-node/Two-node cluster Multi-node cluster
Operating System
Kernel version 5.15 and above (minimum supported) 5.15 and above (minimum supported)
NFSv4.2 support Enabled in the kernel Enabled in the kernel
Hardware Requirements
CPU 4 CPUs minimum 8 CPUs minimum
RAM 16 GB minimum 32 GB recommended (16 GB minimum)
VM recommendation Standard_D8ds_v5 or equivalent Standard_D8as_v5 or equivalent
Storage Requirements
Storage provisioner Local-path storage class required Uses 3-way replication for fault tolerance
Effective storage Full disk space available 1/3 of total disk space due to replication
Reserved system volume 1 GB per Edge Volume 1 GB per Edge Volume (uses 3 GB with replication)
System Configuration
sysctl configuration fs.inotify.max_user_instances >= 1024 fs.inotify.max_user_instances >= 1024
NVME over TCP kernel module Not required Required
Hugepages configuration Not required Set to 512

Additional considerations

  • Kernel compatibility: Known issues exist with kernel versions 6.4 and 6.2.
  • Regional availability: Azure Container Storage enabled by Azure Arc is only available in: East US, East US 2, West US, West US 2, West US 3, North Europe, West Europe
  • Ensure that the required disk storage is available and properly mounted
  • For multi-node clusters, 32 GB RAM serves as a buffer; however, 16 GB RAM should suffice. Edge Essentials configurations require 8 CPUs with 10 GB RAM per node, making 16 GB RAM the minimum requirement.

Single-node clusters

A single-node cluster is commonly used for development or testing purposes due to its simplicity in setup and minimal resource requirements. These clusters offer a lightweight and straightforward environment for developers to experiment with Kubernetes without the complexity of a multi-node setup. Additionally, in situations where resources such as CPU, memory, and storage are limited, a single-node cluster is more practical. Its ease of setup and minimal resource requirements make it a suitable choice in resource-constrained environments.

However, single-node clusters come with limitations, mostly in the form of missing features, including their lack of high availability, fault tolerance, scalability, and performance.

Multi-node clusters

A multi-node Kubernetes configuration is typically used for production, staging, or large-scale scenarios because of features such as high availability, fault tolerance, scalability, and performance. A multi-node cluster also introduces challenges and trade-offs, including complexity, overhead, cost, and efficiency considerations. For example, setting up and maintaining a multi-node cluster requires extra knowledge, skills, tools, and resources (network, storage, compute). The cluster must handle coordination and communication among nodes, leading to potential latency and errors. Additionally, running a multi-node cluster is more resource-intensive and is costlier than a single-node cluster. Optimization of resource usage among nodes is crucial for maintaining cluster and application efficiency and performance.

In summary, a single-node Kubernetes cluster might be suitable for development, testing, and resource-constrained environments. A multi-node cluster is more appropriate for production deployments, high availability, scalability, and scenarios in which distributed applications are a requirement. This choice ultimately depends on your specific needs and goals for your deployment.

Minimum storage requirements

When you use the fault tolerant storage option, Edge Volumes allocates disk space out of a fault tolerant storage pool, which is made up of the storage exported by each node in the cluster.

The storage pool is configured to use 3-way replication to ensure fault tolerance. When an Edge Volume is provisioned, it allocates disk space from the storage pool, and allocates storage on 3 of the replicas.

For example, in a 3-node cluster with 20 GB of disk space per node, the cluster has a storage pool of 60 GB. However, due to replication, it has an effective storage size of 20 GB.

When an Edge Volume is provisioned with a requested size of 10 GB, it allocates a reserved system volume (statically sized to 1 GB) and a data volume (sized to the requested volume size, for example 10 GB). The reserved system volume consumes 3 GB (3 x 1 GB) of disk space in the storage pool, and the data volume consumes 30 GB (3 x 10 GB) of disk space in the storage pool, for a total of 33 GB.

Next steps