<?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" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[DevOpsCube - Medium]]></title>
        <description><![CDATA[Join our thriving community of 250,000+ DevOps professionals, sharing insightful articles, practical tips, and the latest industry trends. - Medium]]></description>
        <link>https://medium.com/dailydevopstips?source=rss----3c96ecd955c1---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>DevOpsCube - Medium</title>
            <link>https://medium.com/dailydevopstips?source=rss----3c96ecd955c1---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 20:28:22 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/dailydevopstips" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[How To Learn Kubernetes (Complete Roadmap & Resources)]]></title>
            <link>https://medium.com/dailydevopstips/how-to-learn-kubernetes-complete-roadmap-resources-a853723ae61a?source=rss----3c96ecd955c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/a853723ae61a</guid>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[kubernetes-cluster]]></category>
            <category><![CDATA[devops]]></category>
            <dc:creator><![CDATA[Bibin Wilson]]></dc:creator>
            <pubDate>Thu, 11 May 2023 04:58:03 GMT</pubDate>
            <atom:updated>2025-12-06T13:22:14.390Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*4HOur1TzXEWLLtQ6.png" /></figure><p><em>Originally published at </em><a href="https://devopscube.com/learn-kubernetes-complete-roadmap/"><em>https://devopscube.com</em></a><em> on April 29, 2023.</em></p><p><strong>Learning Kubernetes</strong> can seem overwhelming. It’s a complex container orchestration system, that has a steep learning curve. But with the right roadmap and understanding of the foundational concepts, it’s something that any developer or ops person can learn.</p><p>In this Kubernetes learning roadmap, I have added prerequisites and complete <strong>Kubernetes learning path</strong> covering basic to advanced Kubernetes concepts.</p><blockquote><strong>Note</strong>: I have published a CKA certification learning course .You can join the course here <a href="https://techiescamp.com/p/certified-kubernetes-administrator-course">Complete CKA Course</a> . Use code <strong>DCUBE30</strong> to get 30% discount on the course.</blockquote><blockquote><strong><em>Kubernetes Certification Discount:</em></strong> If you are preparing for Kubernetes Certification, get discount at <a href="https://kube.promo/cka">https://kube.promo/</a>devops (code: <strong><em>DCUBE30</em></strong>)</blockquote><blockquote><strong><em>CKA + CKS Bundle ($210 savings):</em></strong> <a href="https://kube.promo/cka">https://kube.promo/bundle</a> (code: <strong><em>DCUBE30</em></strong>)</blockquote><h3>Prerequisites To Learn Kubernetes</h3><p>Before jumping into learning kubernetes, you need to have a fair amount of knowledge of some of the underlying technologies and concepts.</p><ol><li><strong>Distributed system:</strong> Learn about distributed system basics &amp; their use cases in modern IT infrastructure. <a href="https://devopscube.com/recommends/cap-therorem/">CAP theorem</a> is good to have knowledge.</li><li><strong>Authentication &amp; Authorization</strong>: A very basic concept in IT. However, engineers starting their careers tend to get confused. So please get a good understanding of learning from analogies. You will quite often see these terms in Kubernetes.</li><li><strong>Key Value Store</strong>: It is a type of NoSQL Database. Understand just enough basics and their use cases.</li><li><strong>API: </strong>Kubernetes is an API-driven system. So you need to have an understanding of RESTFUL APIs. Also, try to understand gRPC API. It’s good to have knowledge.</li><li><strong>YAML</strong>: YAML stands for <em>YAML Ain’t Markup Language</em>. It is a data serialization language that can be used for data storage and configuration files. It’s very easy to learn and from a Kubernetes standpoint, we will use it for configuration files. So understanding YAML syntax is very important.</li><li><strong>Container</strong>: Container is the basic building block of kubernetes.The primary work of Kubernetes is to orchestrate containers. You need to learn all the container basics and have hands-on experience working on container tools like Docker or Podman. I would also suggest reading about <a href="https://opencontainers.org/">Open container initiative</a> and Container Runtime Interface (CRI)</li><li><a href="https://devopscube.com/service-discovery-explained/"><strong>Service Discovery</strong></a>: It is one of the key areas of Kubernetes. You need to have basic knowledge of client-side and server-side service discovery. To put it simply, in client-side service discovery, the <strong>request goes to a service registry</strong> to get the endpoints available for backend services. In server-side service discovery, the r<strong>equest goes to a load balancer </strong>and the load balancer uses the service registry to get the ending of backend services.</li><li><strong>Networking Basis</strong></li></ol><ul><li>CIDR Notation &amp; Type of <a href="https://devopscube.com/ip-address-tutorial/">IP Addresses</a></li><li>L3, L4 &amp; L7 Layers (OSI Layers)</li><li>SSL/TLS: One way &amp; Mutual TLS</li><li>Proxy</li><li>DNS/IP</li><li>IP Tables</li><li>IPVS</li><li>Software Defined Networking (SDN)</li><li>Virtual Interfaces</li><li>Overlay networking</li><li><a href="https://devopscube.com/ebpf/">eBPF</a></li></ul><h3>1. Learn Kubernetes Architecture</h3><p>Understanding Kubernetes architecture is not an easy task. The system has many moving parts that need to be understood in order for you to get a grip on what’s happening beneath the surface. While learning architecture, you will come across the concepts we discuss in the prerequisites.</p><p>As Kubernetes is a complex system, trying to understand the core architecture could be a little overwhelming for DevOps Engineers. As you get more hands-on experience, you will be able to understand the core architecture better.</p><p>Here is my suggestion. Learn the high-level architecture and key components involved in Kubernetes. If you are not able to grasp the concept, either you can spend time and do more research on a specific topic or you can learn the concept while doing hands-on. It’s your choice.</p><p>Check out the <a href="https://devopscube.com/kubernetes-architecture-explained/">Kubernetes Architecture guide</a> to learn about all the Kubernetes components in detail.</p><p>Overall you need to learn the following.</p><ol><li><strong>Control plane components:</strong> Understand the role of each component like API server, etcd, Scheduler, and Controller manager.</li><li><strong>Worker node components</strong>: Learn about Kube Proxy, Kubelet, Container Runtime</li><li><strong>Addon Components:</strong> CoreDNS, Network plugins (Calico, weave, etc.), Metric Server</li><li><strong>Cluster high availability:</strong> Most organizations use managed Kubernetes services (GKE, EKS, AKS, etc.). So the cloud provider takes care of the cluster’s control plane’s high availability. However, it is very important to learn the high availability concepts in scaling the cluster in multiple zones and regions. It will help you in real-time projects and devops interviews.</li><li><strong>Network Design</strong>: While it is easy to set up a cluster in an open network without restrictions, it is not that easy in a corporate network. As a DevOps engineer, you should understand the Kubernetes network design and requirements so that you can <strong>collaborate with the network team</strong> better. For example, When I was working with kubernetes setup on Google Cloud, we used a CIDR pod range that was not routable in the corporate network. As a workaround, we had to deploy IP masquerading for the pod network.</li></ol><h3>2. Use $1000+ Free Cloud Credits to Deploy Clusters</h3><p>Deploying big clusters on the cloud could be expensive. So make use of the following cloud credits and learn to launch clusters as if you would on a real-time project. All platforms offer managed k8s services.</p><ol><li><a href="https://devopscube.com/setup-kubernetes-cluster-google-cloud/">GKE</a> (Google Cloud — $300 free credits)</li><li><a href="https://devopscube.com/create-aws-eks-cluster-eksctl/">EKS</a> (AWS — $300 free POC credits)</li><li><a href="https://devopscube.com/recommends/digital-ocean-sidebar/">DO Kubernetes</a> (Digital Ocean — $200 free credits)</li><li><a href="https://devopscube.com/recommends/linode-credits/">Linode Kubernetes Engine</a> (Linode Cloud — $100 Free credits)</li><li><a href="https://devopscube.com/recommends/vultr-credits/">Vultr Kubernetes Engine</a> (Vultr Cloud — $250 Free Credits)</li></ol><p>Use one account at a time. Once the credits have expired. move to the next account. You need to keep a watch on your credits as well as expiry. Or else you could get charged. Also, check the terms and instance usage limits if any.</p><p>Also, setting up servers on this platform is very easy and every cloud provider has extensive documentation to get started.</p><h3>3. Learn to Setup Kubernetes Cluster</h3><p>As <a href="https://devopscube.com/become-devops-engineer/">DevOps engineers</a>, it is very important to learn every component and cluster configuration. While there are many options to deploy a Kubernetes cluster, It is always better to learn to deploy multi-node clusters from scratch.</p><p>With multi-node clusters, you can learn about all the concepts like Cluster security, <a href="https://devopscube.com/kubernetes-high-availability/">High Availability</a>, Scaling, Networking, etc.</p><p>It gives you the feeling of working on a real-world project. It will also help you in interviews and you can be confident about production-level cluster configurations.</p><p>Following are my cluster setup suggestions.</p><ol><li><a href="https://github.com/kelseyhightower/kubernetes-the-hard-way"><strong>Kubernetes the Hard Way:</strong></a> I would suggest you start with Kubernetes the hard way set up. It helps you understand all the configurations involved in bootstrapping a kubernetes cluster. If you want to work on production clusters, this lab will help you a lot. The setup is based on google cloud. You can use the <a href="https://cloud.google.com/free/">$300 free credits</a> to complete the lab.</li><li><a href="https://devopscube.com/setup-kubernetes-cluster-kubeadm/"><strong>Kubeadm Cluster Setup</strong></a>: Learning kubeadm cluster setup helps you in <a href="https://devopscube.com/best-kubernetes-certifications/">Kubernetes certification</a> preparation. Also, it helps you automate Kubernetes cluster setup with best practices.</li><li><a href="https://devopscube.com/kubernetes-minikube-tutorial/"><strong>Minikube:</strong></a><strong> </strong>If you want to have a minimal development cluster setup, minikube is the best option.</li><li><a href="https://kind.sigs.k8s.io/"><strong>Kind:</strong></a> Kind is another local development Kubernetes cluster setup.</li><li><a href="https://github.com/techiescamp/vagrant-kubeadm-kubernetes"><strong>Vagrant Automated Kubernetes</strong></a><strong>: </strong>If you prefer to have a multi-VM-based local Kubernetes cluster setup, you can try the automated vagrant setup that uses Kubeadm to bootstrap the cluster.</li></ol><h3>4. Learn About Cluster Configurations</h3><p>Once you have a working cluster, you should learn about the key cluster configurations. This knowledge will be particularly helpful when working in a self-hosted Kubernetes setup.</p><p>Even if you use a managed Kubernetes cluster for your project, there may be certain cluster configurations that you need to modify.</p><p>For example, if you set up a cluster in a hybrid network, you may need to configure it with an on-premises private DNS server for private DNS resolution. This can be done via CoreDNS configuration.</p><p>Refer to the <a href="https://devopscube.com/kubernetes-cluster-configurations/">Kubernetes Cluster configurations</a> guide for more details.</p><p>Also, having a solid understanding of cluster configurations will help you with Kubernetes certifications (CKA &amp; CKS) where you need to troubleshoot cluster misconfiguration and issues.</p><h3>5. Understand Kubeconfig File</h3><p><strong>Kubeconfig</strong> file is a YAML file that contains all the cluster information and credentials to connect to the cluster.</p><p>As a Devops Engineer, You should learn to connect to kubernetes clusters in different ways using the Kubeconfig file. Because you will be responsible for setting up cluster authentication for CI/CD systems, providing cluster access to developers, etc.</p><p>So spend some time, understanding the Kubeconfig file structure and associated parameters.</p><p>Check out the <a href="https://devopscube.com/kubernetes-kubeconfig-file/">complete Kubeconfig file guide</a> to learn everything about the Kubeconfig file.</p><h3>6. Understand Kubernetes Objects And Resources</h3><p>You will quite often come across the names “ <strong>Kubernetes Object</strong>” and “ <strong>Kubernetes Resource</strong> “</p><p>First, you need to Understand the difference between an object and a resource in kubernetes.</p><p>To put it simply, anything a <strong>user creates and persists in Kubernetes is an object</strong>. For example, a namespace, pod, Deployment configmap, Secret, etc.</p><p>Before creating an object, you represent it in a YAML or JSON format. It is called an <strong>Object Specification (Spec)</strong>. You declare the desired state of the object on the Object Spec. Once the object is created, you can retrieve its details from the Kubernetes API using Kubectl or client libraries.</p><p>As we discussed earlier in the prerequisite section, everything in Kubernetes is an API. To create different object types, there are <strong>API endpoints provided by the Kubernetes API server</strong>. Those <strong>object-specific api-endpoints are called resources</strong>. For example, an endpoint to create a pod is called a <strong>pod resource</strong>.</p><p>So when you try to create a Kubernetes Object using Kubectl, it converts the YAML spec to JSON format and sends it to the Pod resource (Pod API endpoint).</p><p>You can refer to the <a href="https://devopscube.com/kubernetes-objects-resources/">Kubernetes objects vs resource</a> guide for more details.</p><h3>7. Learn About Pod &amp; Associated Resources</h3><p>Once you have an understanding of Kubernetes Objects and resources, you can start with a native Kubernetes object called Pod. A pod is a basic building block of Kubernetes.</p><p>You should learn all the <strong>Pod concepts</strong> and their associated objects like <strong>Service, Ingress, Persistent Volume, Configmap, and Secret</strong>. Once you know everything about a pod, it is very easy to learn other pod-dependent objects like deployments, Daemonset, etc.</p><p>First, learn about the Pod Resource Definition (YAML). A typical Pod YAML contains the following high-level constructs.</p><p>Once you have a basic understanding of the above, move on to hands-on learning. These concepts will make more sense when you do hands-on.</p><p>Following are the <strong>hands-on tasks</strong> to learn about Pod and its associated objects.</p><ol><li>Deploy a pod</li><li>Deploy pod on the specific worker node</li><li>Add service to pod</li><li>Expose the pod Service using Nodeport</li><li>Expose the Pod Service using Ingress</li><li>Setup Pod resources &amp; limits</li><li>Setup Pod with startup, liveness, and readiness probes.</li><li>Add Persistent Volume to the pod.</li><li>Attach configmap to pod</li><li>Add Secret to pod</li><li>multi-container pods (sidecar container pattern)</li><li>Init containers</li><li>Ephemeral containers</li><li>Static Pods</li><li>Learn to troubleshoot Pods</li></ol><p>Few advanced pod scheduling concepts.</p><ol><li><a href="https://devopscube.com/pod-priorityclass-preemption/">Pod Preemption &amp; Priority</a></li><li>Pod Disruption Budget</li><li>Pod Placement Using a Node Selector</li><li>Pod Affinity and Anti-affinity</li></ol><h3>8. Learn Pod Dependent Objects</h3><p>Now that you have a better understanding of Pod and independent kubernetes resources, you can start learning about objects that are dependent on the pod object. While learning this, you will come across concepts like HPA (Horizontal Pod Autoscaling) and VPA (Verification Pod Autoscaling)</p><h3>9. Learn Ingress &amp; Ingress Controllers</h3><p>To expose applications to the outside world or end users, kubernetes has a native object called ingress.</p><p>Many engineers get confused with Ingress due to less knowledge of Ingress controllers. Ensure you go through the concept of Ingress and Ingress controllers and understand it correctly. Because it is the base of exposing applications to the outside world.</p><p>You can start with the following comprehensive guides.</p><ol><li><a href="https://devopscube.com/kubernetes-ingress-tutorial/">Kubernetes Ingress Explained</a></li><li><a href="https://devopscube.com/setup-ingress-kubernetes-nginx-controller/">Setting up Nginx Ingress Controller</a></li></ol><p>Also, learn about the <a href="https://gateway-api.sigs.k8s.io/">Kubernetes Gateway API</a>. it provides advanced features over Ingress.</p><h3>10. Learn End to End Microservices Application Deployment on Kubernetes</h3><p>Once you understand the basics of these objects, you can try deploying an end-to-end microservices application on Kubernetes. Start with simple use cases and gradually increase complexity.</p><p>I would suggest you get a domain name and try setting up a microservice application from scratch and host it on your domain.</p><p>You don’t need to develop an application for this. Choose any open-source microservice-based application and deploy it. My suggestion is to choose the open-source <a href="https://github.com/spring-petclinic/spring-petclinic-microservices">pet clinic microservice application</a> based on spring boot.</p><p>Following are the high-level tasks.</p><ol><li><a href="https://devopscube.com/build-docker-image/">Build Docker images</a> for all the services. Ensure you optimize the Dockerfile to <a href="https://devopscube.com/reduce-docker-image-size/">reduce the Docker Image size</a>.</li><li>Create manifests for all the services. (Deployment, Statefulset, Services, Configmaps, Secrets, etc)</li><li>Expose the front end with service type ClusterIp</li><li>Deploy Nginx Ingress controller and expose it with service type Loadbalancer</li><li>Map the loadbalancer IP to the domain name.</li><li>Create an ingress object with a DNS name with the backend as a front-end service name.</li><li>Validate the application.</li></ol><h3>11. Learn About Securing Kubernetes Cluster</h3><p>Security is a key aspect of Kubernetes. There are many ways to implement security best practices in Kubernetes starting from building a secure container image.</p><p>Following the native ways of implementing security in kubernetes.</p><ol><li>Service account</li><li>Pod Security Context</li><li>Seccomp &amp; AppArmor</li><li>Role Based Access Control (RBAC)</li><li>Attribute-based access control (ABAC)</li><li>Network Policies</li></ol><p>The following are the open-source tools you need to look at.</p><h3>12. Learn About Kubernetes Configuration Management Tools</h3><p>Now that you have a good understanding of all Kubernetes objects and deploying applications on Kubernetes, you can start learning about Kubernetes configuration management tools.</p><p>When you start working on a real-time project in an organization, you will see the usage of configuration management tools to deploy applications on Kubernetes.</p><p>Because in organizations, there are different environments like dev, stage, pre-prod, and production. You cannot create individual YAML files for each environment and manage them manually. So you need a system to manage Kubernetes YAML configurations effectively.</p><p>Following are the popular and widely adopted Kubernetes tools to manage YAML.</p><h3>13. Learn About Kubernetes Operator Pattern</h3><p>Kubernetes Operators is an advanced concept.</p><p>To understand operators, first, you need to learn the following Kubernetes concepts.</p><ol><li>Custom resource definitions</li><li>Admission controllers</li><li>Validating &amp; Mutating Webhooks</li></ol><p>To get started with operators, you can try setting the following operators on Kubernetes.</p><ol><li>Prometheus Operator</li><li>MySQL Operator</li></ol><p>If you are a Go developer or you want to learn to extend/customize kubernetes, I would suggest you <strong>create your own operator </strong>using Golang.</p><h3>14. Learn Kubernetes Best Practices</h3><p>Following are the resources that might help and add value to the Kubernetes learning process in terms of best practices.</p><ol><li><strong>12 Factor Apps</strong>: It is a methodology that talks about how to code, deploy and maintain modern microservices-based applications. Since Kubernetes is a cloud-native microservices platform, it is a must-know concept for DevOps engineers. So when you work on a real-time kubernetes project, you can implement these 12-factor principles.</li><li><strong>Kubernetes Failure Stories</strong>: Kubernetes failure stories is a website that has a list of articles that talk about failures in Kubernetes implementation. If you read those stories, you can avoid those mistakes in your kubernetes implementation.</li><li><strong>Case Studies From Organizations: </strong>Spend time on use cases published by organizations on Kubernetes usage and scaling. You can learn a lot from them. Following are some of the case studies that are worth reading.</li><li><a href="https://www.youtube.com/watch?v=wjy35HfIP_k">Scheduling 300,000 Kubernetes Pods in Production Daily</a></li><li><a href="https://openai.com/blog/scaling-kubernetes-to-7500-nodes/">Scaling Kubernetes to 7,500 Nodes</a></li></ol><h3>15. The Best Resources to Learn Kubernetes Online</h3><p>Following are the list of the best online resource to learn Kubernetes practically.</p><h4>1. The official Kubernetes Basics Tutorial</h4><p>The official Kubernetes website has browser-based hands-on <a href="https://kubernetes.io/docs/tutorials/">kubernetes basic tutorials</a> powered by Katacoda scenarios. It covers the following.</p><ol><li>Kubernetes basics</li><li>Kubernetes configurations</li><li>Stateless Application deployment</li><li>Stateful application deployment</li><li>Kubernetes services</li><li>Kubernetes Security</li></ol><p>You can also look at official <a href="https://kubernetes.io/docs/tasks/">Kubernetes tasks</a> to learn to implement Kubernetes concepts practically. It will also help you prepare for Kubernetes certifications.</p><h4>2. DevOpsCube Kubernetes Tutorials</h4><p>DevOpsCube has 35+ comprehensive <a href="https://devopscube.com/kubernetes-tutorials-beginners/">Kubernetes hands-on tutorials </a>for beginners to advanced users. You will learn everything from Kubernetes architecture, Cluster setup, Deployments, best practices, package management, secret management, monitoring, logging, etc.</p><h4>3. KillerCoda Interactive Tutorials</h4><p>If you want to learn Kubernetes from the comfort of your browser, <a href="https://killercoda.com/">Killercoda</a> is a great option. It offers scenario-based learning playgrounds on the browser.</p><h3>Kubernetes Learning GitHub Repository</h3><p>The full Kubernetes learning guide is added to the <a href="https://github.com/techiescamp/kubernetes-learning-path">Kubernetes learning path GitHub repo</a> with links to all the free useful resources.</p><p>This repo is maintained and contributed by community members and it has the following.</p><h3>What is the Best Way to Learn Kubernetes?</h3><p>Let’s have a look at some of the best ways to learn Kubernetes.</p><p>You could fall under any of the following categories.</p><ol><li><strong>Self Learning:</strong> If you are a self-learner, you could start with the roadmap and for each topic do further research and learn from blogs, official documentation, free youtube tutorials, and Kubecon Videos.</li><li><strong>Guided Learning (Text):</strong> If you like reading guided materials, the best place to learn kubernetes is to start with a beginner’s kubernetes book. My suggestion would be “Kubernetes Up and Running” followed by Kubernetes in Action. You could also try <a href="https://devopscube.com/recommends/educativeio/">e</a><a href="https://devopscube.com/recommends/ed-kubernetes/">ducative Kubernetes Course</a>.</li><li><strong>Guided Learning (Videos):</strong> If you want to learn Kubernetes by watching guided Video courses, you could start with <a href="https://devopscube.com/recommends/udemy-devops/">Udemy</a>, <a href="https://devopscube.com/recommends/pluralsight-free-month/">Pluralsight</a>, or <a href="https://devopscube.com/recommends/kodekloud/">KodeKloud</a> Kubernetes courses.</li><li><strong>Signup For Certification: </strong>Another way to learn Kubernetes is to prepare for Kubernetes certification. This way, you not only learn Kubernetes but also have a certification to boost your career. If you choose this path, it’s important not to use exam dumps. Instead, learn all the concepts properly and take the exam. You could save money on certification using the <a href="https://devopscube.com/kubernetes-certification-coupon/">Kubernetes Certification coupon</a>.</li></ol><h3>Real-World Kubernetes Case Studies</h3><p>When I spoke to the DevOps community, I found that a common issue was the lack of real-world experience with Kubernetes. If you don’t have an active Kubernetes project in your organization, you can refer to case studies and learning materials published by organizations that use Kubernetes. This will also help you in Kubernetes interviews.</p><p>Here are some good real-world Kubernetes case studies that can enhance your Kubernetes knowledge:</p><ol><li><a href="https://kubernetes.io/case-studies/">List of Kubernetes User Case Studies</a>Official Case Studies</li><li><a href="https://openai.com/blog/scaling-kubernetes-to-7500-nodes/">How OpenAI Scaled Kubernetes to 7,500 Nodes</a>Blog</li><li><a href="https://cloud.redhat.com/blog/500_pods_per_node">Testing 500 Pods Per Node</a>Blog</li><li><a href="https://medium.com/airbnb-engineering/dynamic-kubernetes-cluster-scaling-at-airbnb-d79ae3afa132">Dynamic Kubernetes Cluster Scaling at Airbnb</a>Blog</li><li><a href="https://aws.amazon.com/blogs/containers/scale-from-100-to-10000-pods-on-amazon-eks">Scaling 100 to 10,000 pods on Amazon EKS</a>Blog</li></ol><h3>Conclusion</h3><p>In this <strong>learning path to learn Kubernetes</strong>, I have covered all the important concepts you need to learn to master Kubernetes. I will keep adding new features when the new Kubernetes versions get released.</p><p>Also, learning a new technical skill takes hours of practice. You’ll certainly gain a good understanding of Kubernetes in the learning process, but the truth is that you never stop learning.</p><p>I started my Kubernetes journey in 2014 and I learn new concepts and functionalities all the time.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a853723ae61a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dailydevopstips/how-to-learn-kubernetes-complete-roadmap-resources-a853723ae61a">How To Learn Kubernetes (Complete Roadmap &amp; Resources)</a> was originally published in <a href="https://medium.com/dailydevopstips">DevOpsCube</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Kubernetes Certifications]]></title>
            <link>https://medium.com/dailydevopstips/best-kubernetes-certifications-cd726618ab5e?source=rss----3c96ecd955c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/cd726618ab5e</guid>
            <category><![CDATA[çks]]></category>
            <category><![CDATA[ckad]]></category>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[cka]]></category>
            <dc:creator><![CDATA[Bibin Wilson]]></dc:creator>
            <pubDate>Wed, 21 Sep 2022 05:33:46 GMT</pubDate>
            <atom:updated>2022-09-21T05:33:46.793Z</atom:updated>
            <content:encoded><![CDATA[<p>Looking for the <strong>best Kubernetes certification</strong> for 2022? In this guide, I explained the best Kubernetes certification along with other free choices, so you can choose the best one for you.</p><p>Kubernetes is growing in popularity day by day. A survey conducted by <a href="https://www.cncf.io/">Cloud Native Computing Foundation (CNCF</a>) reported that <strong>96% </strong>of the respondents are either using or evaluating Kubernetes.</p><p>Engineers getting certified on Kubernetes are also growing at a rapid pace. A report by <a href="https://kube.careers/kubernetes-trend-report-2022-q1">Kube careers</a> shows that Kubernetes Certifications stand in second place in the list of popular certifications.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Xd0MQx_En0kfgI10.png" /></figure><p>Now you know why <strong>getting certified in Kubernetes</strong> is very important. I will be running through each certification, plus an explanation on what purpose each certification is best suited to — everything you need to choose the best Kubernetes certification for your needs.</p><p>Also, CNCF certifications under The Linux Foundation are widely accepted and considered by organizations. However, sometimes, <strong>certification is about learning and gaining experience</strong>. As long as learning is your objective, you can choose to prepare for certifications that add value to your career. So I will also cover certifications that are not part of CNCF but will help you enhance your skill related to Kubernetes.</p><p><strong>Table of Contents</strong> <a href="https://devopscube.com/best-kubernetes-certifications/#">show</a></p><blockquote><em>🚀 </em><strong><em>Important Note: </em></strong><em>You can save 35% on Kubernetes certifications and upto $237 on CKA + CKS Bundle. Check </em><a href="https://devopslearners.com/cka-ckad-cks-linux-exam-promo-codes-from-the-linux-foundation-f55d0a5f3db3"><em>Linux Foundation Coupon</em></a><em> for latest offers.</em></blockquote><h3>What are the Best Kubernetes Certifications?</h3><h3>1. Certified Kubernetes Administrator (CKA)</h3><p><strong>CKA is my #1 choice for Kubernetes certification.</strong></p><p><a href="https://devopscube.com/recommends/cka-exam/">CKA certification</a> is a sought-after certification when it comes to DevOps Engineer Jobs. Whether you are an <strong>experienced IT professional or a fresh college graduate</strong>, CKA certification will add value to your resume. It is mainly due to the nature of the exam. Also, it is one of the <a href="https://devopscube.com/best-devops-certifications/">best devops certifications</a> today.</p><p>Unlike other certifications where exams have multiple-choice questions, CKA is a hands-on certification exam where you need to <strong>solve Kubernetes tasks </strong>and solve cluster issues from the command line. This certification is <strong>aimed at sysadmins and DevOps engineers</strong> who are involved with day-to-day Kubernetes operations.</p><blockquote><em>The Certified Kubernetes Administrator (CKA) program provides assurance that CKAs have the skills, knowledge, and competency to perform the responsibilities of Kubernetes administrators.</em></blockquote><blockquote><em>training.linuxfoundation.org</em></blockquote><p>The CKA exam focuses on the following domain and competencies.</p><ol><li>Storage</li><li>Troubleshooting</li><li>Workloads &amp; Scheduling</li><li>Cluster Architecture, Installation &amp; Configuration</li><li>Services &amp; Networking</li></ol><p>Check out the <a href="https://devopscube.com/cka-exam-study-guide/">CKA Study Guide </a>where I have given the detailed CKA exam resources and links to Kubernetes official documentation.</p><h3>2. Certified Kubernetes Application Developer (CKAD)</h3><p>I recommend CKAD certification for all developers &amp; engineers who focus more on cloud-native microservices application development &amp; deployment.</p><p><a href="https://devopscube.com/recommends/ckad-exam/">CKAD certification</a> focuses more on the application aspects of Kubernetes. If you are a developer or a Devops engineer who wants to showcase your ability to deploy applications on Kubernetes with cloud-native best practices, CKAD certification is for you.</p><blockquote><em>The Certified Kubernetes Application Developer (CKAD) exam certifies that candidates can design, build and deploy cloud-native applications for Kubernetes.</em></blockquote><blockquote><em>training.linuxfoundation.org</em></blockquote><p>It is also a performance-based hands-on exam where you need to solve Kubernetes tasks related to cloud-native application deployment on Kubernetes. CKAD covers the following <strong>Domains &amp; Competencies</strong></p><ol><li>Application Design and Build</li><li>Application Deployment</li><li>Application Observability and Maintenance</li><li>Application Environment, Configuration, and Security</li><li>Services and Networking</li></ol><p>Check out the comprehensive <a href="https://devopscube.com/ckad-exam-study-guide/">CKAD Study Guide </a>where I have given the detailed CKAD exam resources and links to Kubernetes official documentation.</p><h3>3. Certified Kubernetes Security Specialist (CKS)</h3><p>CKS exam is recommended for engineers involved in cloud-native security.</p><p><a href="https://devopscube.com/recommends/cks-exam/">CKS certification</a> focuses more on Kubernetes security. When it comes to containerized environments, security plays a key role. From building a container image to deploying it on kubernetes, security best practices have to be applied to reduce the attack surface. This certification covers the security aspects from building images to deployment. You have to learn container security best practices and associate cncf security tooling such as Falco and Trivy to prepare for this exam.</p><blockquote><em>The Certified Kubernetes Security Specialist (CKS) program provides assurance that a CKS has the skills, knowledge, and competence on a broad range of best practices for securing container-based applications and Kubernetes platforms during build, deployment and runtime. CKA certification is required to sit for this exam.</em></blockquote><blockquote><em>training.linuxfoundation.org</em></blockquote><p>To appear for the CKS exam, you need to pass the CKA certification first. CKS exam covers the following domains and competencies.</p><ol><li>Cluster Setup</li><li>Cluster Hardening</li><li>System Hardening</li><li>Minimize Microservice Vulnerabilities</li><li>Supply Chain Security</li><li>Monitoring, Logging, and Runtime Security</li></ol><p>Check out the comprehensive <a href="https://devopscube.com/cks-exam-guide-tips/">CKS Study Guide </a>where I have given the detailed CKS exam resources, links to Kubernetes official documentation, and links to associate cncf security tools mentioned in the CKS curriculum</p><h3>4. Kubernetes and Cloud Native Associate (KCNA)</h3><p>KCNA is recommended for students, IT managers, and engineers who need foundational knowledge of the cloud-native ecosystem.</p><p><a href="https://devopscube.com/recommends/kcna-certification/">KCNA exam</a> focuses on Kubernetes and related tools in the cloud-native landscape. This exam is easy compared to CKA, CKAD, and CKS. It is a multiple-choice exam with 60 questions and a 90 minutes exam time.</p><blockquote><em>The Kubernetes and Cloud Native Associate (KCNA) exam demonstrates a user’s foundational knowledge and skills in Kubernetes and the wider cloud native ecosystem.</em></blockquote><blockquote><em>training.linuxfoundation.org</em></blockquote><p>The topics covered on the KCNA exam include:</p><ol><li>Introduction to Kubernetes (10 questions)</li><li>Kubernetes Architecture and Components (20 questions)</li><li>Kubernetes Networking (15 questions)</li><li>Kubernetes Storage (15 questions)</li><li>Kubernetes Security (10 questions)</li><li>Kubernetes Monitoring and Logging (10 questions)</li><li>Cloud-Native Application Development (10 questions)</li><li>Container Orchestration with Kubernetes (5 questions)</li></ol><p>The passing score for the KCNA exam is 65%.</p><p>Tips for preparing for and taking the KCNA exam:</p><ol><li>Make sure you are familiar with the topics covered on the exam. You can find a list of topics in the Exam Topics section below.</li><li>Read through the Exam Guide and familiarize yourself with the structure of the exam.</li><li>Use practice exams to test your knowledge and identify areas where you need to focus your studies.</li><li>When taking the exam, take your time and read each question carefully before selecting your answer.</li><li>If you are unsure about an answer, eliminate the obviously incorrect answers and make your best guess.</li></ol><h3>How to Register for Kubernetes Certification?</h3><p>You can register for the certification exam on the <a href="https://training.linuxfoundation.org/">Linux Foundation training Portal</a>.</p><p><strong>Step 1:</strong> Head over to the <a href="https://devopscube.com/recommends/cloud-containers/">Cloud &amp; Containers Category</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*PvNG7pn-O7Ziu3Xv.png" /></figure><p>S<strong>tep 2:</strong> Choose a certification of your choice and click the “<strong>Enroll Today</strong>” Button. If you want to choose a bundle, select the “<strong>Buy Bundle</strong>” option as highlighted in the image below. With bundles, you can save an extra $100.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/622/0*HBjSY9OLoPJQQiBl.png" /></figure><p><strong>Step 3:</strong> On the checkout page, you will get an option to apply a coupon code. Use code <strong>DCUBEOFFER</strong> to save 15%.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dcFgCPgSHpdZuTd9.png" /></figure><p>To get the latest Kubernetes promotion updates, check out the <a href="https://devopscube.com/kubernetes-certification-coupon/">Kubernetes certification coupon</a> page. You could save up to 50% during exclusive Linux Foundation sales.</p><h3>Which is the Popular Kubernetes Certification?</h3><p>The <strong>popular Kubernetes certification is CKA</strong> as it covers the administrative aspects of Kubernetes clusters.</p><p>An interesting Kubernetes job trend shows that <strong>CKA represented 54% </strong>of the mentioned certifications. And in terms of popularity, the ranking goes like CKA &gt; CKAD &gt; CKS.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*7TdHexV-phLKi8wt.png" /></figure><p>As a <strong>CKA certified engineer</strong> myself, I can say that you should opt for CKA if you are planning to work on Kubernetes cluster administration and deployment. However, if you are just focused on deploying apps on Kubernetes, CKAD is preferable.</p><p>CKS certification is popular in the security domain. If you are someone involved in DevSecOps or someone interested in cloud-native security, CKS is definitely worth going for.</p><h3>Kubernetes Certified Engineers Salary Stats</h3><p>Let’s look at some of the salary stats for candidates with Kubernetes skills.</p><p>According to <a href="https://www.payscale.com/research/US/Skill=Kubernetes/Salary">Payscale</a>, the average salary for candidates with Kubernetes skills is <strong>$117k</strong>/ year.</p><p><a href="https://www.talent.com/salary?job=devops+kubernetes+engineer">Talent.com</a> data shows a $150000/year average salary based on 728 salaries. In that highest salary is $180000/year.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*-3GFZOxYbd0Z-xf3.png" /></figure><p>As per <a href="https://kube.careers/kubernetes-trend-report-2022-q1">kube.careers</a> Kubernetes job trends report data, the salary range is between <strong>$123,126</strong> &amp; <strong>$166,505.</strong> And the highest salary reported is between <strong>$200,000–240,000.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*OHcgZmo-ezhyI63N.png" /></figure><p>Linkedin search returned <strong>124,565 results</strong> for Kubernetes jobs in the USA. In that for salaries more than $10000, it’s returned 28000 results. And for <strong>salaries above $200000, it returned 302 results.</strong></p><p>Glassdoor shows the highest reported salary <strong>$69,655</strong> per year.</p><h3>Kubernetes Certification FAQs</h3><h3>Is the CKA certification worth it?</h3><p>Yes. The Linux Foundation CKA is a sought-after Kubernetes certification. CKA is a widely accepted certification that showcases a candidate’s Kubernetes administration and management skills. You will also gain a competitive advantage over peers without the certification as recruiters and organizations are looking for certified professionals.</p><h3>What is the Certified Kubernetes Administrator Salary?</h3><p>As of 2022, data from popular job sites like indeed and talent.com shows that the average salary for CKA certified engineers ranges anywhere between $130,000 and $180,000/year.</p><h3>What are the latest Kubernetes Certification Voucher codes?</h3><p>The latest Kubernetes certification voucher codes are <strong>DEVOPS35</strong> where you get a flat 35% discount on CKA, CKAD, CKS, and KCNA certification &amp; bundles.</p><h3>Which Kubernetes Certification is good for entry-level engineers?</h3><p>If you are an entry-level DevOps engineer, a Certified Kubernetes Administrator (CKA) is the best option as it covers mostly administrative aspects of Kubernetes. It helps you gain core Kubernetes skills that are required for a DevOps engineer Job.</p><h3>Which Kubernetes Certification is good for developers?</h3><p>For developers, the recommended Kubernetes certification is Certified Kubernetes Application Developer (CKAD) as it covers concepts related to cloud-native Kubernetes development.</p><h3>Which Kubernetes certification is best for Devops engineers?</h3><p>CKA is the best certification for DevOps engineers as it focuses more on Kubernetes administrative aspects.</p><h3>Conclusion</h3><p>In this blog, I have covered the <strong>best Kubernetes certifications</strong> to showcase your Kubernetes skills. However, you will need to look at your current skill set and choose a certification that aligns with your career goals and aspiration.</p><p>For example, if you are more interested in the DevSecOps path, CKA+CKS is the best choice. If you are in the DevOps engineer path, CKA is the best option. If you are getting started with cloud-native tools, KCNA is the best entry-level certification.</p><p>Also, if you are learning Kubernetes, check out the list of <a href="https://devopscube.com/kubernetes-tutorials-beginners/">comprehensive kubernetes tutorials</a> with practical examples.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cd726618ab5e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dailydevopstips/best-kubernetes-certifications-cd726618ab5e">Best Kubernetes Certifications</a> was originally published in <a href="https://medium.com/dailydevopstips">DevOpsCube</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Blue-Green vs Canary Deployment]]></title>
            <link>https://medium.com/dailydevopstips/blue-green-vs-canary-deployment-76436d7f6bc1?source=rss----3c96ecd955c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/76436d7f6bc1</guid>
            <category><![CDATA[deployment]]></category>
            <category><![CDATA[devops]]></category>
            <dc:creator><![CDATA[Aman Jaiswal]]></dc:creator>
            <pubDate>Sun, 04 Sep 2022 10:34:59 GMT</pubDate>
            <atom:updated>2024-05-16T12:32:34.590Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/698/1*ebzHXaH--2m_941R-pucsg.png" /></figure><h3>Blue-Green Deployment</h3><p>Blue Green is a deployment pattern that reduces downtime by running two identical production environment called blue and green. Only one environment lives at a time.</p><p>We need to ensure about the changes. Changes must be forward and backward compatible. We need to setup a parallel infrastructure i.e. same number of servers and services used in the actual infrastructure. Post the setup deploy the new version to the new infrastructure, do the sanity and validate everything. Then switch all the traffic to the green infrastructure. After everything is validated, remove or stop the old infrastructure (blue).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/498/1*dqclVSibZ0ZcaCFGbuXIjw.jpeg" /><figcaption>BG</figcaption></figure><h4>Pros of Blue-Green Deployment</h4><ul><li>Rollbacks are superfast and simple, rollbacks to the previous change are just a route change.</li><li>Downtime during deployments is minimized, with no period where no request could be served.</li><li>Deployments are quick, just a flip of a switch.</li><li>Disaster recovery plan is super simple.</li><li>Deployments can happen in regular hours.</li><li>We can debug why a release failed.</li></ul><h4>Challenges in Blue-Green Deployment</h4><ul><li>During deployments, the infra cost would be double.</li><li>Stateful applications would face problems. The information stored on instances like cached files, and artifacts will be lost when we switch from blue to green, everything would need to be rebuilt.</li><li>Database migrations are tough.</li><li>Frontend and Backend compatibility for APIs.</li><li>Blue Green Setup takes effort and time.</li></ul><h3>Canary Deployment</h3><p>Canary deployment is a pattern that allows us to roll out code, features, and changes to an initial subset of users/servers. Basically, the change is deployed to a small subset of servers, then tested and rolled out to the rest of the servers. If everything is good then only roll out to all the servers otherwise rollback it. So canary deployment act as an early warning indicator so that we could avoid a massive outage.</p><p>We create a small parallel Infra. We need to deploy the new version to one server and then monitor the vitals, cpu ram, error rates, and all. Test all the changes. If everything is working as expected then deploy this to the remaining servers as well.</p><p>In canary deployment, the selection criteria of new version traffic can be different i.e geographical-based, random users, beta users, internal employees, etc. Canary deployment is very helpful when you re-wrote your service.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/498/1*H2H_CebgyX3MsDiRMsT4Ag.jpeg" /><figcaption>canary</figcaption></figure><h4>Pros of Canary Deployment</h4><ul><li>It allows us to test the changes in prod with actual users.</li><li>Rollbacks are much faster because we deployed on few servers.</li><li>If the newly deployed version of code has bugs it would affect a very limited set of requests.</li><li>Zero downtime deployments.</li><li>We could deploy even when we are unsure about the new release.</li></ul><h4>Challenges in Canary Deployment</h4><ul><li>Engineers will be habituated to test in prod directly which is not a recommendable practice.</li><li>Architecting a canary deployment is complex.</li><li>Parallel monitoring setup observability is super important in canary setup side-by-side comparison of vitals, cpu ram, response times, error rates, exceptions, etc.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*vkqZGYWu_YYcrU4VdeBufA.gif" /></figure><p>That’s all about Blue-Green and Canary Deployments. Read more in-depth and choose which type of deployment you can use according to your project’s requirements.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=76436d7f6bc1" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dailydevopstips/blue-green-vs-canary-deployment-76436d7f6bc1">Blue-Green vs Canary Deployment</a> was originally published in <a href="https://medium.com/dailydevopstips">DevOpsCube</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Auto Scaling in AWS]]></title>
            <link>https://medium.com/dailydevopstips/auto-scaling-in-aws-eb30628470cf?source=rss----3c96ecd955c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/eb30628470cf</guid>
            <category><![CDATA[cloud-computing]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[autoscaling]]></category>
            <dc:creator><![CDATA[Aman Jaiswal]]></dc:creator>
            <pubDate>Mon, 22 Aug 2022 04:35:02 GMT</pubDate>
            <atom:updated>2022-08-22T04:35:02.719Z</atom:updated>
            <content:encoded><![CDATA[<h3>Autoscaling in AWS</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/1*4w-G5GfR1Yl-bNGzgQ79Sw.jpeg" /><figcaption>autoscaling</figcaption></figure><p>Scaling is reactive and manual in a traditional data center. In the reactive scaling method, we manually brought up and down the servers as per the changes in application workload or traffic. We increase and decrease the servers according to the workload. Suppose the traffic is increasing, hence we will need to add 2–3 more servers to handle the traffic and address the user requests. But this is a time taking process and not sustainable as this is dependent on different factors for example availability of the servers, cost approval, and availability of admins. Also if the traffic goes down we have to remove the extra added servers, otherwise, it will run idle and increase the cost.<br>Cloud Computing solves all these problems as it’s very easy to add and remove extra resources based on the traffic. We use autoscaling for the same.</p><blockquote><strong>What is autoscaling?</strong></blockquote><blockquote>Autoscaling is a feature of cloud computing that automatically increases and decreases the compute resources, memory and networking resources as per actual uses and demand. Autoscaling provides flexibility and elasticity to compute demand. It also enables consistent application performance at a low cost.</blockquote><p>Let’s talk about autoscaling in AWS.</p><blockquote><strong>AWS Autoscaling</strong></blockquote><blockquote>AWS Autoscaling is a service that monitors your application and automatically adjusts the capacity to maintain steady, predictable application performance at the lowest cost. It uses cloudwatch to monitor the application demand and raise alarms to scale up and down the resources.</blockquote><h4>Benefits of AWS Autoscaling</h4><p>Below are the benefits of AWS AutoScaling:</p><ul><li>Better Fault Tolerance</li><li>High Availability of the resources</li><li>Flexibility and Elasticity</li><li>Only pay for what you use, better cost management</li><li>High Reliability of the resources</li><li>Automatically maintain performance</li></ul><h4>Types of Scaling Plan</h4><p>There are different types of plans we can look for:</p><blockquote><strong>Manual Scaling -&gt;</strong> It helps in managing the task of building or terminating the instances on its own.</blockquote><blockquote><strong>Schedule Based -&gt;</strong> Based on traffic, we can schedule the time for executing the AWS Autoscaling.</blockquote><blockquote><strong>Demand Based -&gt;</strong> Based on client demand, we can define required scaling.</blockquote><blockquote><strong>Current Instance-Level Based -&gt;</strong> We can configure an Autoscaling group for managing running instances.</blockquote><p>Let’s see what the Autoscaling group is.</p><h4>AWS EC2 Autoscaling Group</h4><p>The Autoscaling group is a collection of Amazon EC2 instances grouped logically for automatic scaling and management. The Autoscaling group also enables us to use EC2 Autoscaling features such as health check replacements and scaling policies.</p><p>There are 3 major parameters:</p><p>Minimum Size, Desired Capacity, Maximum Size</p><blockquote><strong>Minimum Size -&gt;</strong> It ensures that we always have a fixed number of instances running. The minimum number of instances should be enough to meet the base application load, but not have too much unused capacity.</blockquote><blockquote><strong>Desired Capacity -&gt;</strong> This is the number that notates how many instances we want to run ideally. Autoscaling group try to maintain this capacity</blockquote><blockquote><strong>Maximum Size -&gt;</strong> It notates the max number of instances running in the autoscaling group. Autoscaling group never creates the instances more than the maximum size.</blockquote><p>These parameter values will determine the cost of running the cluster.</p><p>This was all about Autoscaling. We can scale EC2 instances, ECS, RDS, DynamoDB etc. Read more in-depth about it and how to create and configure an autoscaling group.</p><p>Reference: “Cloud Computing With AWS” by Pravin Mishra on Udemy</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=eb30628470cf" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dailydevopstips/auto-scaling-in-aws-eb30628470cf">Auto Scaling in AWS</a> was originally published in <a href="https://medium.com/dailydevopstips">DevOpsCube</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What is docker and why should you care?]]></title>
            <link>https://medium.com/dailydevopstips/what-is-docker-and-why-should-you-care-ade5a218e701?source=rss----3c96ecd955c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/ade5a218e701</guid>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[containers]]></category>
            <dc:creator><![CDATA[Top Jer]]></dc:creator>
            <pubDate>Thu, 02 Jun 2022 01:45:42 GMT</pubDate>
            <atom:updated>2022-06-02T01:45:42.305Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*HM4dna18ji10_bg6" /><figcaption>Photo by <a href="https://unsplash.com/es/@carrier_lost?utm_source=medium&amp;utm_medium=referral">Ian Taylor</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>At my work it manifests itself that our future lies with docker containers. As a matter of fact even more confusing terms are being used. They talk about ‘CRC’ aka ‘Code Ready Containers’, Kubernetes clusters and other things that make my head spin so violently that I have to hold onto my chair, else I would topple over.</p><p>In case it is not clear already, I am not in the slightest familiar with these technologies. But this is no reason to fret! It is my believe that the IT sector means constant learning and so I welcome this step towards ‘modern’ tools. (In an industry that is evolving as quickly as it does one should always be careful when using the word modern.)<br>Especially, since my company has a tendency to lack behind — significantly — when it comes to technology.</p><p>So I started to look into Docker containers and first tried to answer the question:</p><h3>“What are they and why should I care”.</h3><p>Let’s have a look at the bigger picture by looking at where we are coming from.</p><h3>The simple beginnings</h3><p>In the past things were much simpler. Every server had exactly one operating system installed. Let it be a version of Windows (Server) or a flavor of Linux. Everything would be controlled by one OS.</p><p>This simplicity would come with a lack of flexibility. What if you have Linux installed but need Windows for an application or vice versa? What if you need more computational power or less? Would you want to invest in new hardware and have to maintain it in that case?</p><p>The issues do not stop there. On application level there are further issues when you have just one big server. What if you have conflicting dependencies between the software you use? Maybe your WordPress and your data base cannot come to terms about drivers they need.</p><h3>Divide and conquer</h3><p>And with that, the stage opens for virtual machines. They use something called a hypervisor to divide a computers resource for multiple guest operating systems. They come in two different flavors. Either they function as a lightweight operating system and run directly on the hardware or they run on a host operating system.</p><p>All of a sudden, you are able to quickly react to changing needs. You can create a new virtual machine on your existing hardware that runs Windows Server or Linux. If one machine needs more power, you can simply assign more resources (if available), no need to get new hardware.</p><p>In a sense, Virtual Machines are virtualizing hardware.</p><h3>One step back and a giant leap forward</h3><p>Docker now goes one step further … or maybe back. You no longer need a hypervisor.<br>Instead a single operating system on your hardware suffices. Because what docker is doing is to virtualize the operating system instead of the hardware.</p><p>The docker engine runs on the host operating system and hosts itself so called docker “containers”. Which could be described as isolated micro computers. They can have their own CPU, OS, Memory and Network.</p><h3>Why care?</h3><p>Their strongest selling point is that they are lightweight. Once you have the Docker engine installed you for example pull the docker image for Ubuntu — which is currently only 77mb in size — and you have it running within seconds.</p><p>Installing Ubuntu on a virtual machine takes magnitudes longer.</p><p>But how is that even possible?</p><p>The secret is that Linux based docker containers share their Kernel with the host operating system. This brings one big drawback with it and that is that a Linux OS can only host Linux docker container whereas a Windows host can only run Windows docker container. (Not taking into account that you could use Windows Subsystems for Linux).</p><p>The biggest advantage is yet to come. Technically I have already mentioned it, but I want to emphasize it …strongly! They are isolated and therefore highly portable.</p><p>A scene like the following happens every day around the globe and is with a high probability also familiar to you:</p><p><em>Developer: Finally I am done with this feature. All tests are green. Time to give it up for review.</em></p><p><em>other Developer / Tester tries to run the code and it fails</em></p><p><em>Developer: Don’t know the problem. IT RUNS ON MY MACHINE.</em></p><p>Who knows how much money / time is lost because of differing runtime environments. May it be the environment variable that you have changed months ago or this one dependency that you forgot to document. Maybe you run a different version of insert about anything or who knows what might be the reason.</p><p>This will be a thing of the past. Because everything you need for a script to run must be part of a docker image. When it runs on your machine, it will run on every other machine. Because all dependencies and all those little tweaks must be part of the docker image.</p><blockquote><em>Quick break to explain terminology: an image is the abstract definition of the environment and<br>every instance of this image is called a docker container. Cool? Cool!</em></blockquote><p>You wanna know what else is neat? It’s this thing about isolation. You can have different parts of your server run in their own docker container and have those containers communicate with one another. Each having their needed dependencies in the version they need.</p><p>One component needs an update either for itself or a dependency? No problem. Your other components will not be affected. They might not even notice anything being different.</p><h3>Conclusion</h3><p>It’s time to wrap this up. This article was only intended to be a brief introduction into the topic of docker and as such can only be seen as a starting point.</p><p>Most information stem from this <a href="https://www.youtube.com/watch?v=eGz9DS-aIeY">NetworkChuck video</a>.</p><p>Check it out if you want to see some Docker containers in action.</p><p>In case you jumped right to the end in order to find out why you should care. Here are the 3 main reasons I see:</p><p>Docker containers are</p><ul><li>lightweight</li><li>isolated</li><li>highly portable</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ade5a218e701" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dailydevopstips/what-is-docker-and-why-should-you-care-ade5a218e701">What is docker and why should you care?</a> was originally published in <a href="https://medium.com/dailydevopstips">DevOpsCube</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Docker Networks]]></title>
            <link>https://medium.com/dailydevopstips/docker-networks-804894bdc344?source=rss----3c96ecd955c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/804894bdc344</guid>
            <category><![CDATA[networking]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[docker]]></category>
            <dc:creator><![CDATA[Aman Jaiswal]]></dc:creator>
            <pubDate>Tue, 24 May 2022 03:31:49 GMT</pubDate>
            <atom:updated>2024-01-29T06:42:00.971Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/461/1*QVKDI0TgwfKJ2C5W9TcDMQ.jpeg" /><figcaption>networks</figcaption></figure><p>Docker networking is primarily used to establish communication between Docker containers and the outside world. Docker supports different types of networks. In this article, I’ll talk about docker network containers and drivers.</p><p>When we install Docker, it created three networks automatically.</p><pre><em>Bridge<br>None<br>Host</em></pre><p>If we will run below command it will give us the list of all networks.</p><pre>docker network ls</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/391/1*JcUnzQ-mNYXu40U2s3jUHQ.png" /><figcaption>ls</figcaption></figure><p>We can also get the details of each network by running below command:</p><pre>docker network inspect &lt;network-name&gt;</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/753/1*dRXjsgyxxUZQUwIMEQXbZA.png" /><figcaption>inspect</figcaption></figure><p>Let’s talk about these one by one.</p><p><strong><em>Bridge:</em></strong></p><p>Bridge is the default network a container gets attached to. It is a private internal network created by Docker on the host. Eah container connecting to this network get their own internal private network address. Generally IPs get assigned in the range of 172.17.x.x to the containers. The containers can access each other using the internal IP. If we want to access any of these containers from the outside world, then we need to map the ports of these containers to ports on the Docker host. The another name of Bridge network is <em>docker0 </em>as it’s the default one.</p><p><strong><em>None:</em></strong></p><p>With a none network the docker container is not attached to any other network. The container can not reach to the outside world and no one from the outside world can access the container. We can use it when we want to disable the networking on a container.</p><p><strong><em>Host:</em></strong></p><p>If we want to access the containers externally, then we can attach the container to Host network. There is no network isolation between the host and the container. That means like bridge network we don’t need to any additional port mapping. For example, If we deploy a web app which is listening on port 80 , then it will be accessible on port 80 on the host. But we will now not be able to run multiple web containers on the same host and the same port. If we try to run another instance of our web app that listens on the same port, it won’t work as they share the host networking and two processes can’t listen on the same port at the same time.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/877/1*yfx1KB41chcfMhP3tVlxYQ.jpeg" /><figcaption>dockernetwork</figcaption></figure><p><strong><em>Attaching Container:</em></strong></p><p>Now what if we want to attach the container with any other network, not the default on. We can use below command to attach any different network. (host in our case for example)</p><pre>docker run ubuntu --network=host</pre><p><strong><em>User Defined Custom Network:</em></strong></p><p>We can also create our own internal network, where we can give the docker drivers and subnet for the custom network.</p><pre>docker network create --driver &lt;driver-name&gt; --subnet &lt;subnet&gt; &lt;network-name&gt;</pre><p><strong><em>Common Networking Commands:</em></strong></p><p>Let’s see some useful commands related with docker networks.</p><p>If we want to see the network setting and the IP address assigned to an existing container, we can use below command. (can use container name as well instead of id)</p><pre>docker inspect &lt;container-id&gt;</pre><p>What if we want to attach any container to our custom network. We can use <em>connect</em> and <em>disconnect</em> command for the same.</p><pre>docker network connect &lt;custom-network-name&gt; &lt;container-name&gt;</pre><p>To disconnect the container:</p><pre>docker network disconnect &lt;custom-network-name&gt; &lt;container-name&gt;</pre><p>If we want to delete any network, we can use below command:</p><pre>docker network rm &lt;custom-network-name&gt;</pre><p>If we want to delete all unused networks, we can use below command:</p><pre>docker network prune</pre><p><strong><em>Other Network Drivers:</em></strong></p><p>We have used a parameter — driver while creating the custom networks. Docker allows us to create three different types of network drivers bridge, host, and none. However, they may not fit in every use case. There are some other drivers as well which we can use to create the custom networks according to requirements.</p><p>Some other drivers are <em>overlay</em>, <em>macvlan</em> and <em>ipvlan</em>.</p><p>Let’s talk about these one by one.</p><p><strong><em>Overlay:</em></strong></p><p>When we need the communication between containers running on different docker hosts or when multiple apps work together using swarm services, we can use overlay networks. Basically it used for multi-host network communication.</p><p><strong><em>Macvlan:</em></strong></p><p>Macvlan networks allow you to assign a MAC address to a container, making it appear as a physical device on your network. Macvlan networks are best for applications that need to be modernized by containerizing them and running them on the cloud. It used to connect docker containers directly to the host network interfaces through layer 2 segmentation.</p><p><strong><em>IPvlan:</em></strong></p><p>IPvlan networks give users total control over both IPv4 and IPv6 addressing.</p><p>Read more about each network types and how they work in details.</p><p><a href="http://networking/">https://docs.docker.com/network/</a></p><p>This is all about network in Docker. I’ve talked about the basic details and the idea behind that, that should provide you a an overview of Docker Networks. Explore more about the networking in Docker.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=804894bdc344" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dailydevopstips/docker-networks-804894bdc344">Docker Networks</a> was originally published in <a href="https://medium.com/dailydevopstips">DevOpsCube</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Health Checkups for your OpenShift Cluster]]></title>
            <link>https://medium.com/dailydevopstips/health-checkups-for-your-openshift-cluster-2d47513be0c6?source=rss----3c96ecd955c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/2d47513be0c6</guid>
            <category><![CDATA[openshift]]></category>
            <dc:creator><![CDATA[Pradipta Banerjee]]></dc:creator>
            <pubDate>Tue, 17 May 2022 06:51:53 GMT</pubDate>
            <atom:updated>2022-05-17T06:51:53.129Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/527/1*pkY4Djqu1Ap14Kyye4Q-4w.png" /><figcaption>Health checks for your OpenShift Clusters</figcaption></figure><p>If you are responsible for managing Red Hat OpenShift clusters, then there is a nifty opensource project (<em>aptly named openshift-checks</em>) that could be a good addition to your toolkit.</p><p>The<strong> openshift-checks </strong>project<strong> </strong>is a collection of health-check scripts for an OpenShift cluster.</p><p>Take a look at the project description and related details from the following link:</p><p><a href="https://github.com/RHsyseng/openshift-checks">GitHub - RHsyseng/openshift-checks: A collection of scripts to check the health of an OpenShift cluster</a></p><h4>Running health checks</h4><p>The easiest way is to run it as a container.</p><p>Remember to provide the path to the <strong><em>kubeconfig</em></strong> file. In the example below, the <strong><em>kubeconfig</em></strong> file is located at <strong>“$HOME/kubeconfig”</strong></p><pre>$ alias openshift-checks=&quot;podman run -it --rm -v $HOME/kubeconfig:/kubeconfig:Z -e KUBECONFIG=/kubeconfig quay.io/rhsysdeseng/openshift-checks:latest&quot;</pre><p>Take a look at available checks.</p><pre>$ openshift-checks -l<br>Available scripts:<br>[..snip...]<br>checks/nodes<br>checks/notrunningpods<br>checks/operators<br>checks/ovn-pods-memory-usage<br>checks/pdb<br>checks/port-thrasing<br>checks/restarts<br>[...snip...]</pre><p>Executing the command without any options will run all the checks. It’s also possible to execute specific checks.</p><p>The following example runs single <strong>info</strong> (command) check to display the cluster version.</p><pre>$ openshift-checks -s info/00-clusterversion</pre><pre>Using system:admin context<br>Cluster version:<br>NAME VERSION AVAILABLE PROGRESSING SINCE STATUS<br>version 4.10.0–0.nightly-2022–03–11–203311 True False 12m Cluster version is 4.10.0–0.nightly-2022–03–11–203311<br>No issues found</pre><p>You can also extend it by adding your own specific health checks.</p><h4>Adding new health checks</h4><p>Adding a new health check consists of two primary steps:</p><ol><li>Clone the source tree</li><li>Add script to a specific folder (info, checks, etc)</li><li>Build a new container image (Optional)</li></ol><p>Let’s see this in action by way of an example. We’ll be adding a simple info (command) check for <a href="https://www.redhat.com/en/openshift-sandboxed-containers">Red Hat OpenShift sandboxed containers</a> operator.</p><p><strong>Clone the source tree.</strong></p><pre>$ git clone <a href="https://github.com/RHsyseng/openshift-checks.git">https://github.com/RHsyseng/openshift-checks.git</a><br>$ cd openshift-checks</pre><p><strong>Add health check script.</strong></p><pre>$ cat &gt; info/06-sandboxed-containers &lt;EOF</pre><pre>#!/usr/bin/env bash</pre><pre>[ -z ${UTILSFILE} ] &amp;&amp; source $(echo “$(dirname ${0})/../utils”)</pre><pre>if oc auth can-i get pods -n openshift-sandboxed-containers-operator &gt;/dev/null 2&gt;&amp;1; then<br> msg “Sandboxed containers operator:\n$(oc get pods -n openshift-sandboxed-containers-operator)”<br> exit ${OCINFO}<br>else<br> msg “Couldn’t get sandboxed containers operator details, check permissions”<br> exit ${OCSKIP}<br>fi<br>exit ${OCUNKOWN}<br>EOF</pre><p><strong>Build a new container image.</strong></p><pre>$ podman build -t bpradipt/openshift-checks .</pre><p><strong>Verify</strong></p><pre>$ alias openshift-checks=&quot;podman run -it --rm -v $HOME/kubeconfig:/kubeconfig:Z -e KUBECONFIG=/kubeconfig bpradipt/openshift-checks:latest&quot;</pre><pre>$ openshift-checks -l<br>[...snip...]<br>info/04-machineset<br>info/06-sandboxed-containers<br>[...snip...]</pre><pre>$ openshift-checks -s info/06-sandboxed-containers</pre><pre>Using system:admin context<br>Sandboxed containers operator:<br>NAME                                  READY   STATUS    RESTARTS         AGE<br>controller-manager-676fccfcff-j2trz   2/2     Running   0   14d<br>No issues found</pre><p>There are numerous possibilities. You can use this to run a specific set of checks post-deployment to ensure the cluster is set up as per your requirements and ready to handle workloads, or you can run some periodic checks as needed.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2d47513be0c6" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dailydevopstips/health-checkups-for-your-openshift-cluster-2d47513be0c6">Health Checkups for your OpenShift Cluster</a> was originally published in <a href="https://medium.com/dailydevopstips">DevOpsCube</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Architecture of Docker Engine]]></title>
            <link>https://medium.com/dailydevopstips/the-architecture-of-docker-engine-a0a6e5ad4de0?source=rss----3c96ecd955c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/a0a6e5ad4de0</guid>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[containers]]></category>
            <category><![CDATA[docker]]></category>
            <dc:creator><![CDATA[Aman Jaiswal]]></dc:creator>
            <pubDate>Sun, 15 May 2022 01:35:19 GMT</pubDate>
            <atom:updated>2022-05-15T01:35:19.486Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/830/1*tYRTTeaU7MiFvGp944uk2Q.png" /></figure><p>Docker is an open platform for developing, shipping, and running applications. Docker helps us package our software to ‘build once and run anywhere. In this blog, I’ll talk about the architecture of the Docker Engine.</p><p>Docker engine consists of three components <em>Docker daemon</em>, the <em>REST API</em>, and the <em>Docker CLI</em>.</p><p>The <em>Docker daemon (dockerd) </em>is the actual server or process that is responsible for creating and managing objects such as the images, containers, volumes, and networks on a host. It communicates with other daemons also to manage Docker services.</p><p>The <em>REST API</em> provides an interface to manage objects in Docker. In simple words, it instructs the Docker daemon what to do.</p><p>The <em>Docker CLI</em> is the command-line interface that we use to run commands to manage objects in Docker, basically the Docker Commands.</p><blockquote>What is an Image?</blockquote><blockquote>An <em>image</em> is a read-only template with instructions for creating a Docker container. It consists of a collection of files that pack together all the necessities.</blockquote><blockquote>What is a Container?</blockquote><blockquote>Container is a runnable instance of an image. Simply, Containers are executable units of software in which application code is packaged, along with its libraries and dependencies.</blockquote><p>When we execute a command using the <em>Docker CLI</em> to create a container the docker client converts the command into a <em>RESTful API </em>which is passed to the <em>Docker daemon.</em> Then <em>Docker daemon</em> downloads the image from Docker Registry (by default docker hub), it further makes a call to <em>containerd</em>. Will talk about <em>containerd</em> later in this article.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/181/1*ZVajsyvzWg_m8Xg3q97mIw.jpeg" /><figcaption>arch1</figcaption></figure><p>Docker has its own execution environment which is called <em>libcontainer</em>. Before that docker used Linux containers to manage containers on Linux. With <em>libcontainer</em>, docker talks with the Linux kernel feature eg: namespaces, and cgroups. For details about namespace and cgroup, and how they work, read the below article.</p><p><a href="http://nginx.com/">https://www.nginx.com/blog/what-are-namespaces-cgroups-how-do-they-work/</a></p><p>The another important components are <em>runC</em>, <em>containerd</em> and <em>containerd-shim</em>. <em>runC</em> runs the containers, actually we can run containers by installing <em>runC</em> without installing docker. <em>containerd </em>manages runC, eventually manages containers. <em>containerd</em> is responsible for converting the image into OCI (open container initiative) compliance bundle. It passes the bundle to c<em>ontainerd-shim.</em></p><blockquote>What is OCI?</blockquote><blockquote>The Open Container Initiative(OCI) is a Linux Foundation project, started in June 2015 by Docker, to design open standards for operating-system-level virtualization (software containers), most importantly Linux containers.</blockquote><p>Read more about it: <a href="http://oci/">https://opencontainers.org/</a></p><p><em>containerd-shim</em> monitors the state of the container. Even if the Docker daemon shuts down or get restarted, the containers run in the background and is attached back when the daemon comes back up. <em>containerd-shim</em> calls the <em>runC</em> to start the container. <em>runC</em> then interacts with namespaces and cgroups in <em>libcontainer </em>to create a container. In this way a container gets created. So the exact flow will be:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/741/1*3Mc9tzCR822UW70IF39JzA.jpeg" /><figcaption>arch2</figcaption></figure><blockquote>What is Docker Registry?</blockquote><blockquote>A Docker <em>registry</em> stores Docker images. It can be a public docker registry or a private docker registry. Docker Hub is the default place of docker images, its stores public registry that anyone can use. We can also create and run our own private registry.</blockquote><p>This was the high level architecture of Docker Engine. We can further read about every single keywords to get more details.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a0a6e5ad4de0" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dailydevopstips/the-architecture-of-docker-engine-a0a6e5ad4de0">The Architecture of Docker Engine</a> was originally published in <a href="https://medium.com/dailydevopstips">DevOpsCube</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kubernetes Pod Priority, PriorityClass, and Preemption Explained]]></title>
            <link>https://medium.com/dailydevopstips/kubernetes-pod-priority-priorityclass-and-preemption-explained-a48fb7988672?source=rss----3c96ecd955c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/a48fb7988672</guid>
            <category><![CDATA[kuberbetes]]></category>
            <dc:creator><![CDATA[Bibin Wilson]]></dc:creator>
            <pubDate>Mon, 09 May 2022 03:47:01 GMT</pubDate>
            <atom:updated>2022-09-19T17:40:33.597Z</atom:updated>
            <content:encoded><![CDATA[<blockquote>This blog was originally published on <a href="https://devopscube.com/pod-priorityclass-preemption/">https://devopscube.com/pod-priorityclass-preemption/</a></blockquote><p>In this blog, you will learn about important Kubernetes pod scheduling concepts such as Pod priority, Preemption, and Pod PriorityClass</p><h3>What is Pod priority in Kubernetes?</h3><p>Pod priority is a Kubernetes scheduling feature that allows Kubernetes to make scheduling decisions comparing other pods based on priority number. Let’s look at the following two main concepts in pod priority.</p><ol><li>Pod Preemption</li><li>Pod Priority Class</li></ol><h3>Pod Preemption</h3><p>Pod preemption feature allows Kubernetes to preempt (evict) lower priority pods from nodes when higher priority pods are in the scheduling queue and no node resources are available.</p><h3>Kubernetes Pod Priority Class</h3><p>To assign a pod certain priority, you need a priority class.</p><p>You can set a priority for a Pod using the PriorityClass object (non-namespaced) with a Value.</p><p>The value determines the priority. It can be <strong>1,000,000,000 (one billion) or lower. </strong>Larger the number, the higher the priority.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/423/0*N4djYA59VW5igAcL.png" /></figure><p>The name of the priorityclass (priorityClassName) will be used in the pod specification to set the priority.</p><blockquote><em>If you don’t want the priority class to preempt the pods, you can set </em><em>PreemptionPolicy: Never. By default, Priorityclasss use </em><em>PreemptLowerPriority policy.</em></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/415/0*kKyY7jRnpnZN7be6.png" /></figure><h3>Pod PriorityClass Example</h3><p>The following example has a PriorityClass object and a pod that uses the PriorityClass.</p><pre>apiVersion: scheduling.k8s.io/v1<br>kind: PriorityClass<br>metadata:<br>  name: high-priority-apps<br>value: 1000000<br>preemptionPolicy: PreemptLowerPriority<br>globalDefault: false<br>description: &quot;Mission Critical apps.&quot;<br>---<br>apiVersion: v1<br>kind: Pod<br>metadata:<br>  name: nginx<br>  labels:<br>    env: dev<br>spec:<br>  containers:<br>  - name: web<br>    image: nginx:latest<br>    imagePullPolicy: IfNotPresent<br>  priorityClassName: high-priority-apps</pre><h3>Kubernetes System High PriorityClass</h3><p>How do you <strong>safeguard system-critical pods</strong> from preemption?</p><p>Well, there are two default high-priority classes set by Kubernetes</p><ol><li><strong>system-node-critical:</strong> This class has a value of 2000001000. Pods like etcd, kube-apiserver, and Controller manager use this priority class.</li><li><strong>system-cluster-critical:</strong> This class has a value of 2000000000. Addon Pods like coredns, calico controller, metrics server, etc use this Priority class.</li></ol><h3>How does Kubernetes Pod Priority &amp; Preemption work?</h3><ol><li>If a pod is deployed with PriorityClassName, the priority admission controller gets the priority value using the PriorityClassName value.</li><li>If there are many pods in the scheduling queue, the scheduler arranges the scheduling order based on priority. Meaning, the scheduler places the high priority pod ahead of low priority pods</li><li>Now, if there are no nodes available with resources to accommodate a higher priority pod, the preemption logic kicks in.</li><li>The scheduler preempts (evicts) low priority pod from a node where it can schedule the higher priority pod. The evicted pod gets a graceful default termination time of 30 seconds. If pods have terminationGracePeriodSeconds set for preStop <a href="https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/">container Lifecycle Hooks</a>, it overrides the default 30 seconds.</li><li>However, if for some reason, the scheduling requirements are not met, the scheduler goes ahead with scheduling the lower priority pods.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/651/0*aoywhTyBDImqDILO.png" /></figure><p>Now we know how <strong>kubernetes pod scheduling priority work</strong> with Priorityclass and preemption.</p><h3>Pod Priority FAQs</h3><h3>What is Kubernetes DaemonSet Priority?</h3><p>Daemonset has priority like any other pods. Therefore, if you want your Daemonsets to be stable and not evicted during node resource crunch, you need to set a higher pod PriorityClass to the Daemonset.</p><h3>How is Pod QoS related to Pod priority &amp; Preemption?</h3><p>Kubelet first considers the QoS class and then pod priority value to evict pods. This happens only when there is a resource shortage on the nodes.</p><p>However, preemption logic kicks in only when high-priority pods are on the scheduling queue. The scheduler ignores the pod QoS during pod preemption. Whereas a QoS-based eviction happens without a scheduling queue due to a resource crunch.</p><h3>What is the significance of Pod Priority?</h3><p>When you deploy apps to Kubernetes in production, there are certain apps you don’t want to get killed. For example, a metrics collector Daemonset, logging agents, payment service, etc.</p><p>To ensure the availability of mission-critical pods, you can create a hierarchy of pod tiers with priorities; when there is a resource crunch in the clusters, kubelet tries to kill the low priority pods to accommodate pods with higher PriorityClass.</p><p><strong>Note</strong>: If you are preparing for Kubernetes certification, check out the latest <a href="https://devopslearners.com/cka-ckad-cks-linux-exam-promo-codes-from-the-linux-foundation-f55d0a5f3db3">CKA Coupon</a> to get discounts.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a48fb7988672" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dailydevopstips/kubernetes-pod-priority-priorityclass-and-preemption-explained-a48fb7988672">Kubernetes Pod Priority, PriorityClass, and Preemption Explained</a> was originally published in <a href="https://medium.com/dailydevopstips">DevOpsCube</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kiran’s Chai(Tea Latte) as a Service- Cloud Service Models Exemplified with a personal story…]]></title>
            <link>https://medium.com/dailydevopstips/kirans-chai-tea-latte-as-a-service-cloud-service-models-exemplified-with-a-personal-story-8e6a1cf87a2d?source=rss----3c96ecd955c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/8e6a1cf87a2d</guid>
            <category><![CDATA[google-cloud-platform]]></category>
            <category><![CDATA[oracle-cloud]]></category>
            <category><![CDATA[cloud-computing]]></category>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[aws]]></category>
            <dc:creator><![CDATA[KiranTech Recipes]]></dc:creator>
            <pubDate>Mon, 09 May 2022 03:46:48 GMT</pubDate>
            <atom:updated>2022-05-09T03:46:48.006Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ppHyR4lpHyb0w2q1TMhoPg.png" /></figure><p><strong>Foreword</strong>:</p><p><em>After I got unique recognition and excellent personal connections developed through my 2021 </em><a href="https://devopslearners.com/devops-super-simplified-with-my-dosaops-story-6ea01d02416f"><em>DosaOps</em></a><em> story, that elucidated the power of DevOps, often I have been motivated by different individuals to come up with another story on a popular topic.</em></p><p><em>Although few topics were on mind, I wanted to give it a time to marinate very well. Finally, after hiatus, I am here</em> <strong><em>again with a personal story!!</em></strong>.</p><p><em>The Motivation:</em></p><p><em>Thanks to the ongoing </em><strong><em>Cloud </em></strong><em>disruption</em><strong><em>, </em></strong><em>and</em><strong><em> </em></strong><em>the</em><strong><em> “As a service” </em></strong><em>has become ubiquitous phrase which all of us comes across very frequently. That basically alludes to</em><strong><em> “providing a scoped product/solution as a service, to reduce the extreme management/operational burden involved in procuring, configuring and maintaining that service”.</em></strong></p><p><em>Despite we being familiar on various Cloud service models, that are usually suffixed with “</em><strong><em>as a service</em></strong><em>”, confusion still lurks around due to the broad verity of services, the subtleties involved with each service model and wide range of considerations/choices involved in choosing a certain model.</em></p><p>Numerous others models came up post main service models, IaaS, SaaS &amp; PaaS. To complement this, <em>in my own terms, the overall Cloud can simply be attributed as</em><strong><em> “Data center as a Service”.</em></strong></p><p>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</p><p>Ready… Get set go<strong>……….the Plot Begins:</strong></p><p><strong>Starring</strong>:</p><p><strong><em>The Great Fan(analogous to Cloud Customer):</em></strong></p><p>I am very fond of <strong><em>Tea</em></strong>(Indian Chai, also known as Chai/Tea Latte internationally) as many of you might do. Tea never ceases to lure its fans due to the wide variety of flavors that can be made.</p><p>It used to be so easy for me during the days in Hyderabad, to step out to canteen/street side “<em>chaiwala</em>” to quickly grab a cup of tea.</p><p>Now, there is no other way except I randomly get my wife busy by requesting: “<strong>One more tea please</strong>”. Sometimes verbally, and sometimes with just looks and expressions (which she could figure), when I can’t ask out of hesitation to burden her.</p><p>😀😀😀</p><p>And, I never miss to take advantage of busy work as an excuse, that can easily fly and get me another cup!</p><p><strong>The Genius Cook(analogous to Cloud Service Provider-CSP):</strong></p><p>However, as excessive Tea is unhealthy, my wife initially put quota per the day. That didn’t work out well, due to variety of reasons I find to ask for an exception!!.</p><p>Needless to say that she is a passionate cook, and she has very keen attention to details in the art of cooking. Ideally she prefers to make <strong>most of the pre-requisites(for any recipe) <em>from scratch </em></strong>regardless of the type/complexity. Of course it takes time, but she has that passion to make everything in an organic/healthy manner, to the extent possible.</p><p>Notedly, Tea is special and it can be made as easy and quick as boiling water and add readymade ingredients/honey, or as complex as possible as described below in Chapter1, based on the interest, time and energy.</p><p>To our surprise, she didn’t spare Tea too from her detailing &amp; customization.😀😀</p><p>To suffice my thirst for Tea, she gave a very good thought and came up lot of formulas of Tea, <strong>that are healthy as well as tasty</strong>!!.</p><p><strong>Chapter1:</strong></p><p><strong>Make Your Own</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*14k56C9EEiksJEsuPbcNLA.jpeg" /></figure><p>I love to start the day with Tea, it gives an energetic kick that surfaces any lethargy after my warm up activities.</p><p>Each morning and each instance, she would ask me the <strong><em>type &amp; strength</em></strong> <strong><em>of Tea flavor</em></strong> needed.</p><p>She then patiently grinds green tea flakes &amp; roots ,spices (ginger, cloves, cardamom, cinnamon, star anise, fennel seeds , lemon grass/leaves, black pepper…) in the stone mill , adds some additional herbs(basil etc), milk, honey /jaggery etc, boils in simmer mode to extract a signature taste.</p><p>Same steps repeats for each ask and each instance!!.</p><p>Although it is <strong>very time consuming and effort staking</strong>, it gives her full control on how it should taste and can <strong>customize</strong> (flavors, intensity of flavors, hotness/sweetness, heat level etc) based on the need.</p><pre>However, I prefer to enjoy the tea during the <strong><em>little breaks</em></strong> I get but the <strong><em>complexity</em></strong> of this whole process and her <strong><em>busy time</em></strong> with kids &amp; other home operations hesitates me in asking whenever I wanted, with all painstaking and time consuming steps involved.</pre><p><strong>Now, take a Masala Tea break please, to add a Technology flavor to it:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/276/1*W-8HUyvV0K7a_mer6cnAkA.png" /></figure><blockquote><strong>IaaS- Infrastructure as a Service</strong>:</blockquote><blockquote><em>IaaS solutions offer complete control to the customers. Users could do </em><strong><em>whatever configurations</em></strong><em> they wanted on the infrastructure, and could install desired software and binaries that are required by the applications.</em></blockquote><blockquote><em>Just like we were able to prepare our own Chai, </em><strong><em>with all needed ingredients and customizations as desired</em></strong><em>, IaaS offers complete control on what we wanted to do with our infrastructure.</em></blockquote><blockquote><em>However, it brings in lot of </em><strong><em>responsibility and management burden</em></strong><em> on us and also we need to </em><strong><em>spend lot of time&amp; efforts in getting infrastructure configured/customized</em></strong><em> to suit our needs.</em></blockquote><p><strong>Chapter2</strong>:</p><p><strong>A little Compromise</strong>- <strong>Make it as easy and quick as possible</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/526/1*tNj7RTXUdA2S-k-OOpEMfw.png" /></figure><p>Meanwhile she had to undergo a medical procedure and she needed rest for some period. Hence, I tried to put an end for Tea habit by rarely going for it.</p><p>However, she noticed my waning interest, and came up with an innovative idea that achieves same goal in an <em>efficient manner with least efforts possible, while ensuring health factor.</em></p><p>To save time and effort with complex process, as we’d seen earlier in Chapter1, she’d ground all needed ingredients before hand and stored them in air tight containers. She did the same for different flavors.</p><p>By doing this, there is no need to prepare all ingredients from scratch, which are time taking. It’s just that she asks me the <strong>flavor needed for that instance</strong>, boils the milk and adds flavored ingredient from the respective container. <strong>Its lot quick and easier than earlier.</strong></p><pre>However, this doesn&#39;t take away rest of the effort each time. Also the level of customization is limited with reduced control on ingredients(with prepackaged flavors) and the freshness/quality of taste diminished comparatively. We got to <strong><em>trade off control/customization, taste &amp; freshness with optimization of time &amp; effort</em></strong>. And,  I got to go with limited flavors available, that didn&#39;t ran out.</pre><p><strong><em>Now, take one more break please with Cinnamon Tea, to blend this with a service model:</em></strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/417/1*xXNjAiCftxsz9zdKLhDsKA.png" /></figure><blockquote><strong>PaaS- Platform as a Service </strong>:</blockquote><blockquote>PaaS solutions offer moderate amount of control on personal preferences and we can’t access/control base infrastructure settings. However, we could choose specific type of platform (.Net, Python, PHP…) and select amount of resources needed to run our applications.</blockquote><blockquote>The biggest advantage is infrastructure <strong>management burden will be reduced significantly, and we don’t need to deal with all OS level configurations/software installations, </strong>we can spin up PaaS services whenever we want by uploading our code and within short intervals. This gives greater times to market when compared with IaaS solutions.</blockquote><blockquote>With pre-configured platform, we could run applications with less effort/burden . (like tea made quickly out of readily available customized tea flavors). However, it will be <strong><em>hard/impossible to inject any custom configurations/libraries</em> </strong>that may be required by our applications and have to just use available platforms(like using only the tea flavors that are available, which didn’t ran out).</blockquote><p><strong><em>Chapter3: The Vacation- and the new Idea!!</em></strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XgRAUDEG-Brm077fa6KRwg.jpeg" /></figure><p>Ultimately, my family had to go on vacation and I was all alone. Although I am alright at cooking(at-least with Tea) she knew it will not be easy for me with busy schedules and hence she prepared different flavors of Tea in bulk quantities and neatly packed.</p><p><strong>To beat my busy schedules &amp; to further optimize time &amp; effort in meeting OnDemand needs</strong>, I started to choose a <strong>flavor needed, </strong>prepare the needed quantity for the day(3–4 cups) early in the morning , put it in a heat holding flask and place at my desk.</p><p>With this, there is <strong>hardly anytime</strong> to spend in making tea for each instance, full contrast to whats described in Chapter1 and significant change with timed efforts required still in Chapter2.</p><p>Its super fast and quick and I can fill the cup <strong>OnDemand-</strong> <strong>right at the moment I needed!!</strong></p><pre>However, it is <strong>only one type of flavor</strong> I will get for the <strong>whole</strong> day and there’s no way to <strong>customize</strong> it, beyond prepackaged/available/prepared flavor for that day. The saved effort/time, convenience and quickness negated the dynamic preferences/control/customizations, and also it begs little compromise with taste/quality/heat.</pre><p><strong><em>Now, One last break with Ginger Tea, to see it through the Technology lens:</em></strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/240/1*UFZ2hlpqa_x7uL5kjOI-Mg.png" /></figure><blockquote><strong>SaaS- Software as a Service </strong>:</blockquote><blockquote>SaaS solutions are software products that are readily available, that may fit our business models/requirements. CSPs offer variety of products , together with their partners. We could launch any available software on-demand.</blockquote><blockquote>The biggest advantage with it is <strong>rapid times to market and lowest development/management burden when compared </strong>with IaaS/PaaS<strong>. </strong><em>Like, I could fill my cup whenever I wanted from the flask.</em></blockquote><blockquote>However, this has key tradeoffs. We could not make low-level/custom configurations per our desires, and cannot make choices on hardware/OS and access control on platform level. We can quickly consume whatever SaaS product that is offered by the vendor. <em>Just like </em><strong><em>the only flavor I get per day but quickly OnDemand</em></strong><em>, at the expense of quality/taste/customization/control.</em></blockquote><blockquote>As an exception, worth noting this, some SaaS products may offer a bit of customizations. It totally depends on SaaS Product/Vendor.</blockquote><p><strong><em>Chapter4: A special Guest</em></strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/597/1*6HstXEizxqh8jm0Q5fQghw.png" /></figure><p>Once I ran out of flavors that she made, and to take out all the manual efforts for her once she returns, I bought a coffee maker.</p><p>The good part about it is we get variety of pods, with different flavors. We could simply put the pod/flavor we wanted, and fill the cup. Damn easy!!</p><p>But its all pre-made, we have to go with whatever the pods pre-packaged by the producer. Least customizability, broad varieties and extreme convenience.</p><p>Family returned meanwhile and she gave me a surprise!!.</p><p>I had to return that coffeemaker before even unpacking, as I bought it silently without my home department’s approval, before its denied as unhealthy option. Just quoting this to help the context. 😀</p><p>We got to an agreement finally; with simplistic, healthy and optimal plan as in Chapter2.</p><p><strong><em>The Final Break please, with special Matcha Green Tea Latte</em></strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/256/1*G8nGy6_CePh23RU2abuPHA.png" /></figure><blockquote><strong>CaaS- Container as a Service:</strong></blockquote><blockquote>Containers are prepackaged IT infrastructure environment that is required to run an application. All the Libraries, Configuration files and OS Dependencies are packaged as container images (like Pods of coffee maker) and can be deployed as containers, within moments. Containers offer broader level of technologies/platforms that may not be possible with PaaS.</blockquote><blockquote>Just like putting the Coffee pod we want, hit start button and get the coffee, we can deploy respective container and see the running applications!!.</blockquote><blockquote>One of the best advantages of it is abstraction of all OS level/binary/library level nuances, technology/platform varieties and rapid scale of deployment with high amount of scalability and agility. However, container orchestration and management are the things that need special consideration.</blockquote><p><strong>Closing Comments:</strong></p><p>One of the key factors that need to be considered is Shared Responsibility Model (Google brought up Shared Fate Model) , where the responsibilities are shared between Customer and CSP.</p><p>Thorough knowledge is required on all key aspects around model, as it determines customer’s scope of work/responsibilities and can tighten policies/controls accordingly.</p><p><em>For IaaS, PaaS, SaaS: to get an idea on amount of control/responsibilities between provider/customer, refer below picture.</em></p><p><strong>Thanks a lot for making until here!!.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*U4f1svxbxytMvyZRrf7KYw.png" /><figcaption>Image Credits:Akanksha</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8e6a1cf87a2d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/dailydevopstips/kirans-chai-tea-latte-as-a-service-cloud-service-models-exemplified-with-a-personal-story-8e6a1cf87a2d">Kiran’s Chai(Tea Latte) as a Service- Cloud Service Models Exemplified with a personal story…</a> was originally published in <a href="https://medium.com/dailydevopstips">DevOpsCube</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>