Which is really really puzzling, because if you curl, it's going to be reachable just fine. The problem is that the error message is not coming from you local computer, it's coming from inside the ArgoCD pod, it's trying to contact the k8s api server from inside the k8s cluster, where is not going to have anything listening.

This error is probably going to come up not just in KinD, but also in minikube, or any other solution where you run the cluster on the same machine where you are also running kubectl from.

As a workaround, you can find the endpoint for the api server:

kubectl get endpoints

NAME         ENDPOINTS         AGE
kubernetes   38m

Find the entry belonging to the cluster in your .kube/config, and change the server entry to point to the IP above:

- cluster:
    certificate-authority-data: ...
  name: kind

Verify that kubectl get pods is still working, then try argocd cluster add, it should work.