Home > Mobile >  How to publish container through web browser?
How to publish container through web browser?

Time:09-05

I am trying to learn kubernetes. I can deploy containers. How can we publish/show container through web browser?

I think we can create nodePort through service.

How can we do this? Thank you for helping me.

CodePudding user response:

Try using the below manifest to deploy a sample nginx application in Kubernetes(using a LoadBlancer IP type). I have used Minikube so the way of accessing the application would be different. This is one way of accessing the application there are other ways 1.Using Nodeport 2. Using Ingress

Deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: dev
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "64Mi"
            cpu: "200m"
          limits:
            memory: "128Mi"
            cpu: "350m"

Service.yml

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: dev
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
   app: nginx

Once these two files are created apply them using the below command

kubectl apply -f nginx.yml,nginx-service.yml

Accessing the application on K8s provided by cloud providers

If you are using kubernetes provided by some cloud provider then you will need to access the application from the LoadBalancer IP. This could be found by using the below command(I have deployed the application on dev namespace):

kubectl get svc -n dev

This should list a service called nginx-service and there will be an External IP for this service you have to access the application using that External IP.

Accessing application on Minikube

In Minikube if you want to access the application use the below command:

minikube service nginx-service --url

Nginx pod's output

CodePudding user response:

Define service type as NodePort. This makes the service accessible on a static port on each Node in the cluster. This means that the service can handle requests that originate from outside the cluster.

sample is given below

apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  type: NodePort
  ports:
  - name: http
    nodePort: 31704
    port: 8080
    protocol: TCP
    targetPort: 80
  - name: https
    nodePort: 32453
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: my-nginx

You can also define service type as LoadBalancer if you are hosting your apps in Cloud. The service becomes accessible externally through a cloud provider's load balancer functionality. GCP, AWS, Azure, and OpenStack offer this functionality. The cloud provider will create a load balancer, which then automatically routes requests to your Kubernetes Service.

  • Related