Cant' create k8s cluster on 3 ubuntu ec2 machines - worker nodes joining takes forever

Asking for help? Comment out what you need so we can get more information to help you!

Cluster information:

Kubernetes version: 1.23
Cloud being used: aws ec2
Installation method:
Host OS: ubuntu
CRI and version: containerd

this is what i did on all 3 nodes:

ssh cloud_user@<PUBLIC_IP_ADDRESS>

Log into the Control Plane Node (Note: The following steps must be performed on all three nodes.).
Create configuration file for containerd:
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
Load modules:
sudo modprobe overlay
sudo modprobe br_netfilter

sudo modprobe overlay && sudo modprobe br_netfilter

Set system configurations for Kubernetes networking:
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
Apply new settings:
sudo sysctl --system
Install containerd:
sudo apt-get update && sudo apt-get install -y containerd
Create default configuration file for containerd:
sudo mkdir -p /etc/containerd
Generate default containerd configuration and save to the newly created default file:
sudo containerd config default | sudo tee /etc/containerd/config.toml
Restart containerd to ensure new configuration file usage:
sudo systemctl restart containerd
Verify that containerd is running.
sudo systemctl status containerd
Disable swap:
sudo swapoff -a
Disable swap on startup in /etc/fstab:
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
Install dependency packages:
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
Download and add GPG key:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Add Kubernetes to repository list:
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
Update package listings:
sudo apt-get update
Install Kubernetes packages (Note: If you get a dpkg lock message, just wait a minute or two before trying the command again):
sudo apt-get install -y kubelet=1.23.0-00 kubeadm=1.23.0-00 kubectl=1.23.0-00
Turn off automatic updates:
sudo apt-mark hold kubelet kubeadm kubectl
Log into both Worker Nodes to perform previous steps.

then on the control plane node I did:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
kubectl get nodes

i do see 1 control plane status Ready. But bootstrapping others not working!

kubeadm token create --print-join-command

sudo kubeadm join 172.31.80.108:6443 --token 9gidy4.f12j4gk0xkaxrkw4 --discovery-token-ca-cert-hash sha256:96a1a635a5c472020c118373051bfd319cb20dc68b88a72279c4eef3f475c441
[preflight] Running pre-flight checks
error execution phase preflight: couldn't validate the identity of the API Server: Get "https://172.31.80.108:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
To see the stack trace of this error execute with --v=5 or higher

what am i doing wrong?

Also, if i close current ssh session then restart again - i get

The connection to the server 172.31.80.108:6443 was refused - did you specify the right host or port?

and i dont know how to bring it back up,reach the control node.

there is probably something more i need to do if starting my own cluster on 3 naked ubuntu machines.