<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Untitled Publication]]></title><description><![CDATA[Untitled Publication]]></description><link>https://brogrammers.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 20:11:22 GMT</lastBuildDate><atom:link href="https://brogrammers.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Unleashing the Power of Kubernetes Networking: A Comprehensive Guide to Services, Ingress, Network Policies, DNS, and CNI Plugins]]></title><description><![CDATA[Services
Kubernetes Services enable communication between various components within and outside of the application. Kubernetes Services helps us connect applications with other applications or users.
For example, our application has groups of PODs ru...]]></description><link>https://brogrammers.hashnode.dev/unleashing-the-power-of-kubernetes-networking-a-comprehensive-guide-to-services-ingress-network-policies-dns-and-cni-plugins</link><guid isPermaLink="true">https://brogrammers.hashnode.dev/unleashing-the-power-of-kubernetes-networking-a-comprehensive-guide-to-services-ingress-network-policies-dns-and-cni-plugins</guid><category><![CDATA[Kubernetes]]></category><category><![CDATA[#kubernetesNetworking]]></category><dc:creator><![CDATA[Jatin Arora]]></dc:creator><pubDate>Thu, 27 Apr 2023 13:00:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1682600283830/fd4ebcb9-8777-48ef-a09a-a4cc575edbad.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-services"><strong>Services</strong></h1>
<p>Kubernetes Services enable communication between various components within and outside of the application. Kubernetes Services helps us connect applications with other applications or users.</p>
<p>For example, our application has groups of PODs running various sections, such as a group for serving front-end load to users, another group running back-end processes, and a third group connecting to an external data source. It is Services that enable connectivity between these groups of PODs. Services enable the front-end application to be made available to users, help communication between back-end and front-end PODs, and help in establishing connectivity to an external data source. Thus services enable loose coupling between microservices in our application.</p>
<h3 id="heading-why-do-we-need-services"><strong>Why do we need services?</strong></h3>
<ul>
<li><p>If one pod goes down replica set creates a new pod but the IP address will change, whenever the new pod comes up it comes up with a new IP Address. so how does the user or customer know about this new IP address?</p>
</li>
<li><p>If your application requires multiple replicas of a pod to serve multi concurrent users, each replica of a pod has a unique IP address but customers or users would need one common IP address or DNS. Just like we all access <a target="_blank" href="http://google.com"><strong>google.com</strong></a>(DNS) or 8.8.8.8(IP Address) to access Google.</p>
</li>
</ul>
<p>How is this implemented in Kubernetes?</p>
<p>To solve this issue, Kubernetes uses an object called a “<strong>service</strong>”.</p>
<h1 id="heading-services-types"><strong>Services Types</strong></h1>
<h2 id="heading-cluster-ip-mode"><strong>Cluster IP Mode</strong></h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682428950204/0eafcd25-ae85-4e65-ad13-7db33def0d10.png?auto=compress,format&amp;format=webp" alt /></p>
<p>Your pods or your service will get a <strong>cluster IP</strong> so if you try to access your service so you will be <strong>only able to access the service using the cluster IP</strong> which is <strong>only available or accessible within the Kubernetes cluster.</strong></p>
<p><strong>Advantage</strong>: It provide service discovery.</p>
<p><strong>Disadvantage</strong>: Application only accessible inside Kubernetes cluster.</p>
<h2 id="heading-node-port"><strong>Node port</strong></h2>
<p>When a service is created with a NodePort type, The kube-proxy updates the IPTables with the Node IP address and port that is chosen in the service configuration to access the pods.</p>
<p><img src="https://www.bogotobogo.com/DevOps/Docker/images/Docker-Kubeernetes-Pods-Services/Service-Port-NodePort-TargetPort.png" alt="Docker &amp; Kubernetes : Pods and Service definitions - 2021" /></p>
<p>It will allow your application to be accessed inside your organization.</p>
<p>Anybody within our network technically might not have access to Kubernetes clusters but they have access to the worker Node IP address.</p>
<p>Whoever has access to the Node IP address only they can access the application if the service is created in Note-Port mode.</p>
<h2 id="heading-load-balancer"><strong>Load Balancer</strong></h2>
<p>If you create a Service as type LoadBalancer, the cloud control manager creates an external load balancer IP using the underlying cloud provider logic in the C-CM. Users can access services using the external IP</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682429847590/51d0d528-0dfb-405e-8845-57c66c862de7.png?auto=compress,format&amp;format=webp" alt /></p>
<p>EKS---service---&gt;Load Balancer----get----&gt;Elastic Load Balancer IP address for my service. This is a public IP address so anyone in the world can access it.</p>
<h1 id="heading-what-is-kubernetes-ingress"><strong>What Is Kubernetes Ingress?</strong></h1>
<p>Ingress is a powerful Kubernetes resource that allows you to expose HTTP and HTTPS routes from outside the cluster to services within the cluster. We'll dive into what Ingress is, how it works, and how to use it effectively.</p>
<h2 id="heading-what-is-ingress"><strong>What is Ingress?</strong></h2>
<p>Ingress is a Kubernetes resource that provides a way to manage external access to services in a Kubernetes cluster. In other words, Ingress allows you to route traffic from outside the cluster to services running inside the cluster. Ingress is an alternative to creating a LoadBalancer service or a NodePort service, which can be less flexible and more difficult to manage.</p>
<p>At a high level, Ingress consists of two parts: an Ingress controller and Ingress rules. The Ingress controller is responsible for monitoring changes to the Ingress resources and updating the configuration of the underlying load balancer. Ingress rules define how traffic should be routed to services based on the URL path and host.</p>
<h3 id="heading-how-ingress-works"><strong>How Ingress Works</strong></h3>
<p>To understand how Ingress works, let's take a closer look at the two main components: the Ingress controller and Ingress rules.</p>
<h3 id="heading-ingress-controller"><strong>Ingress Controller</strong></h3>
<p>The Ingress controller is responsible for managing the underlying load balancer and routing traffic to the appropriate service based on the Ingress rules. The Ingress controller is typically a software component that runs inside the Kubernetes cluster and communicates with the Kubernetes API server to watch for changes to the Ingress resources.</p>
<p>When a new Ingress resource is created, the Ingress controller reads the Ingress rules and creates or updates the configuration of the underlying load balancer. The Ingress controller can work with a variety of load balancers, including Nginx, Traefik, and HAProxy.</p>
<h3 id="heading-ingress-rules"><strong>Ingress Rules</strong></h3>
<p>Ingress rules define how traffic should be routed to services based on the URL path and host. Ingress rules consist of a set of rules that map incoming requests to services based on the request's host and path.</p>
<p>Here's an example of an Ingress rule that routes traffic based on the host:</p>
<pre><code class="lang-plaintext">apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: example-service
            port:
              name: http
</code></pre>
<p>This Ingress rule specifies that requests to <a target="_blank" href="http://example.com"><code>example.com</code></a> should be routed to the <code>example-service</code> service, which is listening on port 80.</p>
<p>In addition to host-based routing, Ingress rules can also route based on the URL path. Here's an example of an Ingress rule that routes traffic based on the URL path:</p>
<pre><code class="lang-plaintext">apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /app1
        pathType: Prefix
        backend:
          service:
            name: app1-service
            port:
              name: http
      - path: /app2
        pathType: Prefix
        backend:
          service:
            name: app2-service
            port:
              name: http
</code></pre>
<p>This Ingress rule specifies that requests to <a target="_blank" href="http://example.com/app1"><code>example.com/app1</code></a> should be routed to the <code>app1-service</code> service, and requests to <a target="_blank" href="http://example.com/app2"><code>example.com/app2</code></a> should be routed to the <code>app2-service</code> service.</p>
<h3 id="heading-how-to-use-ingress"><strong>How to Use Ingress</strong></h3>
<p>To use Ingress, you'll first need to set up an Ingress controller. There are several Ingress controllers available, including Nginx, Traefik, and HAProxy. You can choose the Ingress controller that best fits your needs based on features, performance, and ease of use.</p>
<p>Once you've set up your Ingress controller, you can create Ingress rules that define how traffic should be routed to your services. Ingress rules are defined using YAML files and consist of a set of rules that map incoming requests to services based on the request's host and path.</p>
<p>Here's an example of an Ingress rule that routes traffic based on the host:</p>
<pre><code class="lang-plaintext">apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: example-service
            port:
              name: http
</code></pre>
<p>In this example, requests to <a target="_blank" href="http://example.com"><code>example.com</code></a> are routed to the <code>example-service</code> service.</p>
<p>You can also route traffic based on the URL path using Ingress rules. Here's an example of an Ingress rule that routes traffic based on the URL path:</p>
<pre><code class="lang-plaintext">apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /app1
        pathType: Prefix
        backend:
          service:
            name: app1-service
            port:
              name: http
      - path: /app2
        pathType: Prefix
        backend:
          service:
            name: app2-service
            port:
              name: http
</code></pre>
<p>In this example, requests to <a target="_blank" href="http://example.com/app1"><code>example.com/app1</code></a> are routed to the `app1'</p>
<h3 id="heading-network-policies"><strong>Network Policies</strong></h3>
<p>Network Policies provide a way to control traffic flow at the pod level. Network Policies can be used to control ingress and egress traffic, restrict traffic to specific pods, and restrict traffic based on the source or destination IP address. Network Policies are important for securing the network infrastructure of Kubernetes clusters.</p>
<h3 id="heading-dns">DNS</h3>
<p>DNS (Domain Name System) is a system for translating domain names into IP addresses. In Kubernetes, DNS is used to provide a consistent way to access services within the cluster. Kubernetes has an integrated DNS server that can be used to provide DNS resolution for services within the cluster. DNS is important for managing the network infrastructure of Kubernetes clusters.</p>
<h3 id="heading-cni-plugins">CNI Plugins</h3>
<p>CNI (Container Network Interface) plugins provide a way to configure network interfaces for containers. CNI plugins are responsible for configuring networking between containers and the host. Kubernetes supports a variety of CNI plugins such as Calico, Flannel, and Weave. CNI plugins are important for configuring the network infrastructure of Kubernetes clusters.</p>
<p>Now Let's see an example of a hands-on exercise you can try on an Amazon EC2 instance:</p>
<h2 id="heading-deploying-a-web-application-with-kubernetes-networking">Deploying a Web Application with Kubernetes Networking</h2>
<p><strong>Prerequisite:</strong></p>
<ol>
<li><p>Create an Amazon EC2 instance and install Kubernetes using a tool like kubeadm.</p>
</li>
<li><p>Deploy a simple web application, such as nginx, using a Kubernetes deployment. Use a replica count of 2 to ensure high availability.</p>
</li>
</ol>
<p><strong>Steps:</strong></p>
<pre><code class="lang-plaintext">apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.16
        ports:
        - containerPort: 80
</code></pre>
<ol>
<li>Create a Kubernetes Service to expose the nginx deployment. Use the <code>type: LoadBalancer</code> to create an Amazon Elastic Load Balancer (ELB) to handle external traffic.</li>
</ol>
<pre><code class="lang-plaintext">apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: LoadBalancer
</code></pre>
<ol>
<li><p>Use <code>kubectl get services</code> to retrieve the IP address of the ELB, and use a web browser to visit that IP address. You should see the nginx default welcome page.</p>
</li>
<li><p>Create an Ingress resource to route traffic to the nginx service based on the requested URL path. Use annotations to specify the ingress class and the SSL certificate to use.</p>
</li>
</ol>
<pre><code class="lang-plaintext">apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/ssl-certificate: "my-tls-cert"
spec:
  rules:
  - http:
      paths:
      - path: /nginx
        pathType: Prefix
        backend:
          service:
            name: nginx-service
            port:
              name: http
</code></pre>
<ol>
<li>Install and configure the nginx ingress controller using Helm. Use the stable/nginx-ingress chart, and enable TLS by creating a secret with your SSL certificate.</li>
</ol>
<pre><code class="lang-plaintext">helm repo add stable https://charts.helm.sh/stable
helm install my-nginx stable/nginx-ingress \
    --set controller.publishService.enabled=true \
    --set controller.service.type=LoadBalancer \
    --set controller.service.externalTrafficPolicy=Local \
    --set controller.service.annotations."service\.beta\.kubernetes\.io/aws-load-balancer-ssl-cert"="my-tls-cert" \
    --set controller.scope.enabled=true \
    --set rbac.create=true \
    --set controller.stats.enabled=true
</code></pre>
<ol>
<li><p>Use <code>kubectl get ingress</code> to retrieve the DNS name of the ingress controller, and use a web browser to visit that DNS name with the <code>/nginx</code> path. You should see the nginx default welcome page again.</p>
</li>
<li><p>Create a Network Policy to restrict traffic to the nginx service based on the source IP address. Use a <code>namespaceSelector</code> to select the namespace containing the nginx deployment, and a <code>podSelector</code> to select the nginx pods. Use an <code>ingress</code> rule to allow traffic only from a specific IP address range.</p>
<pre><code class="lang-plaintext">  apiVersion: networking.k8s.io/v1
  kind: NetworkPolicy
  metadata:
    name: nginx-policy
  spec:
    podSelector:
      matchLabels:
        app: nginx
    policyTypes:
    - Ingress
    ingress:
    - from:
      - ipBlock:
          cidr: 10.0.0.0/16
</code></pre>
</li>
<li><p>Use <code>kubectl describe networkpolicy nginx-policy</code> to verify that the policy was created and is enforcing the desired traffic restrictions.</p>
<p> This Network Policy restricts all ingress traffic to the nginx pods to only the IP address range of 10.0.0.0/16. By using Kubernetes networking features like Network Policies, you can add an extra layer of security to your cluster, helping to ensure that your applications are protected from unauthorized access.</p>
</li>
</ol>
<p>In conclusion, Kubernetes networking provides a powerful set of tools for managing the network infrastructure for containerized applications. Services, Ingress, Network Policies, DNS, and CNI plugins are important components of Kubernetes networking that provide a stable IP address and DNS name for accessing the application, control traffic flow at the pod level, translate domain names into IP addresses, and configure network interfaces for containers. Understanding these components is essential for managing the network infrastructure of Kubernetes clusters.</p>
<h1 id="heading-resources"><strong>Resources:</strong></h1>
<p><a target="_blank" href="https://www.digitalocean.com/community/tutorials/an-introduction-to-the-kubernetes-dns-service#what-does-the-kubernetes-dns-service-provide"><strong>https://www.digitalocean.com/community/tutorials/an-introduction-to-the-kubernetes-dns-service#what-does-the-kubernetes-dns-service-provide</strong></a></p>
<p><a target="_blank" href="https://kodekloud.com/blog/kubernetes-ingress/"><strong>https://kodekloud.com/blog/kubernetes-ingress/</strong></a></p>
<p><a target="_blank" href="https://www.kloia.com/blog/why-do-we-use-cni-plugins-on-kubernetes"><strong>https://www.kloia.com/blog/why-do-we-use-cni-plugins-on-kubernetes</strong></a></p>
<h1 id="heading-thank-you-stay-connected"><strong>Thank You! Stay Connected☁️👩‍💻</strong></h1>
<p>The above information is up to my understanding. Suggestions are always welcome.</p>
<p><a class="user-mention" href="https://hashnode.com/@jarora19">Jatin Arora</a></p>
<p>#Kubernetes #Devops #Trainwithshubham #Kubeweek #kubeweekchallenge</p>
<p><strong>Mentored by-  
</strong><a class="user-mention" href="https://hashnode.com/@ShubhamLondhe">Shubham Londhe</a></p>
]]></content:encoded></item><item><title><![CDATA[Kubeweek Challenge Day1 : Kubernetes Architecture and Components, Kubernetes installation and configuration.]]></title><description><![CDATA[Challenges that were faced before Kubernetes came into the picture

Manual Orchestration

Lack of Portability

Inconsistent Deployment

Limited Resource Management


Kubernetes addressed these problems by providing a robust, flexible, and portable pl...]]></description><link>https://brogrammers.hashnode.dev/kubeweek-challenge-day1-kubernetes-architecture-and-components-kubernetes-installation-and-configuration</link><guid isPermaLink="true">https://brogrammers.hashnode.dev/kubeweek-challenge-day1-kubernetes-architecture-and-components-kubernetes-installation-and-configuration</guid><category><![CDATA[Kubernetes]]></category><category><![CDATA[#kuberweekchallenge-day1]]></category><category><![CDATA[#KubeWeekChallenge ]]></category><category><![CDATA[#kubeweek]]></category><category><![CDATA[k8s]]></category><dc:creator><![CDATA[Jatin Arora]]></dc:creator><pubDate>Tue, 25 Apr 2023 17:55:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1682444917226/8a7fb4cb-98da-4d39-a97e-3f8245a10d31.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-challenges-that-were-faced-before-kubernetes-came-into-the-picture"><strong>Challenges that were faced before Kubernetes came into the picture</strong></h3>
<ul>
<li><p>Manual Orchestration</p>
</li>
<li><p>Lack of Portability</p>
</li>
<li><p>Inconsistent Deployment</p>
</li>
<li><p>Limited Resource Management</p>
</li>
</ul>
<p>Kubernetes addressed these problems by providing a robust, flexible, and portable platform for managing containerized applications. It abstracts away the complexity of managing containers and provides a consistent interface for deploying and managing applications across different environments. It also provides features for resource management, automatic scaling, and self-healing, which make it easier to operate and manage containerized applications at scale.</p>
<p>This blog will discuss the architecture and components of Kubernetes and Kubernetes Installation and Configuration.</p>
<h2 id="heading-kubernetes-architecture"><strong>Kubernetes Architecture</strong></h2>
<p>Kubernetes has a master-worker architecture. The master node manages the cluster and coordinates the tasks assigned to worker nodes. The worker nodes are responsible for running the applications and services.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:981/1*HXbT0c4Q5XaiCIp6y3VMvw.png" alt="Components of Kubernetes Architecture | by Gaurav Gupta | Medium" /></p>
<h3 id="heading-master-components"><strong>Master components</strong></h3>
<ul>
<li><p>The <strong>API server</strong>, which exposes an API that you can use to interact with your cluster.</p>
</li>
<li><p>The <strong>etcd database</strong>, which stores the configuration data for your cluster.</p>
</li>
<li><p>The <strong>controller manager</strong>, which watches the state of your cluster and makes changes as necessary.</p>
</li>
<li><p>The <strong>kube scheduler</strong>, which decides where to place your containers based on resource constraints and other factors.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1627227041570/vq8vkHfJF.png" alt="Kubernetes Architecture - Master Node" /></p>
<h3 id="heading-worker-components"><strong>Worker components</strong></h3>
<ul>
<li><p>The <strong>kubelet</strong>, runs on each node and communicates with the master node to get instructions on what containers to run.</p>
</li>
<li><p>The <strong>kube-proxy</strong>, handles network traffic between your containers.</p>
</li>
<li><p>The <strong>container runtime</strong>, which actually runs your containers (like Docker).</p>
</li>
<li><p>The <strong>pod</strong> is the smallest and simplest unit in the deployment model. It is a logical host for one or more containers that share the same network namespace and storage volumes.</p>
</li>
<li><p>Add-ons: Add-ons are optional components that extend the functionality of Kubernetes. Examples of add-ons include the Kubernetes Dashboard, DNS, and monitoring tools.</p>
</li>
</ul>
<p><img src="https://startkubernetes.com/static/771d7faf2ce188f54440c2ed984fa080/29be2/k8s-worker.png" alt="Kubernetes master and worker nodes" /></p>
<h2 id="heading-installing-and-configuring-kubernetes"><strong>Installing and Configuring Kubernetes</strong></h2>
<ul>
<li>Launch 2 instances <strong>master</strong> and <strong>worker(node)</strong>, in this installation guide we will be installing kubeadm so we need at least t2.medium for master node and worker node can be t2.micro.</li>
</ul>
<p>STEP 1: On Master Node Only:</p>
<ul>
<li><p>Kindly execute the below commands to Configure Docker Daemon:</p>
<pre><code class="lang-plaintext">  sudo su –
  sudo wget https://raw.githubusercontent.com/lerndevops/labs/master/kubernetes/0-install/daemon.json -P /etc/docker
  sudo systemctl restart docker.service
  sudo service docker status
</code></pre>
<ul>
<li><p>Initialize kubernetes Master Node by running the following command:</p>
<pre><code class="lang-plaintext">  sudo kubeadm init
</code></pre>
<ul>
<li><p>To fix the problem of "The connection to the server <a target="_blank" href="http://localhost:8080"><strong>localhost:8080</strong></a> was refused - did you specify the right host or port?", please run the below-mentioned commands:</p>
<pre><code class="lang-plaintext">  sudo mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown (id -g) $HOME/.kube/config
</code></pre>
<ul>
<li><p>Install networking driver -- Weave/flannel/canal/calico etc. by executing the following command:</p>
<pre><code class="lang-plaintext">  sudo kubectl apply -f
  https://raw.githubusercontent.com/projectcalico/calico/v3.24.1/manifests/calico.yaml
</code></pre>
<ul>
<li>Validate using the command "kubectl get nodes"</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>                Step 2: ON ALL Worker Nodes</p>
<ul>
<li><p>Configure Docker Daemon on all worker nodes by executing the below commands:</p>
<pre><code class="lang-plaintext">  sudo su -
  hostname WORKER1
  sudo su -sudo wget https://raw.githubusercontent.com/lerndevops/labs/master/kubernetes/0-install/daemon.json -P /etc/docker
  sudo systemctl restart docker.service
  sudo service docker status
</code></pre>
</li>
</ul>
<ul>
<li><p>Run Below on Master Node to get join token and copy the kubeadm join token from master &amp; run it on all nodes with the command "sudo kubeadm join &lt;master-node-ip&gt;:6443 --token mks3y2.v03tyyru0gy12mbt --discovery-token-ca-cert-hash sha256:3de23d42c7002be0893339fbe558ee75e14399e11f22e3f0b34351077b7c4b56"</p>
</li>
<li><p>Validate on master node using the commands "kubectl get nodes" and "kubectl get nodes -o wide"</p>
</li>
<li><p>If nodes are with status as NotReady, then delete the node and join it again in the cluster by executing the below steps:</p>
<p>  On Master Node:</p>
<p>  <code>kubectl delete node nodename</code></p>
<p>  <code>kubectl get nodes</code></p>
<p>  On the same Worker node that we have to delete:</p>
<p>  <code>kubeadm reset --force</code></p>
<p>  On master Node: generate the token again, execute the below command:</p>
<p>  <code>sudo kubeadm token create --print-join-command</code></p>
<p>  Copy the token</p>
<p>  On Worker Node: Copy the token, the node will join the master node</p>
<p>  On Master Node: <code>kubectl get nodes</code></p>
</li>
</ul>
<p>To install and configure Kubernetes, you can use many of the following methods:</p>
<ol>
<li><p>Kubernetes the Hard Way: This method involves manually configuring each component of the Kubernetes architecture. It is a good option if you want to learn how Kubernetes works under the hood.</p>
</li>
<li><p>Minikube: Minikube is a tool that enables you to run a single-node Kubernetes cluster on your local machine. It is an easy way to get started with Kubernetes without having to set up a full cluster.</p>
</li>
<li><p>Kubernetes on a Cloud Provider: Most cloud providers offer managed Kubernetes services that enable you to deploy and manage Kubernetes clusters without having to worry about the underlying infrastructure.</p>
</li>
</ol>
<p>Once you have installed Kubernetes, you can configure it to meet your specific needs. Some common configuration tasks include:</p>
<ul>
<li><p>Creating namespaces to isolate applications.</p>
</li>
<li><p>Configuring networking to enable communication between pods and services.</p>
</li>
<li><p>Defining resource quotas to limit resource usage by namespaces or applications.</p>
</li>
</ul>
<p>Thanks and please follow for more blogs <a class="user-mention" href="https://hashnode.com/@jarora19">Jatin Arora</a></p>
]]></content:encoded></item></channel></rss>