<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Swapnil V. Patil</title>
    <description>The latest articles on DEV Community by Swapnil V. Patil (@patilswapnilv).</description>
    <link>https://dev.to/patilswapnilv</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F377954%2Fafe4efab-de43-4c3e-ab38-679aca820003.png</url>
      <title>DEV Community: Swapnil V. Patil</title>
      <link>https://dev.to/patilswapnilv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/patilswapnilv"/>
    <language>en</language>
    <item>
      <title>Getting Started with Kubernetes Networking</title>
      <dc:creator>Swapnil V. Patil</dc:creator>
      <pubDate>Wed, 19 Oct 2022 19:18:46 +0000</pubDate>
      <link>https://dev.to/patilswapnilv/getting-started-with-kubernetes-networking-2c55</link>
      <guid>https://dev.to/patilswapnilv/getting-started-with-kubernetes-networking-2c55</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Mi6OHLtp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AdU-9dtjXELSXRRBWhaJtEg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Mi6OHLtp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AdU-9dtjXELSXRRBWhaJtEg.jpeg" alt="" width="880" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this article, we will examine the idea of Kubernetes networking with the help of 10 detailed diagrams and additional context for both novice and experienced readers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Networking is a key topic in the Kubernetes universe. In addition to the fact that Kubernetes applications require access to resources outside the cluster to function, Kubernetes networking also allows you freedom. It promotes the usage of loosely linked service architectures.&lt;/p&gt;

&lt;p&gt;We’ll expose you to the fundamentals of Kubernetes networking in this article. We’ll discuss how loosely coupled services may interact to build sophisticated, large-scale systems, how these services can talk to other services, and how different services can talk to our services.&lt;/p&gt;

&lt;h3&gt;
  
  
  Terminology Used in Networking
&lt;/h3&gt;

&lt;p&gt;We need to define a few networking terminologies before we can begin to talk about Kubernetes. There are a few basic methods that one system communicates with another system in almost all networked systems.&lt;/p&gt;

&lt;p&gt;In Figure 1, an application is communicating with Computer “A” on the left and Computer “B” on the right. Several things need to take place for that conversation to happen.&lt;/p&gt;

&lt;p&gt;First, Computer “A” must determine the location of the program using the following two pieces of knowledge:&lt;/p&gt;

&lt;h3&gt;
  
  
  Hostname.
&lt;/h3&gt;

&lt;p&gt;The Computer “B” has been given this unique name. We are using app.myapp.com in this instance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Port quantity.
&lt;/h3&gt;

&lt;p&gt;This particular address on Computer “B” indicates which program to communicate with on that machine. In this example, the port number is “12953.”&lt;/p&gt;

&lt;p&gt;To locate the desired application, Computer “A” takes the hostname and performs a lookup to determine the computer’s IP address. The IP address is the address the underlying network protocols use to locate Computer “B.” It does this by contacting a service called DNS, or Domain Name System. The DNS service performs a lookup to map the hostname to the computer’s IP address. This is analogous to how a phone book is used to find a person’s name and phone number.&lt;/p&gt;

&lt;p&gt;Once Computer “A” knows the IP address of Computer “B,” it can send a message to “B” by sending it to the IP address.&lt;/p&gt;

&lt;p&gt;This IP address is connected with a particular network interface on computer “B.” The message is sent to a specific port on Computer “B,” allowing it to be delivered to the desired application. A network interface/port number pair is assigned to each application on the computer, ensuring that all communications arriving on a specific network interface (identified by the IP address) and a particular port number are forwarded to the intended application.&lt;/p&gt;

&lt;p&gt;Many port numbers are standard among popular applications to make it simpler to discover the relevant program. For instance, port 80 is used by the “HTTP service,” which handles requests for online pages. The “FTP service” for file transfers uses port 21. For the “SMTP service,” port 25 is the standard port used to send emails.&lt;/p&gt;

&lt;p&gt;There may be several network interfaces on a machine (for instance, a cell phone typically has one for WiFi networking and one for cellular networking). Additionally, they could include one or more virtual network interfaces. As a result, a single machine might be linked to multiple IP addresses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rQIETaEo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/721/1%2AG73frvb53i1gNX0siuShvA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rQIETaEo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/721/1%2AG73frvb53i1gNX0siuShvA.png" alt="" width="721" height="461"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure.1 Terminology Used in Networking&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is the foundation for all application-to-application and user-to-application networking on the internet today.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fundamental Kubernetes Cluster
&lt;/h3&gt;

&lt;p&gt;When it comes to Kubernetes clusters, things get a little more intricate. Let’s take a look at the fundamental components of a Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;Containers like those created with Docker run our applications and application services. These containers are contained within a Kubernetes object known as a pod. A pod is a Kubernetes system’s smallest addressable component. A single pod contains a single container (although it can include multiple containers cooperating) and accomplishes the work of a single service instance.&lt;/p&gt;

&lt;p&gt;In a Kubernetes-based system, many pod instances will typically run concurrently for the same application. When these pods are combined, they form a Kubernetes service. A Kubernetes service is a collection of deployed pods performing the same function. A service will distribute the workload it must perform across all of its pods. An application will typically have several instances of such a particular service running to distribute the workload and provide a higher level of availability.&lt;/p&gt;

&lt;p&gt;Each pod in each service must be run on a computer instance. These computer instances are referred to as nodes in Kubernetes. A Kubernetes node can be a standalone server or a virtualized server instance. To increase availability, the nodes of a single service are typically distributed across multiple nodes. As a result, if a node fails and the pods on that node terminate, the service can continue to operate by distributing the workload to other pods on other nodes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aMYlPXhd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/672/1%2AMuIiPE2KUqma1CtRh5ZMtA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aMYlPXhd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/672/1%2AMuIiPE2KUqma1CtRh5ZMtA.png" alt="" width="672" height="483"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 2. The Fundamental Kubernetes Cluster&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A Kubernetes cluster is formed by all of the nodes running all of the pods in a Kubernetes system working together. Figure 2 depicts the components of a single cluster.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inter-Pod Communication
&lt;/h3&gt;

&lt;p&gt;We already mentioned network interfaces, but one feature of network interfaces is that they enable a single computer to divide processes into multiple network namespaces, each of which is assigned to a different ethernet interface. Namespaces are typically isolated and cannot communicate with one another without passing through the ethernet interface. Each pod in a Kubernetes cluster is assigned a unique namespace, so you must communicate with the code running in the pod via the assigned ethernet interface.&lt;/p&gt;

&lt;p&gt;The node establishes a network tunnel between each pod and the root namespace. Pods can communicate because they all have a tunnel to the root namespace. The root namespace is also a namespace for the node.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UQviNzit--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/916/1%2A0ZGOk9Pb580THg-BctNb3Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UQviNzit--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/916/1%2A0ZGOk9Pb580THg-BctNb3Q.png" alt="" width="880" height="414"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 3 shows an example of this.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The root namespace assigns a unique IP address to each pod (a unique range of IP addresses called a CIDR block). Messages sent from one pod are routed to the correct pod by the root namespace using the message’s destination IP address. This is exactly how messages are sent from one computer to another in regular networking. Messages are sent from one pod to another in this case.&lt;/p&gt;

&lt;p&gt;When a message is sent to an IP address representing a pod on another node in a different node case, the root namespace sends the message over the typical network connecting the nodes to the node with the destination pod. The message is sent to the destination node’s root namespace, which routes it to the appropriate pod. The same model applies to communication between two pods on the same node and between two pods on different nodes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2evdD5L5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AwdAhHm2J92X-2IA8Z8m-lw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2evdD5L5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AwdAhHm2J92X-2IA8Z8m-lw.png" alt="" width="880" height="378"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 4. Pod to pod communications across nodes&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;“How does the root namespace know which node to send a message to?” is an intriguing question. How does any given node know where to send a message for it to reach the correct pod? “ Each node may have hundreds of pods, each with one or more unique IP addresses (CIDR blocks), and a Kubernetes cluster may contain hundreds of nodes.”&lt;/p&gt;

&lt;p&gt;Kubernetes ensures that each pod in the cluster has a distinct set of IP addresses, allowing each pod to be identified. The IP addresses and how to get to them are then broadcast to each node in the system using a standard network protocol known as ARP. This protocol generates a map, or route, from any given node to any other node’s IP address. Because the exact makeup of pods in the system can change frequently, this protocol dynamically creates this map, which is automatically updated continuously.&lt;/p&gt;

&lt;p&gt;The same question arises in traditional networking: “How do you know where to send a message destined for a specific IP address?” The same ARP protocol, along with other standard routing protocols and default routes, determines how any given computer on the internet can communicate with any other computer on the internet automatically and dynamically. In addition, the ARP protocol is used in standard host-based networking. It’s dynamic, fast, scalable to a massive number of hosts, and highly stable. It has been the backbone of the internet since the 1960s.&lt;/p&gt;

&lt;h3&gt;
  
  
  Communication via Services
&lt;/h3&gt;

&lt;p&gt;Although each pod has an IP address that allows it to be directly addressed, this model has one major flaw. Pods appear and disappear. If a pod encounters a problem, it is terminated, and a new pod is launched. New pods are created when traffic to a service increases and more instances are required to handle the traffic. Pods are essentially temporary, and so are their IP addresses. How can you send a message to a pod when the IP addresses of the pods change?&lt;/p&gt;

&lt;p&gt;The service is the solution to that problem. A Kubernetes service is a front end for a collection of pods that perform the same functions. All pods in a system that perform the same functions are considered part of the same service. Pods are added and removed from the corresponding service as they are launched and terminated, ensuring that the service always has a list of valid pods and IP addresses.&lt;/p&gt;

&lt;p&gt;If you need the capabilities of a pod, you now send a message to the service rather than directly to the pod. The request is then routed to one of the pods that the service knows is active. The service can load balance requests across a series of pods performing the same capability, even if those pods are located on different nodes.&lt;/p&gt;

&lt;p&gt;The service keeps track of which pods are currently active and routes requests to the appropriate active pod. The service is associated with a fixed, assigned IP address. This IP address is typically never changed, so anyone wishing to engage a pod to perform some action can contact the service at a well-known IP address without worrying about which pod is implementing the request. Figure 5 depicts a service called “ABC” and the pods to which it is linked. In the diagram, one pod is dying, and a new pod is being created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wKsxBhKR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/486/1%2ApIXVaCSuMiPke-S_YNERPw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wKsxBhKR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/486/1%2ApIXVaCSuMiPke-S_YNERPw.png" alt="" width="486" height="411"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 5 shows how a service generates a virtual address in front of changing pods.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Pod to the Service
&lt;/h3&gt;

&lt;p&gt;When services are involved, the network message routing for one pod talking to another differs slightly. Figure 6 shows Pod A sending a message to Service ABC. This service in the node’s root namespace determines which pod to send the request to. It then updates the message’s IP address to include the correct IP address of the selected pod and forwards the request to that pod (Pod D in this example). The message routing from the service to the pod is the same as shown in Figure 4. If a pod is terminated and a new one is created, the new pod will receive requests sent to the service instead of the old one. The pod mapping service is entirely dynamic&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0o90VHq1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AwBjJSdDBfnNH8fgLBmW1wQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0o90VHq1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AwBjJSdDBfnNH8fgLBmW1wQ.png" alt="" width="880" height="493"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 6: Service-based pod-to-pod communication.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  External Internet to Service
&lt;/h3&gt;

&lt;p&gt;Services enable the external internet to easily access the capabilities of the pods within the cluster without having any knowledge of how the pods are laid out in the cluster. A load balancer is attached to the front end of the system facing the internet when a service is created that is designed to accept traffic from the external internet. It directs traffic to the nodes containing the service. The service then selects an appropriate node to which to send the message. As a result, an external internet request can be routed to a specific pod without the requestor knowing the address of the pod.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5KIcXUiM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Af-5oBwfEbCsvefvAMwvNnA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5KIcXUiM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Af-5oBwfEbCsvefvAMwvNnA.png" alt="" width="880" height="493"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 7. Service load balancer for external internet access&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Figure 7 depicts a message being routed from the external internet (bottom of image) to the service load balancer, then to the service on a node, and finally to the destination pod.&lt;/p&gt;

&lt;h3&gt;
  
  
  Services for DNS and Kubernetes
&lt;/h3&gt;

&lt;p&gt;The service has a publicly visible IP address for receiving traffic, we can enter it into DNS and refer to it by its hostname rather than its IP address. Figure 8 depicts the hostname “app.myapp.com,” which maps the request to the IP address of the service load balancer in charge of this service.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZUIPMiwK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Af7VAMHY9Qxtdmws0h2kRXA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZUIPMiwK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Af7VAMHY9Qxtdmws0h2kRXA.png" alt="" width="880" height="614"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 8: DNS allows for application discovery.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Communication between clusters
&lt;/h3&gt;

&lt;p&gt;Communication between pods in two different clusters is handled similarly to communication with the outside internet. The pod sending the request queries DNS for the hostname and obtains the IP address of the service load balancer. The load balancer routes the request to one of the destination cluster’s nodes. This node routes the request to the correct pod within the destination cluster.&lt;/p&gt;

&lt;h3&gt;
  
  
  Large-scale Service-Oriented Applications
&lt;/h3&gt;

&lt;p&gt;Using Kubernetes to build a large service-based application is an exercise in creating multiple Kubernetes services, each of which operates numerous pods. The pods are distributed across multiple nodes to ensure proper load balancing and service-level availability.&lt;/p&gt;

&lt;p&gt;Figure 9 depicts a typical service-oriented application (top) and how Kubernetes services and pods map onto it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IVoJs4Lv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AnljQRwChTRrrfa39IZSHzg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IVoJs4Lv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AnljQRwChTRrrfa39IZSHzg.png" alt="" width="880" height="651"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 9. Kubernetes services and nodes are mapped to a service-based application.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These nodes are spread across multiple nodes within the cluster, with pods for each service distributed across numerous nodes for availability. Figure 10 depicts the application as seen by pods running on nodes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qymIr9uB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Aox7j2jXFl_ros-FCEALi5Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qymIr9uB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Aox7j2jXFl_ros-FCEALi5Q.png" alt="" width="880" height="493"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 10: Node-based service-based application&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This application distribution makes it easy to see why pod-to-pod communication across node boundaries via services is so important. In a Kubernetes cluster environment, Kubernetes provides the networking infrastructure for complex service-oriented architectures to exist and thrive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Last Thoughts
&lt;/h3&gt;

&lt;p&gt;This was a basic explanation of how networking works in a Kubernetes cluster. Kubernetes is very flexible regarding how it allows communication between pods within the cluster and with the internet. While the details can become technical, the high-level overview is straightforward. Kubernetes networking offers a sophisticated and adaptable model for networking in a distributed containerized environment.&lt;/p&gt;




</description>
      <category>containerorchestrati</category>
      <category>kubernetescluster</category>
      <category>devops</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>10 Git Best Practices to Start Using in Your Next Git Commit</title>
      <dc:creator>Swapnil V. Patil</dc:creator>
      <pubDate>Sun, 16 Oct 2022 18:27:43 +0000</pubDate>
      <link>https://dev.to/patilswapnilv/10-git-best-practices-to-start-using-in-your-next-git-commit-4hd3</link>
      <guid>https://dev.to/patilswapnilv/10-git-best-practices-to-start-using-in-your-next-git-commit-4hd3</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8ErRWyLX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/880/1%2AzZ5vKwLF4ZIp98fsYQ4U0w.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8ErRWyLX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/880/1%2AzZ5vKwLF4ZIp98fsYQ4U0w.jpeg" alt="" width="880" height="495"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Conflict?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Don’t we all eventually find ourselves wondering…?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What aims does this code pursue?&lt;/li&gt;
&lt;li&gt;How did this bug get there?&lt;/li&gt;
&lt;li&gt;How should I start working on this sizable pull request?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Code comments, style guides, and documentation are a few solutions to these problems, and we all, at some point, have unavoidably wasted hours trying to comprehend code.&lt;/p&gt;

&lt;p&gt;Git commits are more than just saved points or logs of every single step in a larger project. A stable and collaborative open or closed-source project depends on high-quality Git commits.&lt;/p&gt;

&lt;p&gt;Let's discuss some pointers to enhance and streamline your development process. So without further ado, let’s get started.&lt;/p&gt;
&lt;h3&gt;
  
  
  What do commits mean 🤷‍♂️
&lt;/h3&gt;

&lt;p&gt;Commits are periodic &amp;amp; logical changes; Ideally, each change is the smallest possible unit in the git repository. The history of your repository and how it came to be the way it is now should be chronicled throughout time through commits.&lt;/p&gt;

&lt;p&gt;To put it simply, commits are a first-person historical record of precisely how and why each line of code was created.&lt;/p&gt;

&lt;p&gt;Commits work best when they are polished and adjusted to specifically address their target audiences, which may include reviewers, other contributors, and even your future self.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Anatomy of a Commit Message 🫀
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Basic:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m &amp;lt;message&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Detailed:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m &amp;lt;title&amp;gt; -m &amp;lt;description&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Writing Better Commits 👍
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Capitalization and Punctuation 🅰️
&lt;/h3&gt;

&lt;p&gt;Put the first word in capital letters and omit the period in the end. Keep in mind to utilize just lowercase letters while utilizing traditional commits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mood 🌚
&lt;/h3&gt;

&lt;p&gt;In the subject line, use the imperative mood. When you use the imperative mood, you convey that you are issuing a command or request.&lt;/p&gt;

&lt;h3&gt;
  
  
  Type of Commit 🥸
&lt;/h3&gt;

&lt;p&gt;Indicate the kind of commit. A set of phrases to explain your consistent modifications across the board is advised and much more helpful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Length 🍢
&lt;/h3&gt;

&lt;p&gt;The body should be limited to 72 characters, and the opening line should ideally not exceed 50 characters.&lt;/p&gt;

&lt;h3&gt;
  
  
  Content 📃
&lt;/h3&gt;

&lt;p&gt;Be concise and attempt to avoid using extraneous words and phrases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Structure the narrative 🪶
&lt;/h3&gt;

&lt;p&gt;The “story” of your modification is contextualized with the code using the narrative framework of a series of commits. Your project’s history should be depicted in the commits. It ought to be your project’s biography.&lt;/p&gt;

&lt;p&gt;Commits that are disjointed and lack a straightforward narrative will impact both the reviewer and the developer.&lt;/p&gt;

&lt;p&gt;The reviewer will have to switch contexts if those commits don’t provide a straightforward narrative since they move from subject to subject.🥴&lt;/p&gt;

&lt;p&gt;Rearrange your commits to correspond to your narrative’s plan.&lt;/p&gt;

&lt;h3&gt;
  
  
  Huenry Hueffman 🔜 Reboot Blue on Twitter: "I fucked up Git so bad it turned into Guitar Hero pic.twitter.com/vUKZJAQKWg / Twitter"
&lt;/h3&gt;

&lt;p&gt;I fucked up Git so bad it turned into Guitar Hero pic.twitter.com/vUKZJAQKWg&lt;/p&gt;

&lt;h3&gt;
  
  
  Resize and stabilize the commits ⚛️
&lt;/h3&gt;

&lt;p&gt;The code in each commit generates software, even though the structure of a commit series might describe a feature’s high-level history. Even though code can be pretty sophisticated, people must comprehend it to work together. Make each commit “atomic” and “short,” then.&lt;/p&gt;

&lt;p&gt;A small commit only does one “thing” and has a limited reach. When a commit is a reliable, standalone change unit, it is atomic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Explain the context ❓
&lt;/h3&gt;

&lt;p&gt;Code in commits is only one aspect of what they are. Although valuable, commit messages are frequently ignored commit components. In the commit message, please explain what you’re doing and why you’re doing it.&lt;/p&gt;

&lt;p&gt;What readers need to grasp should be communicated in a committed message’s content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Commit Early &amp;amp; Often ⌚
&lt;/h3&gt;

&lt;p&gt;Early and frequent commitments help you commit just related changes and keep your commits minimal. Additionally, it enables you to avoid merge conflicts and share your code more frequently with others.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xD7ZmCKz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/1%2AIliSegGGHdUCBOgnSa2Ixw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xD7ZmCKz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/1%2AIliSegGGHdUCBOgnSa2Ixw.png" alt="" width="600" height="908"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;I know Git, depending on what you mean by “know”.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conventional Commits 📜
&lt;/h3&gt;

&lt;p&gt;Conventional commit is a formatting standard that offers a set of guidelines for creating a constant commit message structure.&lt;/p&gt;

&lt;p&gt;The following is a list of possible commit types:&lt;/p&gt;

&lt;h3&gt;
  
  
  feat
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Title: Feature&lt;/li&gt;
&lt;li&gt;Description: A completely new feature&lt;/li&gt;
&lt;li&gt;Emoji: ✨&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  fix
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Title: Bug Fix&lt;/li&gt;
&lt;li&gt;Description: A bug fix&lt;/li&gt;
&lt;li&gt;Emoji: 🐛&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  docs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Title: Documentation&lt;/li&gt;
&lt;li&gt;Description: Changes only to the documentation&lt;/li&gt;
&lt;li&gt;Emoji: 📚&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  style
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Title: Styles&lt;/li&gt;
&lt;li&gt;Description: Alterations that don’t change the code’s intent(white space, formatting, missing semi-colons, etc.)&lt;/li&gt;
&lt;li&gt;Emoji: 💎&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  refactor
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Title: Code Refactoring&lt;/li&gt;
&lt;li&gt;Description: An update to the code that neither adds features nor fixes bugs&lt;/li&gt;
&lt;li&gt;Emoji: 📦&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  perf
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Title: Performance Improvements&lt;/li&gt;
&lt;li&gt;Description: A performance-enhancing tweak to the code&lt;/li&gt;
&lt;li&gt;Emoji: 🚀&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  test
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Title: Tests&lt;/li&gt;
&lt;li&gt;Description: Addition of tests or updating of tests&lt;/li&gt;
&lt;li&gt;Emoji: 🚨&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  build
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Title: Builds&lt;/li&gt;
&lt;li&gt;Description: Modifications to the build system or external dependencies&lt;/li&gt;
&lt;li&gt;Emoji: ⚒️&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ci
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Title: Continuous Integrations&lt;/li&gt;
&lt;li&gt;Description: Modifications to our CI configuration scripts and files&lt;/li&gt;
&lt;li&gt;Emoji: ⚙️&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  chore
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Title: Chores&lt;/li&gt;
&lt;li&gt;Description: Other updates that don’t alter the test or src files&lt;/li&gt;
&lt;li&gt;Emoji: ♻️&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  revert
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Title: Reverts&lt;/li&gt;
&lt;li&gt;Description: Reverts a previous commit&lt;/li&gt;
&lt;li&gt;Emoji: 🗑&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, let’s see some commit aliases:&lt;/p&gt;

&lt;h3&gt;
  
  
  initial
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Maps to: feat&lt;/li&gt;
&lt;li&gt;Title: Initial&lt;/li&gt;
&lt;li&gt;Description: Initial Commit&lt;/li&gt;
&lt;li&gt;Emoji 🎉&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  dependencies
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Maps to: fix&lt;/li&gt;
&lt;li&gt;Title: Dependencies&lt;/li&gt;
&lt;li&gt;Description: Update dependencies&lt;/li&gt;
&lt;li&gt;Emoji: ⏫&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  peerDependencies
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Maps to: fix&lt;/li&gt;
&lt;li&gt;Title: Peer dependencies&lt;/li&gt;
&lt;li&gt;Description: Update peer dependencies&lt;/li&gt;
&lt;li&gt;Emoji: ⬆️&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  devDependencies
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Maps to: chore&lt;/li&gt;
&lt;li&gt;Title: Dev dependencies&lt;/li&gt;
&lt;li&gt;Description: Update development dependencies&lt;/li&gt;
&lt;li&gt;Emoji: 🔼&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  metadata
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Maps to: fix&lt;/li&gt;
&lt;li&gt;Title: Metadata&lt;/li&gt;
&lt;li&gt;Description: Update metadata (package.json)&lt;/li&gt;
&lt;li&gt;Emoji: 📦&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Good Commits VS Bad Commits ⚡
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mYD3SENE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/440/1%2AHDbobs-e4jHAbHoss4FWPA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mYD3SENE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/440/1%2AHDbobs-e4jHAbHoss4FWPA.jpeg" alt="" width="440" height="441"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Never miss a commit&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good&lt;/strong&gt; 👍&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git commit -m “Add margin to nav items to prevent them from overlapping the logo”&lt;/p&gt;

&lt;p&gt;♻️ chore: update npm dependency to the latest version&lt;/p&gt;

&lt;p&gt;✨ feat: set the background color to red to improve contrast&lt;/p&gt;

&lt;p&gt;🐛 Fix bug redirecting users to 404 page&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Bad&lt;/strong&gt; 👎&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git commit -m “ Add margin”&lt;/p&gt;

&lt;p&gt;lazy loading&lt;/p&gt;

&lt;p&gt;dependency updated&lt;/p&gt;

&lt;p&gt;Set bg to red&lt;/p&gt;

&lt;p&gt;endgame&lt;/p&gt;

&lt;p&gt;deleted all the files&lt;/p&gt;

&lt;p&gt;Style changed&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Additional Resources 🌟
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/tummychow/git-absorb"&gt;git-absorb&lt;/a&gt;: A tool that divides random fixes into allocated fixups automatically commits&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://commitizen-tools.github.io/commitizen/"&gt;Commitizen&lt;/a&gt;: Its primary goal is to establish a uniform method for committing rules and disseminating them via the Commitizen CLI.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/parmentf/035de27d6ed1dce0b36a"&gt;Git Commit Message Emoji List&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you so much for reading!&lt;/p&gt;

&lt;h3&gt;
  
  
  Happy coding!
&lt;/h3&gt;




</description>
      <category>versioncontrol</category>
      <category>sourcetree</category>
      <category>github</category>
      <category>git</category>
    </item>
    <item>
      <title>A Bootstrapped Guide to Building a Community That Will Last</title>
      <dc:creator>Swapnil V. Patil</dc:creator>
      <pubDate>Sun, 16 Oct 2022 18:25:41 +0000</pubDate>
      <link>https://dev.to/patilswapnilv/a-bootstrapped-guide-to-building-a-community-that-will-last-5efo</link>
      <guid>https://dev.to/patilswapnilv/a-bootstrapped-guide-to-building-a-community-that-will-last-5efo</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hUmwFU01--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A-UaxCfh6Gnys6vRQZ-MmVg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hUmwFU01--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A-UaxCfh6Gnys6vRQZ-MmVg.jpeg" alt="" width="880" height="660"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Credits: Photo by John Cameron on Unsplash&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;When you build an open source project, you’re building something for the community. But what does that mean? How do you create a community around an open source project? What makes a great open-source community? In this post, we’ll explore these questions and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make it easy for everyone to understand how to use your project.
&lt;/h3&gt;

&lt;p&gt;The best way to get people involved is by making it easy for everyone to understand how to use your project. This can be done in a number of ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A clear description of the purpose and motivation behind your project. If you don’t explain what you’re doing and why, then no one will want to help build on top of it.&lt;/li&gt;
&lt;li&gt;A getting started guide explaining how quickly new developers can learn enough about the system so that they can get started contributing code or documentation or testing features.&lt;/li&gt;
&lt;li&gt;Listing out common use cases so that when someone asks “What am I supposed to do with this?”, there are already examples available — and even if those examples aren’t exactly what you had in mind, there may still be something useful for them based on their knowledge level!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Make it easy for everyone to contribute to your project.
&lt;/h3&gt;

&lt;p&gt;One of the most important things to keep in mind is that everyone should be able to contribute. This requires making it easy for people to understand what they need to do and where they need to go.&lt;/p&gt;

&lt;p&gt;It’s also important for contributors not only feel confident about their contributions, but also that whatever contribution process you have in place is clear and easy for everyone involved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build personal relationships.
&lt;/h3&gt;

&lt;p&gt;To build a vibrant open-source community, it’s important to have personal relationships with contributors. You can do this by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Giving credit where it is due. If you’ve used the code in your project and made an improvement to it, let the original author know that you appreciate their work and share what changes you’ve made so they can use them too!&lt;/li&gt;
&lt;li&gt;Being aware of contributors’ time constraints. Some people are very busy with other projects or jobs — if this is something that’s going on in your team as well, make sure everyone knows how much time they need for each task before starting any big new feature or project (or at least give people enough warning). This will help keep everybody motivated and focused on what needs doing at any given time!&lt;/li&gt;
&lt;li&gt;Being aware of contributors’ personal lives outside work hours too; sometimes working late into nights has been known to happen without anyone realizing until months later when someone finally goes “Hey guys did we all complete our tasks?”&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Curate and thank users and contributors, as your community grows.
&lt;/h3&gt;

&lt;p&gt;It’s important to thank people in public and private. You should also be sure to use a personalized message when thanking contributors, since they’ll know they’re being thanked by name (and not just “thank you”). And if you want to give an example of how much your community means to you, consider sending out a personal note thanking all of the people who have helped build it up over the years.&lt;/p&gt;

&lt;p&gt;When it comes down to it, this is one of those things where we think it’s best done organically: just keep track of how many times people contribute or retweet something cool enough that it deserves some sort of acknowledgment from on high (or however else feels right).&lt;/p&gt;

&lt;h3&gt;
  
  
  Make people feel included.
&lt;/h3&gt;

&lt;p&gt;It’s important to make it clear to everyone that your community is a safe place for everyone, and that you have a code of conduct. This can be as simple as posting a link to your code of conduct on your website or providing it in an email newsletter.&lt;/p&gt;

&lt;p&gt;There are many ways you can enforce the code of conduct: You could create an online forum where people can post questions or concerns about your project; you could require members who violate it to leave the group; or even ban violators from participating in any way (e.g., no more comments).&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a code of conduct, and be vigilant about enforcing it.
&lt;/h3&gt;

&lt;p&gt;A code of conduct is a set of rules for how people should behave in your community. While these rules may be simple and easy to follow, they can also be very strict. They should be enforced by the community itself, not by a single person or group.&lt;/p&gt;

&lt;p&gt;A good code of conduct will include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A statement about what you expect from other members (e.g., don’t harass others).&lt;/li&gt;
&lt;li&gt;Guidelines on how you want others to behave (e.g., don’t spam).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Building a community around an open source project is hard work, and can require a lot of effort (but is ultimately rewarding).
&lt;/h3&gt;

&lt;p&gt;Building a community around an open source project is hard work, and can require a lot of effort (but is ultimately rewarding).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finding time. You need to dedicate some time each day to building your community. This may be difficult for some people who are busy with other things in life, or have too much on their plate already. For others, this might mean taking time away from work or family obligations during evenings or weekends when you could otherwise be doing something else fun!&lt;/li&gt;
&lt;li&gt;Finding motivation: It’s not always easy finding enough motivation to keep going with this type of project; it requires dedication over long periods of time (and sometimes even decades). If you don’t feel like there’s enough value in what you’re doing right now then maybe think about how much better off everyone will be once its done — this could give extra incentive! And if someone else works on something similar but doesn’t share any data back then perhaps they’ll share some insights into how things went wrong(?) Or maybe just get together once every few months so everyone knows whats going on?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A great open-source community takes the project to the next level, and helps many people!
&lt;/h3&gt;

&lt;p&gt;A great open-source community takes the project to the next level, and helps many people!&lt;/p&gt;

&lt;p&gt;Open source projects are built by communities of developers who want to contribute their knowledge and time in order to make something better. If you want your project to become successful, it’s important that you create an inclusive environment where everyone can get involved. This means having a code of conduct (or similar policies), clear explanations of how the project works, and making sure everyone has access — not just those who have technical skills but also non-technical contributors who might benefit from being able to help out with some tasks or provide feedback on features they would like added into future versions of your software program or app store listing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Building a vibrant open-source community is hard, but it’s worth the effort. If you can make your project welcoming, inclusive and welcoming to new users, they will feel more connected to the project and its goals. You can help make this happen by building relationships with people who are interested in your project or who are looking for ways to contribute — and by fostering an environment where everyone feels welcome as part of a larger community.&lt;/p&gt;




</description>
      <category>techcommunity</category>
      <category>opensource</category>
      <category>community</category>
      <category>oss</category>
    </item>
    <item>
      <title>What Kubernetes Is And Why Use It</title>
      <dc:creator>Swapnil V. Patil</dc:creator>
      <pubDate>Fri, 09 Sep 2022 10:57:46 +0000</pubDate>
      <link>https://dev.to/patilswapnilv/what-kubernetes-is-and-why-use-it-49g7</link>
      <guid>https://dev.to/patilswapnilv/what-kubernetes-is-and-why-use-it-49g7</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Kubernetes is the leading container-oriented platform, which allows you to run containers efficiently on top of a cluster of machines. It is a family of open source software that simplifies IT operations by automating deployment, scaling, and management of containerized applications in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Kubernetes?
&lt;/h2&gt;

&lt;p&gt;Kubernetes is a container orchestration tool that makes it easy to deploy applications in containers. It’s the most popular container orchestration tool, and it has been growing in popularity over time.&lt;/p&gt;

&lt;p&gt;Kubernetes was developed by Google engineers as a way to manage their own internal systems at scale. The open source nature of Kubernetes means that anyone can use it—and many companies have! Red Hat, IBM (formerly known as LinuxONE), and Microsoft all support Kubernetes on their operating systems: Red Hat Enterprise Linux 7 LTS; IBM z Systems; and Microsoft Azure Container Service (ACS).&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kubernetes?
&lt;/h2&gt;

&lt;p&gt;In a nutshell, Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It was originally developed by Google in 2014 and has since been adopted by many enterprises as well as startups.&lt;/p&gt;

&lt;p&gt;Kubernetes can be used to deploy and manage applications written in any programming language (including Python).&lt;/p&gt;

&lt;h2&gt;
  
  
  Features of Kubernetes
&lt;/h2&gt;

&lt;p&gt;Kubernetes is an open source container orchestration system.&lt;/p&gt;

&lt;p&gt;Kubernetes is a container management tool that can manage containers at scale. It's built on top of Docker and provides a solution for managing large numbers of applications across clusters or clouds, including multi-node clusters in the cloud. Kubernetes also supports advanced features like service discovery, self-healing systems, rolling updates and fine grained policy management across multiple environments like development and production—all without impacting performance or cost.&lt;/p&gt;

&lt;p&gt;You can deploy Kubernetes on-premise or in the cloud if you want to run it locally (on your own hardware). With Kubernetes you'll be able to create highly available apps that scale automatically with your infrastructure needs as well as provide high availability by replicating data between two different nodes when needed so that both machines remain up even if one node fails unexpectedly during normal operation - this will help keep everything running smoothly even when things aren't working optimally yet!&lt;/p&gt;

&lt;h2&gt;
  
  
  Kubernetes vs. Docker Swarm
&lt;/h2&gt;

&lt;p&gt;Kubernetes and Docker Swarm are two different container orchestration tools. They both use the same underlying technology, which is Docker Engine and its API (the command line interface).&lt;/p&gt;

&lt;p&gt;Docker Swarm is built on top of Docker Engine and Docker API. It allows you to create clusters that make use of multiple nodes, each running one copy of the software in order to scale up or down as needed without having to manually restart them. Kubernetes was specifically designed with this goal in mind: scaling up/down applications by creating multiple instances that share resources like storage space, CPU time and memory across all nodes in your cluster&lt;/p&gt;

&lt;h2&gt;
  
  
  Kubernetes Architecture
&lt;/h2&gt;

&lt;p&gt;Kubernetes architecture is a distributed system. The control plane contains the API server, scheduler and controller manager. The worker nodes contain the kubelet, container runtime (Docker), and docker daemon.&lt;/p&gt;

&lt;p&gt;The network of control plane components is designed to be as decoupled as possible from that of worker nodes so that changes in one part don't impact another part; however, it's important to note that some aspects are still tightly coupled since they're all implemented on top of Pod objects which exist within each namespace hierarchy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Go through these topics and get your hands dirty!
&lt;/h2&gt;

&lt;p&gt;The Kubernetes platform, formerly known as Google Container Engine (GKE), is an open source container orchestration system that allows you to automate deployment, scaling and management of containerized applications. It’s designed for any workload from small one-off jobs to large data centers.&lt;/p&gt;

&lt;p&gt;Kubernetes was created by the same team behind Hadoop and it has been running on Google's cloud since 2014; however it wasn't until recently (2017) that they decided they would make this technology available outside of their own internal ecosystem. The main reason behind this decision was probably because many people were using containers as part of their microservices architecture instead of virtual machines which would not have been supported by Kubernetes at launch time - hence why we now have two different frameworks with similar names!&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Do you want to learn about Kubernetes but don’t know where to start? Follow these five steps and you will be up and running with a Kubernetes cluster in no time!&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>opensource</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
