Cannot access service from pods

Cluster information:

Kubernetes version: v1.32.5
Cloud being used: bare-metal
Installation method: kubespray v2.28.0
Host OS: Ubuntu 24.04
CNI and version: Calico v3.29.3
CRI and version: Containerd v2.0.5
Fiwall: UFW

I’ve set up my cluster with kubespray, then created httpbin-service according to Kubernetes · Cloudflare Zero Trust docs
I can access it from the host (first command below), but not from within other pods (second command, it timeouts).
This is not DNS problem, since access by serviceIP also timeouts (third command).

curl http://httpbin-service.default.svc.cluster.local:80
kubectl run -i -t --rm curltest --image curlimages/curl -- curl --max-time 3 http://httpbin-service.default.svc.cluster.local:80
kubectl run -i -t --rm curltest --image curlimages/curl -- curl --max-time 3 http://10.233.42.174:80/

Calico controller and calico-node(s) are running on each node.
Disabled UFW don’t fix this.
Pods can ping each other like described in Smoke Tests section in Kubespray - Deploy a Production Ready Kubernetes Cluster
What might be the problem? Where to look?