Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't connect to Kubernetes Cluster on external IP

I'm trying to access .NET Web API which I docker-ized and mounted in an Kubernet Cluster on Microsoft Azure.

The application works fine on local docker machine. The cluster is running, my deployment was correct and the pods where created. Everything I check is fine, but I cannot access my application through the external cluster IP (Load Balancer). This is my YAML deployment file:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ohmioapi-deployment
spec:
  selector:
    matchLabels:
      app: ohmioapi
  replicas: 1
  template:
    metadata:
      labels:
        app: ohmioapi
    spec:
      containers:
      - name: ohmioapi
        image: ohmiocontainers.azurecr.io/ohmioapi:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 15200
      imagePullSecrets:
        - name: acr-auth
---
apiVersion: v1
kind: Service
metadata:
  name: ohmioapi
  labels:
    app: ohmioapi
spec:
  selector:
    app: ohmioapi
  ports:
  - port: 15200
    nodePort: 30200
    protocol: TCP
  type: LoadBalancer

Can anyone give a hint of where to start looking for? Thanks!

like image 358
ericpap Avatar asked Nov 05 '25 20:11

ericpap


1 Answers

I would give the deployment/pods port a name (e.g. http) and then make the service serve off port 80 but target the pod port by name... that way you don't have to worry about port numbers when connecting to a service.

Also, you shouldn't need or want to use nodePort if you are using type of LoadBalancer.

E.g.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ohmioapi-deployment
spec:
  selector:
    matchLabels:
      app: ohmioapi
  replicas: 1
  template:
    metadata:
      labels:
        app: ohmioapi
    spec:
      containers:
      - name: ohmioapi
        image: ohmiocontainers.azurecr.io/ohmioapi:latest
        imagePullPolicy: Always
        ports:
        - name: http
          containerPort: 15200
      imagePullSecrets:
        - name: acr-auth

---
apiVersion: v1
kind: Service
metadata:
  name: ohmioapi
  labels:
    app: ohmioapi
spec:
  selector:
    app: ohmioapi
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
  type: LoadBalancer
like image 107
Charlino Avatar answered Nov 07 '25 10:11

Charlino