A.Dumas
A.Dumas

Reputation: 3257

How to access simple nginx deployment on kubernetes?

I want to deploy a simple nginx app on my own kubernetes cluster.

I used the basic nginx deployment. On the machine with the ip 192.168.188.10. It is part of cluster of 3 raspberries.

NAME         STATUS   ROLES    AGE     VERSION
master-pi4   Ready    master   2d20h   v1.18.2
node1-pi4    Ready    <none>   2d19h   v1.18.2
node2-pi3    Ready    <none>   2d19h   v1.18.2


$ kubectl create deployment nginx --image=nginx                                                                                                        
deployment.apps/nginx created

$ kubectl create service nodeport nginx --tcp=80:80                                                                                                          
service/nginx created

$ kubectl get pods                                                                                                                                        
NAME                      READY   STATUS    RESTARTS   AGE
my-nginx-8fb6d868-6957j   1/1     Running   0          10m
my-nginx-8fb6d868-8c59b   1/1     Running   0          10m
nginx-f89759699-n6f79     1/1     Running   0          4m20s

$ kubectl describe service nginx                                                                                                                              
Name:                     nginx
Namespace:                default
Labels:                   app=nginx
Annotations:              <none>
Selector:                 app=nginx
Type:                     NodePort
IP:                       10.98.41.205
Port:                     80-80  80/TCP
TargetPort:               80/TCP
NodePort:                 80-80  31400/TCP
Endpoints:                <none>
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>


But I always get a time out

$ curl http://192.168.188.10:31400/                                                                                                                     
curl: (7) Failed to connect to 192.168.188.10 port 31400: Connection timed out

Why is the web server nginx not reachable? I tried to run it from the same machine I deployed it to? How can I make it accessible from an other machine from the network on port 31400?

Upvotes: 1

Views: 1769

Answers (2)

Mr.KoopaKiller
Mr.KoopaKiller

Reputation: 3962

As mentioned by @suren, you are creating a stand-alone service without any link with your deployment.

You can solve using the command from suren answer, or creating a new deployment using the follow yaml spec:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - name: http
          containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

After, type kubectl get svc to get the nodeport to access your service.

nginx-svc NodePort 10.100.136.135 <none> 80:31816/TCP 34s

To access use http://<YOUR_NODE_IP>:31816

Upvotes: 1

protrafree
protrafree

Reputation: 96

so is 192.168.188.10 your host ip / your vm ip ?

you have to check it first if any service using that port or maybe you haven't add it into your security group if you using cloud platform.

just to make sure you can create a pod and access it using fqdn like my-svc.my-namespace.svc.cluster-domain.example

Upvotes: 0

Related Questions