AR Cloud Virtual Machine Local

I am playing around with AR Cloud (using the .ova image hosted on a Local Machine). One thing I'm noticing is that everything is working as expected when the computer is connected to the internet, but I cannot get the AR Cloud server started when the computer running the AR Cloud virtual machine is not able to reach the internet.

I'll see the following message when trying to run the ./set-ip.sh script without internet access on my local machine:

Cluster not ready, retrying after 1 second...

Is there any external dependency that requires working internet access to use the AR Cloud functionality, or can it be used completely offline?. We have a use case where touching the internet is not desired, but we want to use AR Cloud

I'm using VirtualBox on a Windows 11 machine with the latest updates.

It seems like the network configuration may be interfering with AR Cloud's local deployment. Here's a breakdown of what might be happening and how to resolve it:

  • The script is designed to verify if the internal cluster within the virtual machine is ready. The "Cluster not ready" message suggests that the script can't communicate with the cluster.
  • Switching to Bridged Network Adapter mode might have inadvertently redirected traffic outside the VM, breaking internal connectivity. I suspect the cluster API server address collides with something other on the network when it's modified to use a bridged mode.

Our recommendation is to revert your VM's network settings. The default network mode that the VM comes preconfigured with (NAT with the necessary port forwards) that should allow you to access the cluster from the host network using the host's IP address

I tried following the instructions again from scratch, and using the NAT with necessary port forwards (default network mode). I set up the system with network access enabled up until it printed out the login credentials, then I tried disabling internet on the host machine and restarting the VM.

Once again the "Cluster not ready" message is seen if no active internet connection is available on the local machine and I try to run the set-ip or show scripts. As soon as I enable the internet connection, however, the error disappears and the login information is displayed.

The reason I'm testing this scenario is that we need to use this in an internet free environment, but now I'm not sure if this is really possible?

AR cloud is able to run without an Internet connection. In case of on-premise deployments, Internet access is only required during setup to download the Docker images.

Do you mind providing more information on how the internet is disabled on the host machine?

It’s good to hear it should be possible to run without internet connection after the initial setup.

I have tried disabling internet two ways:

  1. Simply disconnecting from WiFi
  2. Leaving WiFi connected but physically disconnecting my Fiber internet connection from the network.

Either way I do this, I notice after a clean power down and restart of the VM, that calling “ip addr show” from the command prompt shows a very different network configuration.

Any advice would be appreciated!

Thank you for providing the details. It allowed us to verify your use case and find a solution.

The issue is caused by the cluster services being dependent on NTP (time synchronization) - the generated cluster certificates can become invalid in case the time changes after the cluster starts. There should be no issues if time is never synchronized, though.

To allow the cluster to start without Internet access, run the following commands inside the VM:

sudo systemctl disable systemd-time-wait-sync.service
systemctl show -p FragmentPath k3s.service | cut -d= -f2 | xargs sudo sed -ri '/After=/{/time-sync.target/{s/ time-sync.target//}}'
sudo systemctl daemon-reload

This will allow the cluster to start after a reboot even if there is no Internet access (the time will not be synchronized).

It is also possible to install AR Cloud inside the VM without Internet access. This, however, requires to run the following command inside the VM while it is still connected to the Internet:

kubectl -n kube-system get configmap local-path-config -o yaml | yq '.data["helperPod.yaml"] | @yamld | .spec.containers[0].image' | xargs nerdctl -n k8s.io pull

The command will pull a docker image that is later used to provision local storage used inside the cluster.

Even though Internet access will no longer be needed, to connect a device it still has to be able to reach AR Cloud. Providing the IP address of your host system (e.g. laptop) while installing AR Cloud in case it is connected to the same network as the device should be enough. More details in the docs.

I hope the above allows you to get the expected outcome. Please let us know if you have any other issues.

Thank you for quickly reproducing our problem and providing a workaround solution. We are no longer seeing the cluster is not ready message!

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.