Day 33 : Working with Namespaces and Services in Kubernetes

Day 33 : Working with Namespaces and Services in Kubernetes

·

3 min read

Namespaces

Namespaces are a way to logically isolate groups of resources within a single Kubernetes cluster. They are similar to virtual clusters but share the same underlying infrastructure. Namespaces provide several benefits, including:

  • Isolation: Resources in one namespace cannot be accessed by users in other namespaces unless they have been granted permission. This helps to improve security and prevent accidental conflicts.

  • Organization: Namespaces can be used to organize resources by team, project, or environment. This makes it easier to manage and maintain the cluster.

  • Resource quotas: Namespaces can be used to enforce resource quotas. This helps to prevent any one team or project from consuming too many resources and impacting the performance of other teams or projects.

Services

Services are a way to expose Pods and Deployments to the network. A Service is a logical abstraction that represents a set of Pods. When a client makes a request to a Service, Kubernetes routes the request to one of the Pods in the set.

Services provide a number of benefits, including:

  • Load balancing: Services automatically distribute traffic across the Pods in the set. This helps to ensure that the application is highly available and scalable.

  • Service discovery: Services provide a DNS name that clients can use to access the application. This makes it easy to deploy and update the application without having to change the client configuration.

  • Abstraction: Services decouple the client from the underlying Pods. This makes it easier to scale and update the application without having to change the client code.

Some Concepts

  • Load Balancer: This is a component that distributes incoming traffic across multiple pods. It acts as a single entry point for incoming requests and directs them to the appropriate pods based on a load-balancing algorithm.

  • Service Mesh: This is a configurable infrastructure layer that helps manage communication between microservices in a Kubernetes cluster. It provides features such as load balancing, circuit breaking, and service discovery.

  • Ingress Controller: This is a component that handles incoming requests from outside the cluster and routes them to the appropriate pods. It acts as a reverse proxy and can perform tasks such as SSL termination, path-based routing, and authentication.


Tasks

  • Create a Namespace for your Deployment

  • Use the command kubectl create namespace <namespace-name> to create a Namespace

  • Update the deployment.yml file to include the Namespace

  • Apply the updated deployment using the command: kubectl apply -f deployment.yml -n <namespace-name>

  • Verify that the Namespace has been created by checking the status of the Namespaces in your cluster.


So we have successfully learned the concept of namespace and applied it to a task.

In the next one, we will create the service for todo app deployment.

If you have followed until here do consider following me for more such content. Happy Coding!