0

I want to showcase kubernetes load balancing capabilities. On my local system, I have one node in the cluster. Want to deploy nginx container in 3 pods and replace the index.html (default) with my modified index.html (having some variances). I am creating a service and assigning a port to forward all requests to port 80 of the containers. I want to access my pod as http://localhost:3030. Depending on the pod the request hits, the index.html will display the content. However with the below deployment and service code I could not hit any pod. If I do port-forward to an individual pod, I can reach it though.

I followed the approach explained here but no luck. Any idea what I am missing.

Here is what I see when get all.

$ k get all
NAME                              READY   STATUS    RESTARTS   AGE
pod/app-server-6ccf5d55db-2qt2r   1/1     Running   0          3d20h
pod/app-server-6ccf5d55db-96lkb   1/1     Running   0          3d20h
pod/app-server-6ccf5d55db-ljsc4   1/1     Running   0          3d20h


NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   19d


NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/app-server   3/3     3            3           3d20h

apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  type: NodePort
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 3030
  selector:
    app: app-server

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-server
  labels:
    app: app-server
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app-server
  template:
    metadata:
      labels:
        app: app-server
    spec:
      containers:
      - name: web-server
        image: nginx:latest
        ports:
        - containerPort: 80
Raja Chava
  • 81
  • 2
  • 9

1 Answers1

0

Ok, I did two mistakes.

  1. Both service and app server deployment is in single file.
  2. I messed up the port and servicePort values

Here are the changes I made which worked.

Service.yml

apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  type: NodePort
  ports:
    - name: httpport
      protocol: TCP
      port: 32766
      nodePort: 32766
      targetPort: 80
  selector:
    app: app-server

deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-server
  labels:
    app: app-server
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app-server
  template:
    metadata:
      labels:
        app: app-server
    spec:
      containers:
      - name: web-server
        image: nginx:latest
        ports:
        - containerPort: 80

I deployed the server first and then the service. Then I was able to reach the nginx server with http://localhost:32766

Here is the output of my k get all

$ k get all -o wide
NAME                              READY   STATUS    RESTARTS   AGE   IP           NODE             NOMINATED NODE   READINESS GATES
pod/app-server-6ccf5d55db-9xjwh   1/1     Running   0          60s   10.1.0.201   docker-desktop   <none>           <none>
pod/app-server-6ccf5d55db-mdtrx   1/1     Running   0          60s   10.1.0.200   docker-desktop   <none>           <none>
pod/app-server-6ccf5d55db-smmcg   1/1     Running   0          60s   10.1.0.199   docker-desktop   <none>           <none>


NAME                  TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)           AGE   SELECTOR
service/app-service   NodePort    10.110.72.85   <none>        32766:32766/TCP   54s   app=app-server
service/kubernetes    ClusterIP   10.96.0.1      <none>        443/TCP           20d   <none>


NAME                         READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR
deployment.apps/app-server   3/3     3            3           60s   web-server   nginx:latest   app=app-server

NAME                                    DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES         SELECTOR
replicaset.apps/app-server-6ccf5d55db   3         3         3       60s   web-server   nginx:latest   app=app-server,pod-template-hash=6ccf5d55db

Raja Chava
  • 81
  • 2
  • 9