I think you are missing the .local
and it should work.
curl -H "Host: helloworld-go.default.svc.cluster.local" http://< cluster_ip >
But you should be able to drop the ClusterIP entirely as you are making the request from within the cluster. Basically execute:
curl helloworld-go.default.svc.cluster.local
The DNS helloworld-go.default.svc.cluster.local
will be resolved by the Kubernetes DNS resolution mechanism.
It's important to specify the HOST header only on ingress traffic (public traffic entering into private traffic).
Details: The Knative Service creates a Route CRD, which creates a ClusterIngress which will be picked up by a controller (by default istio-network) to configure the Ingress Gateway (using another CRD in istio's case VirtualService).
Ingress Gateways routing is based on the HOST header.