accessing kubernetes service from local host

196 Views Asked by At

I created a single node cluster. There is a nodeport service

kubectl get all --namespace default
service/backend-org-1-substra-backend-server   NodePort    10.43.81.5      <none>        8000:30068/TCP   4d23h

The node ip is

kubectl get nodes -o wide
NAME                       STATUS   ROLES                  AGE   VERSION        INTERNAL-IP   EXTERNAL-IP   OS-IMAGE   KERNEL-VERSION    CONTAINER-RUNTIME
k3d-k3s-default-server-0   Ready    control-plane,master   5d    v1.24.4+k3s1   172.18.0.2    <none>        K3s dev    5.15.0-1028-aws   containerd://1.6.6-k3s1

From the same host, but not inside the cluster, I can ping the 172.18.0.2 ip. Since the backend-org-1-substra-backend-server is a nodeport, shouldn't I be able to access it by curl 172.18.0.2:30068? I get

curl: (7) Failed to connect to 172.18.0.2 port 30068 after 0 ms: Connection refused

additional information:

$ kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:6443
CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

$ kubectl get nodes -o yaml
...
   addresses:
    - address: 172.24.0.2
      type: InternalIP
    - address: k3d-k3s-default-server-0
      type: Hostname
    allocatable:

$ kubectl describe svc backend-org-1-substra-backend-server 
Name:                     backend-org-1-substra-backend-server
Namespace:                org-1
Labels:                   app.kubernetes.io/instance=backend-org-1
                          app.kubernetes.io/managed-by=Helm
                          app.kubernetes.io/name=substra-backend-server
                          app.kubernetes.io/part-of=substra-backend
                          app.kubernetes.io/version=0.34.1
                          helm.sh/chart=substra-backend-22.3.1
                          skaffold.dev/run-id=394a8d19-bbc8-4a3b-b04e-08e0fff40681
Annotations:              meta.helm.sh/release-name: backend-org-1
                          meta.helm.sh/release-namespace: org-1
Selector:                 app.kubernetes.io/instance=backend-org-1,app.kubernetes.io/name=substra-backend-server
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.43.68.217
IPs:                      10.43.68.217
Port:                     http  8000/TCP
TargetPort:               http/TCP
NodePort:                 http  31960/TCP
Endpoints:                <none>
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

Here, I noticed the endpoints shows . which worries me.

I followed the doc at https://docs.substra.org/en/stable/contributing/getting-started.html It's a lot to ask someone to replicate the whole thing.

My point is AFAIK, the nodeport service allows callers from outside the cluster to call pods inside the cluster. But neither the cluster ip nor the node ip allows me to curl that service.

1

There are 1 best solutions below

0
On

I found that it was due to a faulty installation. Now wget to the load balancer ip and port does get a connection.