Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
title: Deploy Longhorn on Azure Cobalt 100 Arm64 virtual machines for Kubernetes persistent storage

description: Learn how to install and configure Longhorn on an Azure Cobalt 100 Arm64 virtual machine, deploy Kubernetes persistent storage using K3s, create Persistent Volumes, and benchmark storage performance for cloud-native workloads.

minutes_to_complete: 60

who_is_this_for: This is an introductory topic for developers, DevOps engineers, platform engineers, and Kubernetes administrators who want to deploy persistent storage for Kubernetes workloads using Longhorn on Arm-based cloud infrastructure.

learning_objectives:
- Install and configure K3s Kubernetes on Azure Cobalt 100 Arm64 virtual machines
- Deploy and configure Longhorn distributed block storage on Arm64
- Create and manage Kubernetes Persistent Volumes using Longhorn
- Benchmark Kubernetes storage performance using fio

prerequisites:
- A [Microsoft Azure account](https://azure.microsoft.com/) with access to Cobalt 100 based instances (Dpsv6)
- Basic knowledge of Linux command-line operations
- Familiarity with SSH and remote server access
- Basic understanding of Kubernetes and containerized workloads

author: Pareena Verma

### Tags
skilllevels: Introductory
subjects: Containers and Virtualization
cloud_service_providers:
- Microsoft Azure

armips:
- Neoverse

tools_software_languages:
- Longhorn
- Kubernetes
- K3s
- fio

operatingsystems:
- Linux

further_reading:
- resource:
title: Longhorn Official Website
link: https://longhorn.io/
type: website
- resource:
title: Longhorn Documentation
link: https://longhorn.io/docs/
type: documentation
- resource:
title: K3s Documentation
link: https://docs.k3s.io/
type: documentation
- resource:
title: Azure Cobalt 100 processors
link: https://techcommunity.microsoft.com/blog/azurecompute/announcing-the-preview-of-new-azure-vms-based-on-the-azure-cobalt-100-processor/4146353
type: documentation

### FIXED, DO NOT MODIFY
# ================================================================================
weight: 1
layout: "learningpathall"
learning_path_main_page: "yes"
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
# ================================================================================
# FIXED, DO NOT MODIFY THIS FILE
# ================================================================================
weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation.
title: "Next Steps" # Always the same, html page title.
layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing.
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
title: Understand Longhorn on Azure Cobalt 100

weight: 2

layout: "learningpathall"
---

## Why run Longhorn on Azure Cobalt 100

Longhorn on Arm-based Azure Cobalt 100 processors provides lightweight, Kubernetes-native distributed storage for cloud-native workloads running on Arm64 infrastructure.

Azure Cobalt 100 processors deliver dedicated physical cores per vCPU, providing predictable and consistent performance for Kubernetes storage workloads. This architecture complements Longhorn’s distributed block storage model and helps deliver stable storage performance for stateful applications running on Kubernetes.

Longhorn enables persistent storage for Kubernetes workloads such as databases, analytics platforms, monitoring stacks, and stateful cloud-native applications running on Azure Cobalt 100 Arm64 virtual machines.

## Azure Cobalt 100 Arm-based processor

Azure’s Cobalt 100 is Microsoft’s first-generation, in-house Arm-based processor. Built on Arm Neoverse N2, Cobalt 100 is a 64-bit CPU that delivers strong performance and energy efficiency for cloud-native, scale-out Linux workloads.

These workloads include:

- Kubernetes platforms
- Containerized applications
- Open-source databases
- Data analytics systems
- Storage and caching platforms

Running at 3.4 GHz, Cobalt 100 allocates a dedicated physical core for each vCPU, ensuring predictable and consistent workload performance.

To learn more, see the Microsoft blog [Announcing the preview of new Azure VMs based on the Azure Cobalt 100 processor](https://techcommunity.microsoft.com/blog/azurecompute/announcing-the-preview-of-new-azure-vms-based-on-the-azure-cobalt-100-processor/4146353).

## How Longhorn improves Kubernetes storage

Longhorn is an open-source cloud-native distributed block storage platform designed specifically for Kubernetes environments.

It provides persistent storage volumes for Kubernetes workloads and enables applications to retain data independently of container or pod lifecycle events.

Longhorn integrates directly with Kubernetes through the Container Storage Interface (CSI) and provides dynamic volume provisioning, storage management, and persistent storage capabilities for stateful workloads.

To learn more, see the official [Longhorn documentation](https://longhorn.io/docs/).

Longhorn provides several important capabilities for Kubernetes storage management:

- Persistent Volumes: Dynamically provisions Kubernetes Persistent Volumes for stateful workloads.
- Distributed Storage: Replicates and manages block storage volumes across Kubernetes nodes.
- CSI Integration: Integrates natively with Kubernetes using the Container Storage Interface.
- Snapshot and Backup Support: Supports volume snapshots and backup operations for Kubernetes workloads.
- Stateful Workload Support: Enables databases, monitoring stacks, and analytics applications to run with persistent storage.

Longhorn is widely used in Kubernetes environments to provide lightweight and reliable storage without requiring external SAN or NAS infrastructure.

In this Learning Path, you'll deploy Longhorn on an Azure Cobalt 100 Arm64 virtual machine using K3s Kubernetes. You'll configure Longhorn for a single-node Kubernetes cluster, create Persistent Volumes, validate storage persistence, and benchmark storage performance using fio.

## What you've learned and what's next

You now understand why Azure Cobalt 100 and Longhorn are a strong combination for Kubernetes-native persistent storage on Arm64 infrastructure.

Next, you'll configure Azure networking and firewall rules, install K3s Kubernetes, deploy Longhorn, and begin creating Persistent Volumes for Kubernetes workloads.
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
title: Allow access to the Longhorn Web UI on Azure
weight: 4

### FIXED, DO NOT MODIFY
layout: learningpathall
---

## Configure external traffic for Longhorn and Kubernetes

To allow external traffic for the Longhorn Web UI and Kubernetes services on an Azure virtual machine, open the required ports in the Network Security Group (NSG). The NSG can be attached to the virtual machine's network interface or subnet.

{{% notice Note %}}For more information about Azure setup, see [Getting started with Microsoft Azure Platform](/learning-paths/servers-and-cloud-computing/csp/azure/).{{% /notice %}}


### Add inbound firewall rules in Azure

To expose the required TCP ports for Kubernetes and Longhorn, create an inbound firewall rule.

1. Navigate to the [Azure portal](https://portal.azure.com), go to **Virtual Machines**, and select your virtual machine.

![Azure Portal Virtual Machines page with the target VM selected. Verify that the correct Azure Cobalt 100 virtual machine is selected before configuring network access.#center](images/virtual_machine.png "Azure Virtual Machine")

2. In the left menu, select **Networking**, then select **Network settings**.

![Azure Portal Networking page showing the network settings linked to the Azure virtual machine. Use this page to manage inbound firewall rules for Kubernetes and Longhorn access.#center](images/networking.png "Azure Networking Settings")

3. Navigate to **Create port rule**, and select **Inbound port rule**.

![Azure Portal Create port rule menu with Inbound port rule selected. Use this option to allow external traffic for Longhorn and Kubernetes services.#center](images/port_rule.png "Create Inbound Port Rule")

4. Configure the inbound security rule with the following settings:

- **Source:** My IP address
- **Source IP addresses:** *(auto-populated with your current public IP)*
- **Source port ranges:** *
- **Destination:** Any
- **Destination port ranges:** **80,8080,6443**
- **Protocol:** TCP
- **Action:** Allow
- **Name:** allow-longhorn-kubernetes

This rule allows external access for:

- Port `80` → HTTP workloads
- Port `8080` → Longhorn Web UI
- Port `6443` → Kubernetes API server

{{% notice Note %}}Setting **Source** to **My IP address** restricts access to these ports to your current machine only. If your public IP address changes or you access the environment from another system, update the source IP in the NSG rule accordingly.{{% /notice %}}

5. After filling in the details, select **Add** to save the rule.

You can now access the Longhorn Web UI externally using:

```text
http://<PUBLIC_IP>:8080
```

## What you've learned and what's next

You've now configured the Azure Network Security Group to allow external traffic for SSH, Kubernetes API access, HTTP workloads, and the Longhorn Web UI.

These firewall rules allow secure remote management of the Azure Cobalt 100 virtual machine and external access to the Kubernetes storage dashboard.

Next, you'll create Persistent Volume Claims, deploy workloads using Longhorn storage, and benchmark Kubernetes storage performance on ARM64 infrastructure.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading