Validating the infrastructure for multi-node deployment
This document provides a step-by-step guide to validate infrastructure connectivity before installing the Adeptia Rancher package (RKE2). The purpose of these validation steps is to ensure that all required network paths, services, and permissions are correctly configured in advance.
Following this guide will help verify:
- Connectivity between Linux VMs
- Connectivity between Jumpbox and Linux VMs (If you are using Jump Box to connect to VMs)
- Connectivity with shared storage (NFS) (If using an NFS LAN server)
- Required network ports are open and accessible
- Domain name and Load Balancer connectivity
Architecture overview
Environment components
- 1 X Jumpbox VM (Optional)
- 3 X Linux VMs (VM1, VM2, VM3)
- 1 X Shared NFS Server
- 1 X Load Balancer
All components are deployed within the same virtual network unless otherwise specified.
1. Connectivity between Jumpbox VM and Linux VMs
Objective
Validate network connectivity from the Jumpbox VM to all three Linux VMs using a Python web server.
Steps
Step 1: Start Python web server on Linux VM 1
Code
sudo python3 -m http.server 9345
Step 2: From Jumpbox VM, validate connectivity
Code
curl --connect-timeout 15 --insecure \ --write-out '%{http_code}' \ --silent --output /dev/null \ http://<Linux_VM1_IP>:9345
Expected Output
200
Step 3: Repeat for Linux VM 2 and VM 3
- Start Python server on each VM
- Update IP address accordingly
- Use any available port
2. Connectivity among all Linux VMs
Objective
Ensure Linux VM1, VM2, and VM3 can communicate with each other.
Steps
Step 1: Start web server on VM1
Code
sudo python3 -m http.server 9345
Step 2: From VM2 and VM3, validate connectivity
Code
curl --connect-timeout 15 --insecure \ --write-out '%{http_code}' \ --silent --output /dev/null \ http://<Linux_VM1_IP>:9345
Step 3: Repeat for VM2 and VM3
- Run Python server on VM2
- Validate from VM1 and VM3
- Run Python server on VM3
- Validate from VM1 and VM2
3. Required ports validation (Domain name mapped to Load Balancer)
Validate that required ports are open and accessible through the Load Balancer using a mapped domain name, and that traffic is allowed at both the network and Linux VM firewall levels.
Required open ports
The following ports must be allowed at:
- Network Security Group (NSG) level
- Linux VM (iptables / firewalld / ufw) level
- Load Balancer frontend rule level
| Port | Purpose |
|---|---|
| 443 | HTTPS traffic |
| 9345 | Application connectivity validation |
| 6443 | Kubernetes / API access |
| 1433 | MS SQL connectivity |
Validation steps
Step 1: Run Python web servers on backend Linux VMs
Start a Python HTTP server on each Linux VM using different ports (One port per test):
Code
sudo python3 -m http.server 9345
Code
sudo python3 -m http.server 6443
Code
sudo python3 -m http.server 443
``
| Ensure the Load Balancer backend pool includes the target Linux VM and the corresponding health probes and load-balancing rules are configured for each port. |
|---|
Step 2: Validate connectivity using domain name (Via Load Balancer)
From the following sources:
- Jumpbox VM
- Linux VM1
- Linux VM2
- Linux VM3
Run:
Code
curl --connect-timeout 15 --insecure --write-out '%{http_code}' --silent --output /dev/null http://<DOMAIN_NAME>:9345
Repeat the command for each port:
Code
http://<DOMAIN_NAME>:6443
http://<DOMAIN_NAME>:443
``
Expected result
200
-
200confirms:- Domain name is correctly mapped to the Load Balancer
- Load Balancer rules are working
- Required ports are open at NSG and VM firewall levels
- Backend Linux VMs are reachable
4. Connectivity between Linux VMs and shared NFS server
Objective
Validate connectivity and mount access to the NFS share.
NFS mount command:
Run on VM1, VM2, VM3:
Code
sudo mkdir /mnt/testnfs
sudo mount -t nfs -o vers=4.1 <storage-domain-name:/nfs-drive-path> /mnt/testnfs
Validation:
Code
df -h | grep testnfs
5. Validate the required permissions on NFS share
Objective
Validate Read, Write, Execute, and Ownership access.
- Mount the NFS shared drive on all the Kubernetes Nodes:
Code
sudo mkdir /mnt/testnfs
sudo mount -t nfs -o vers=4.1 <storage-domain-name:/nfs-drive-path> /mnt/testnfs
- Run the following commands to verify the permissions:
Code
cd /mnt/testnfs
mkdir test-dir
touch test-file.txt
chown 1000:3000 test-file.txt
ls -l test-file.txt
rm test-file.txt
rmdir test-dir
cat > runme.sh <<'EOF'
#!/bin/sh
echo "Executed from NFS"
EOF
chmod +x runme.sh
./runme.sh
rm runme.sh
- Unmount the NFS shared drive.
Code
sudo umount -f /mnt/testnfs
Ensure that the NFS export allows ownership and group changes (chown / chgrp). The application performs file creation and ownership updates during installation, upgrades, and migrations. Insufficient ownership privileges on the NFS server may result in deployment failures. |
|---|
Expected Result
- Read, Write, Execute, and Ownership permissions enabled.
Important – Linux VM disk and partition requirements
By default, RKE2 stores its binaries, container images, runtime data, and embedded etcd data under:
Code
/var/lib/rancher/rke2
``
Ensure that the filesystem containing the RKE2 data directory has sufficient free disk space and is SSD-backed.
Recommended free disk space for production:
- Control-plane (Server) nodes: 150 GB for Production / 100 GB for Non-Prod.
Note: On RHEL and Amazon Linux,
/varis often a separate and small partition. On Ubuntu,/varis usually part of the root (/) filesystem.