Skip to main content

Command Palette

Search for a command to run...

Working with Services in Kubernetes

Published
3 min read
Working with Services in Kubernetes
S

Hello, I’m Som, a DevOps Engineer passionate about streamlining operations through automation, continuous integration, and deployment. I am deeply passionate about exploring new technologies and continuously expanding my knowledge in the ever-evolving world of IT.

What are Services in K8s

In Kubernetes, Services are objects that provide stable network identities to Pods and abstract away the details of Pod IP addresses. Services allow Pods to receive traffic from other Pods, Services, and external clients.

Task 1: Creating a Service for todo-app Deployment in Kubernetes

  • Create a Service for your todo-app Deployment from Day-32

  • Create a Service definition for your todo-app Deployment in a YAML file.

apiVersion: v1
kind: Service
metadata:
  name: todo-app-deployment
  namespace: todo-app
spec:
  type: NodePort
  selector:
    app: todo-app
  ports:
    - port: 80
      targetPort: 8000

  • Apply the Service definition to your K8s (minikube) cluster using the kubectl apply -f service.yml -n <namespace-name> command.

  • Verify that the Service is working by accessing the todo-app using the Service's IP and Port in your Namespace.

Task 2: Creating a ClusterIP Service for Accessing the todo-app within a Kubernetes Cluster

  • Create a ClusterIP Service for accessing the todo-app from within the cluster

  • Create a ClusterIP Service definition for your todo-app Deployment in a YAML file.

Step 1: Create ClusterIP Service Definition (cluster-ip-service.yml) Create a YAML file named cluster-svc.yml with the following content:

apiVersion: v1
kind: Service
metadata:
  name: todo-app-clusterip
  labels:
    app: todo-app
spec:
  selector:
    app: todo-app
  ports:
    - protocol: TCP
      port: 8000
      targetPort: 8080
  type: ClusterIP

Step 2: Apply the ClusterIP Service Definition

kubectl apply -f cluster-svc.yml -n <namespace-name>

Step 3: Verify ClusterIP Service To verify that the ClusterIP Service is working, follow these steps:

  1. Create a YAML file named test-pod.yml for a testing pod:
apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
    - name: busybox
      image: busybox
      command: ['sh', '-c', 'while true; do wget -q -O- clusterip:8000; done']

Task 3: Creating a LoadBalancer Service and Accessing the todo-app from Outside the Kubernetes Cluster

  • Create a LoadBalancer Service for accessing the todo-app from outside the cluster

  • Create a LoadBalancer Service definition for your todo-app Deployment in a YAML file.

apiVersion: v1
kind: Service
metadata:
  name: todo-app-loadbalancer
spec:
  selector:
    app: todo-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8000
  type: LoadBalancer

  • Apply the LoadBalancer Service definition to your K8s (minikube) cluster using the kubectl apply -f load-balancer-service.yml -n <namespace-name> command

  • Verify that the LoadBalancer Service is working by accessing the todo-app from outside the cluster in your Namespace.

"Thank you for enjoying my DevOps blog! Your positive response fuels my passion to dive deeper into technology and innovation.

Stay tuned for more captivating DevOps articles, where we'll explore this dynamic field together. Follow me on Hashnode and connect on LinkedIn (https://www.linkedin.com/in/som-shanker-pandey/ for the latest updates and discussions.

More from this blog

Som Pandey's blog

92 posts

Hello, I’m Som, a DevOps Engineer passionate about streamlining operations through automation, continuous integration, and deployment.