Skip to main content

How to build your own K3S and Kasten - Part 2

  • November 16, 2025
  • 3 comments
  • 70 views

Martin Jorge
Forum|alt.badge.img+1

In the previous post, I shared how to create a cluster with K3s and then add Kasten to develop a demo environment or even a lab for different types of testing: https://community.veeam.com/topic/show?tid=11815&fid=57

In this second part, the goal is to go a bit further and perform the following actions:

  • Connect the K10 instance to an existing VBR. (pending on a third post)

  • Add 2 virtual machines: one will serve as a second K3s cluster with Kasten (following the steps from the previous post), and the other VM will act as our repository.

Once the environment is deployed, you will be able to perform many actions within K10, such as Multicluster, DRP, App Mobility, and more.

Are you ready? Let’s review what needs to be configured…

As mentioned before, you should have two virtual machines, each running K3s and Kasten. One important point is that in order to provide direct access to the Kasten service on the network, you can use the NodePort type. This will allow both clusters to communicate with each other. Here’s how to configure it…

Perform the following steps on both clusters:

Run the command below — this will open the vi editor:

sudo kubectl -n kasten-io edit svc gateway

 

Find the following line and add externalIPs with the IP of your VM with K10:

Before

After:

*The IP of my env is 192.168.1.73

Then change the port 80 → 8080 and type to NodePort:

Save the config with :wq

Validate access using:

http://IP:8080/k10/#

This action needs to be performed on both clusters, so you must validate access on both sides.

At this point you will have 2 cluster of one node each with k3s and kasten up and running! 😎

 

Localtion profile: MinIO

Another alternative for the test environment is to use an object-based repository service such as MinIO: https://www.min.io/
For this lab, a simple deployment will be used. Ideally, you should dedicate a separate virtual machine for this service, using the same operating system you used for Kasten. Here is when the third VM is going to be configured:

Once you have access to the virtual machine that will host MinIO, run the following commands:

wget https://dl.min.io/server/minio/release/linux-amd64/minio
sudo chmod +x minio
sudo ./minio server /mnt/ &

 

  • The /mnt parameter represents the directory that will be used for storage. Make sure to validate the correct path.

  • You can run MinIO in the background by adding the & character at the end of the command.

After the service is running, you can use any of the URLs displayed in the console to access the MinIO dashboard.

 

Once inside the dashboard, create the bucket that will later be presented to Kasten.

 

After creating the bucket in MinIO, go to Kasten and navigate to Profiles → Location to set up the corresponding Location Profile.

Adding the same bucket in both cluster must be done to proceed to the next step.

 

Multi-Cluster

This step will be possible if the following tasks have been completed:

  • Two virtual machines running Kasten and K3s.

  • Each virtual machine must have a Location Profile configured (MinIO).

 

Once the tasks above are completed, you can configure a multi-cluster environment to unify the management of both K10 instances.

Start by selecting the Multi-Cluster option in one of the Kasten instances and promote it as the primary:

 

 

The IP address shown in the image will vary depending on the environment being used:

Confirm to promote the cluster as primary.

 

This action will update the initial dashboard, enabling additional options to appear:

 

To add the second node, it is necessary to generate a token on the primary node:

 

Now… in the second cluster go to the section of multicluster and select the option Join:

 

Past the token created before:

 

Now you have multi-cluster configured!!

If any connectivity issues occur, it is likely that you will need to perform the following steps before adding the second node. These commands must be executed on the secondary node.
Refer to the documentation:
https://docs.kasten.io/7.0.4/multicluster/how-tos/http_primary_ingress_connection.html

Validate on the secondary node — the one you want to add to the cluster — that the ConfigMap is created:

kubectl patch configmap mc-join-config -n kasten-io --type merge -p '{"data":{"allow-insecure-primary-ingress":"true"}}'

 

 

I hope this second article helps you continue building and experimenting with your own environments, so you can explore K3s and Kasten in a practical and hands-on way.

 

Enjoy! 😎😃

 

3 comments

Chris.Childerhose
Forum|alt.badge.img+21
  • Veeam Legend, Veeam Vanguard
  • November 16, 2025

Great second part to this.  Following along to get this working to test Kasten. 👍


Geoff Burke
Forum|alt.badge.img+22
  • Veeam Vanguard
  • November 16, 2025

@Martin Jorge Thanks for the post. Can you post these in the Kubernetes Korner group. That is where we try and put everything Kubernetes unless it is specifically Kasten support questions. Thanks

@Madi.Cristil ​@safiya can we move the previous post too.

 

Thanks


waqasali
Forum|alt.badge.img+4
  • On the path to Greatness
  • November 17, 2025

Hi ​@Martin Jorge  Thank you for sharing this information. I just wanted to share a quick note from our side. We are currently planning to adopt Kasten for Kubernetes backup and mobility, and discussions are ongoing with Veeam around integration and future use cases. I believe this could be helpful down the line, especially for environments where containerized workloads are growing. If anyone has experience with Kasten in production or during migration phases, I’d love to hear your thoughts. Thanks!