0
b2plane
1y

Kubernetes questions

1. In theory i understand the difference between ClusterIP and NodePort, but don't understand in practice, how do i decide which type is the pod supposed to be when building a real world project? Explain through example

2. while writing the first question i forgot what i wanted to ask as the second question

Comments
  • 1
    Read the docs. Again. And then a couple more times.
    Then figure out how to use an ingress.

    In short, a clusterIp is internal to the cluster, while a nodeport is exposed to the outside world.
  • 2
    @chatgpt Kubernetes questions

    1. In theory i understand the difference between ClusterIP and NodePort, but don't understand in practice, how do i decide which type is the pod supposed to be when building a real world project? Explain through example
  • 2
    @netikras

    In Kubernetes, ClusterIP and NodePort are two different types of services that can be used to expose a Kubernetes pod to the outside world.

    ClusterIP provides internal access to a set of replica pods. It creates a virtual IP address only accessible within the Kubernetes cluster. This type of service is ideal if you want to expose your application to other back-end services within the cluster but not publicly available.

    On the other hand, NodePort exposes the pod to a specific static port on each worker node in the cluster. It creates a route so that any traffic that hits the worker node’s IP address and selected port is routed directly to the service.

    To determine which type of service to use, you need to consider your use case scenario. Below are some examples of when to use each type:

    - ClusterIP:

    If you have a backend service that is used only as an internal resource, for example, a database, you would use a ClusterIP. In this case, the pods for that service o
  • 1
    nly need to be accessed internally by other pods in the application.

    - NodePort:

    If you have an application that needs to be accessible to users from the outside world, for example, a web application, you would use a NodePort service. This will expose the pod to the outside world via a specific port.

    To summarize, ClusterIP is ideal in the case of internal services that communicate with other services within the cluster, while NodePort is used when you want to make an application publicly available outside of the cluster.
  • 1
    To rephrase,

    NodePort is meant to expose the service to the outside (i.e. make it accessible from outside of the agent nodes).

    ClusterIP is meant for pod A to access a pod B w/o explicitly specifying pod B's IP or name. I.e. kube-proxy will forward all the requests to the ClusterIP to EITHER of the pods running within that cluster (kind of a load-balancer, accessible only from within the k8s and not from the outside)
  • 0
    @netikras yes now i remembered the 2nd question: is a LoadBalancer type of pod used only for frontend applications or can it be used for backend pods?
  • 0
    @aLoNe-jAsE

    Kubernetes is an open-source container orchestration system used for automating deployment, scaling, and management of containerized applications. It was developed by Google and is now maintained by the Cloud Native Computing Foundation (CNCF).

    In simple terms, Kubernetes is a tool that helps developers manage containers, which are self-contained applications that bundle all the necessary libraries and dependencies to run. With Kubernetes, developers can easily deploy and manage containers across a distributed network of servers, enabling them to scale and manage their applications efficiently.

    Kubernetes provides a platform-agnostic system for managing containerized applications, so they can run on any cloud provider or on-premises data center. It is highly scalable, resilient, and fault-tolerant, making it the go-to tool for modern application development and deployment.
  • 1
    @b2plane lb service can be used for any service.

    A standard setup:
    - a bunch of pods in a replicaset for the backend app. And a service with ClusterIP to access them from within the k8s setup. Not exposed to the outside [no NodePort, no LB]
    - a few pods in a replicaset for the frontend app and a service with ClusterIP. Also not exposed to the outside.
    - a few pods of Ingress controllers [like ingress-nginx]. Now these pods are exposed to the outside either through NodePort or LB service, i.e. they are the gateway to the k8s cluster
    - ingress manifests defined for both BE and FE services [ones with clusterip].

    A request comes in through a nodeport or lb service into thebingress controller [nginx]. It then analyzes the req and tries to find the right ingress rule that matches the req, alters the req if the ingress says to. Then it sends the req to the service specified in ingress [fe/be] through the clusterip. Kube-proxy finds the target pod behind the clusterip and forwards the req.
  • 0
    @aLoNe-jAsE

    As an AI language model, I don't have access to specific software that may exist in the market, but a color picker is a tool that allows users to select a specific color or hue from a larger palette of colors, typically in digital design or image editing software. 2.0 indicates that it may be an updated or more advanced version of a color picker tool. Sorry if my answer didn't match your expectations.
  • 0
    @chatgpt what's an ingress in kubernetes
  • 0
    @b2plane

    In Kubernetes, an ingress is a type of object that allows external access to services within the cluster. It provides a way to configure and manage the external-facing routing rules for incoming traffic to different services. Essentially, when a user sends a request, the ingress controller inspects the request and forwards it to the appropriate service within the cluster. Ingress objects can be used to define rules for routing, load balancing, SSL termination, and more. Overall, they play a critical role in making services accessible from the internet and providing a clear separation between internal and external traffic in a Kubernetes cluster.
  • 0
    @b2plane ingress is a set of rules for an ingress controller. An ingress tells the controller which incomming requests to forward to which services. Also can define how to transform the request b4 forwarding [like url-rewrite, port change, tls termination, etc].

    An ingress controller is the gateway into your cluster. Usually it's a nginx pod[s] that is configured to receive requests from the outside of the cluster. It reads ingress config yamls and translates them into nginx config snippets.

    So eventually you have nginx [ing ctrl] receiving requests and looking at ingress rules to find where to route each request into the cluster
Add Comment