Kubernetes Roadmap - Complete Step-by-Step Learning Path

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Kubernetes is being adopted at companies at  a high pace and anyone with knowledge in that   has a career advantage. You can even become a  full-time Kubernetes engineer at your job, it   has almost become its own role. Kubernetes is an  amazing powerful platform, but a very complex one,   which means you have a steep learning curve. And  even though many people want to learn Kubernetes,   often they don't know where to start. So  it certainly helps to have a guidance and   a sort of a roadmap of how to approach learning  Kubernetes efficiently. That's why I want to   give you a step-by-step roadmap of what to learn  and in which order to structure your learning of   Kubernetes. Now I know it also helps to have this  type of roadmap visualized in a written format,   so we also created an accompanying PDF  roadmap for you, which you can download   from our website for free. I will link all  the resources in the video description.   Here's the most important point to consider  when you start learning Kubernetes, which   will make your learning journey much easier and  more efficient, is to understand the following:   Kubernetes platform, like almost all other  platforms, has two sides or aspects of it. The   administration side, meaning someone needs to set  it up, initialize, configure all the essentials to   prepare it for its actual usage. And the platform  user side meaning someone will now start actually   using it deploying applications and services  inside. Just like with AWS cloud platform or   Jenkins platform for example, you have to set it  up like create an AWS account or install Jenkins   service, then configure the access, install  or activate any plugins needed or services,   secure the platform to make it usable and so  on. And once that's done and accesses are given,   the engineers, who actually need to use the  platform we'll create the pipeline on Jenkins   or deploy their application to AWS platform and so  on. So these are two different roles. So we need   to differentiate and draw the line between the  two. You need to understand, which aspect of the   technology you want to learn and you can decide  that based on your role. Are you an application   developer? You need a roadmap to learn how  to use Kubernetes to deploy applications and   run applications inside the cluster. Are you an  operations engineer? Well then you need to learn   the Kubernetes administration and operation side.  By recognizing the distinction between these two   roles, you can approach your learning journey with  a clear focus. If you're a developer your primary   aim will be to understand Kubernetes usage and  deployment. As an operations engineer your main   focus will be on administration and Kubernetes  operations. Now you can eventually learn both,   if you want to, but if you divide it and learn  one part first and then build the other on top,   it will make your learning process much easier and  more structured, it will also be easier to connect   the dots. There are even different certifications  for these two: You have the CKA or Kubernetes   Administrator exam and you have CKAD, which is  Kubernetes Application Developer certification   exam. And just like there is no learning AWS,  you learn a specific path within AWS based on   your engineering role and what you want to do  on AWS platform. And you also have different   AWS certifications for administrator, developer,  maybe mobile developer, data engineer and so on.   So when you have clarified that, then it's easier  to create a roadmap to learn only the relevant   services and concepts from hundreds of AWS  services. So it's exactly the same concept here. So we've established that we have these  two separate learning paths. However,   before branching off into a specific path there  are fundamental concepts that apply to both:   developers and administrators. So  first you need to learn the basics,   no matter which path you continue with. These are  the building blocks of Kubernetes knowledge. So   let's explore this shared topics to lay a solid  foundation for your Kubernetes learning journey   first. And the most important entry point to  learning any new technology or tool is learn   the why behind the technology first. What problem  does it solve that made Kubernetes so popular and   widely used. The whys of how Kubernetes  helps solve issues of operating large,   containerized applications. Once you've understood  "why Kubernetes" or "what problems it solves",   then you can learn how it actually solves those  problems and the actual implementation of the   tool and how the tool works. So this will be  the first step in grasping the fundamentals of   Kubernetes. Once you've established the why, you  can dive into the core components and architecture   of Kubernetes. As part of Kubernetes architecture,  you need to understand and learn about the control   plane and worker nodes. What is the role of  each, how are they connected, what processes   are running on them. After that you need to learn  the core building blocks of Kubernetes, which   are Kubernetes components. You need to understand  what is Pod, what is a Service, ConfigMap, Secret,   Ingress, Deployments, StatefulSets, Namespaces  and Volumes. These are the main Kubernetes   components. Understand why each one exists and  what are their relations and connections to each   other. Now these components that are mentioned,  you work with them directly, you create the Pods,   you create the Services, Deployments, you also  create Worker Nodes and join them to the cluster   and so on. But there are components that are part  of Kubernetes that just work behind the scenes,   kind of doing its magic in the cluster. These are  the components like Scheduler, Controller, etcd,   Kubelet, container runtime and so on. Even though  you may have little to do with this directly,   because they just run in the background and do the  work in the cluster, but still understanding these   components, what each one of them does and what is  the role of each of these services in the cluster,   will help you understand how Kubernetes  works, the mechanisms behind the cluster,   the self-healing functionality, the way Kubernetes  manages the desired versus actual state and keeps   them in sync, scaling deployments and so on.  So when you do things in a cluster when you   administer it or run applications inside,  knowing what's happening in the background   from the Kubernetes perspective will definitely  make it easier for you to work with Kubernetes. Now this is all theory, right? Understanding the  architecture, components, how Kubernetes works.   Now we need to move on to practice, because while  understanding the components behind a tool is   essential and that's definitely where you should  start at, after that you should get hands-on,   because this will give you a different level  of confidence with the tool and kind of break   the fear of working with it as well. So with  a solid understanding of the fundamentals,   you can now shift your focus to understanding  how to access and work with a Kubernetes cluster.   As part of this, you need to learn Kubectl  command line interface and its main commands,   which is essentially for interacting with  your Kubernetes cluster. Whether you are an   administrator or a product engineer, you need to  learn this tool to perform various actions in the   cluster. Again creating components, updating  them, troubleshooting and viewing components,   analyzing and so on. Additionally, you also need  to learn about Kubernetes manifest files as part   of Kubernetes basics. These are Kubernetes YAML  configuration files, which describe the desired   state of your applications within the cluster.  So basically you use this to define, what   Kubernetes components like Deployments, Services,  StatefulSets and so on you want to create in the   cluster and what configuration you want those  components to have. And understanding how to   create and manage these manifest files is going  to be very important for working with Kubernetes   as well. As you progress in your Kubernetes  journey and start deploying applications inside   with manifest files and Kubectl and start creating  various Kubernetes components, you will definitely   encounter challenges and issues in the process  that require troubleshooting skills. So you also   need to learn Kubectl commands for troubleshooting  as well as other ways of getting insights into the   cluster and what's going on with your components,  like getting insights into cluster networking,   the component configuration, the runtime  environment of your applications and so   on. So troubleshooting is an essential skill you  will need to practice in order to work with and   learn even more about Kubernetes and how things  work inside the cluster. Now when you learn how   to create components and run various services in  Kubernetes you will soon notice that Kubernetes   is a powerful and very flexible platform. It's  not very opinionated and you can do a lot in the   cluster. So it gives you a lot of flexibility,  but this also means that you can do a lot wrong,   like misconfiguring things with bad practices and  that's where details of common misconfigurations   will actually help you a lot. Knowing from the  start what are some things that people without   experience in Kubernetes may misconfigure. Things  that are not really logical or intuitive and where   people mostly make mistakes and I find it easier  to start with bad practices and learn explicitly   what not to do, before learning about the best  practices, because you learn exactly what to avoid   and importantly why to avoid them and this will  also teach you more about how Kubernetes works and   why are things a certain way. Such details are  usually missing in the official documentations   or other common learning resources, which teach  you about a feature or a component, but usually   they don't mention such details. That's why in my  educational content I always make sure to add some   of the common mistakes as well as best practices  that are not immediately clear or intuitive,   which I myself learned from practice, so you can  avoid making these mistakes as a beginner. Another   advanced topic you can learn at this point is  Helm charts, especially as you start deploying   third-party services in your cluster next to  your own applications. So learn what is Helm,   what are Helm charts, what are they used for, how  they make working with Kubernetes and deploying   different services easier and so on. Again the  same approach: First understand why we need them   and then how to use them. So this will basically  be a really solid good foundation of Kubernetes   knowledge, doesn't matter which path you continue  with. This will already get you to the level,   where you know exactly what Kubernetes is, how to  work with and you're confident with the tool. And   all this until here, you can actually learn on  my channel. I have videos on all these topics   and I will link them in the video description,  so you don't have to search for those resources   elsewhere. So now that we have a foundation of  Kubernetes knowledge, based on your engineering   role and direction you want to go into, you can  now branch out to either Kubernetes administrator   side or Kubernetes user side. Let's start with  the Kubernetes administrator roadmap first!   On this foundation you can now build the  knowledge you need to administer and operate a   Kubernetes cluster. First start by understanding  different ways of operating Kubernetes cluster,   like self-managed and managed Kubernetes  services, which are offered by cloud providers,   such as AWS EKS or Azure AKS and understand the  pros and cons of each one and the differences   between them. This will help you make informed  decisions about how to operate Kubernetes   cluster for your specific organization or  your engineering teams. Another important   concept you need to learn as a Kubernetes  administrator to do your job effectively,   is Networking in Kubernetes. Networking plays  an important role in how various components   communicate within a cluster. You should learn  the concepts such as Ingress, Network Policies,   Pod-to-Pod communication, Pod-to-Service  communication, Kubernetes Network Interface   and Network Plugins, cluster DNS service and  so on. Understanding these networking concepts   is absolutely essential, especially when you  want to administer a self-managed Kubernetes   cluster. Troubleshooting and fixing networking  issues is very difficult if you don't understand   properly how Kubernetes networking works. As  part of networking, also understand the soft   network isolation with namespaces as well as hard  network isolation between cluster components and   why this concept is important in general. Now  most of the networking functionality, once you   install network plugin in cluster is automatic.  So in terms of establishing communication between   cluster components or joining new servers to  the Kubernetes network, Kubernetes does a lot   of these out of the box without much effort  and configuration needed from administrator,   which is great. But there is another essential  responsibility of a Kubernetes administrator that   you need to explicitly configure and set up and  you need to set up properly with best practices,   and this is cluster access management. Basically  "who can do what" in the cluster. As I said   Kubernetes is complex and powerful, so you don't  want unauthorized people with little knowledge   of Kubernetes to have admin permissions to mess  everything up. So understanding Kubernetes RBAC   or Role-Based Access Control is very important  to make sure that everyone has correct access   permissions to the cluster resources and everyone  can do their job without messing things up in the   cluster. For this you need to learn Kubernetes  components, such as Roles, ClusterRoles, Role-   and ClusterRole Bindings, ServiceAccounts as well  as Kubeconfig and how it works. Creating client   certificates in Kubernetes for human users as  well as how to integrate various authentication   services in Kubernetes cluster. So you can  give engineers in your organization access   to the cluster more easily as an administrator.  You also will need to take care of data backups   in Kubernetes. You need to make sure to have  a proper mechanism in place to easily recover   your cluster in case of a disaster. For this you  need to understand generally how data is managed   in Kubernetes and that by default you have no  data persistence in Kubernetes and generally in   the container world. You need to understand the  concept of Kubernetes Volumes and how data is   plugged into the applications inside the cluster  through Volumes. Apart from the application data,   you also need to understand etcd, which is data  storage for Kubernetes cluster configuration data   itself. And you need to understand what's stored  inside, how to backup and secure etcd store with   all its sensitive cluster data as well as how  to secure any secret data for various cluster   applications. As a Kubernetes admin you also need  to learn the concept of Kubernetes operators.   When you start deploying more complex stateful  applications, like databases in your Kubernetes   cluster, you will come across the operators.  Kubernetes operator is basically the service   itself bundled with the intelligent logic of  operating that service automatically within   the cluster. So instead of human intervention  of setting up, initiating maintaining and so on   that service, so basically operating the service,  the automated operator does all that, which is a   powerful extension of Kubernetes capabilities.  So understanding this concept, learning how to   deploy and use operators, will help you a lot  in administering the cluster. To have insights   into what's going on in your cluster you need  monitoring. And it's your job as a Kubernetes   administrator to take care of configuring and  setting up monitoring on a cluster level. You   can't manage and administer or fix what you can't  see. One of the most popular tools for monitoring   in Kubernetes is Prometheus and when you  deploy a monitoring stack including Prometheus,   Alert Manager and all the components that come  with it, you will be able to deploy it with a   Kubernetes operator, because there is an operator  for the monitoring stack. Which again means all   these skills that I just mentioned kind of stack  up on top of each other and each one kind of helps   in doing the other task better. And generally for  all the above administrative tasks you need to   learn the best practices as well, not just any way  of doing it and configuring it so that it works,   but the best way of operations and security in  Kubernetes. So that's basically your roadmap if   you want to become a Kubernetes administrator and  learn that aspect of the platform. Now having a   roadmap like this is great for structuring your  learning, but you still need to find the right   resources that explain these concepts properly,  you have to put them in the right order, make sure   you don't miss any important topics. That's still  a huge effort to research all of these and drains   the motivation right at the beginning. So instead  as a simpler alternative you can actually enroll   in our pre-structured course, where I already did  all that heavy lifting of creating the perfect   curriculum with the right hands-on projects and  practical examples for these specific learning   path. Many of our students right after completing  the course successfully passed the CKA exam   and became Certified Kubernetes Administrators  only through this course. But more importantly,   because for me this is more important than the  certification it's itself, they are actually able   to apply the knowledge from the course directly  in their work and actually administer a Kubernetes   cluster. So if you are interested in this path,  definitely check out our CKA course to make your   life easier. Now of course we don't operate  Kubernetes just for the sake of operating it,   right? A product team actually needs to use  it. So that's the Kubernetes user or developer   roadmap. As a Kubernetes user your main goal is to  deploy and run your applications in a Kubernetes   cluster with high availability, meaning even if  something happens in your application it's still   accessible for users and that's where Kubernetes  power actually lies. So you need to understand   the concepts of replicating your application in  Kubernetes, scaling your application up and down   to adjust to the load, and for that you need  to learn more about Deployments, ReplicaSets,   you need to learn how to configure Readiness and  Liveness probes and you need to also learn how   to achieve all that for stateful applications  as well. But as I mentioned at the beginning,   all such cluster components are defined  through Kubernetes manifest files, so we   send those manifests to Kubernetes to actually  apply them and they contain a definition of what   the desired cluster state should be. Again  what should be created, updated and so on,   which means as a Kubernetes user you need deeper  knowledge of Kubernetes manifest files, syntax,   structure, configuration details for different  Kubernetes objects like Deployments, Services   etc. Again how to configure liveness and  readiness probes for your applications   inside the Deployment configuration file, how  to define init containers for your application,   how to use Volumes, understand the types of  Volumes to decide which one is the best for which   use case and application. And how to configure  that for your application definition, how to   configure Services for different applications  with different Service types and so on. Another   important thing to learn as a Kubernetes user  is deploying your application changes without   causing your application downtime or deploying  without risking that the application changes   may crash the entire application in a production  environment. For that you need to learn deployment   strategies that you can use in Kubernetes, such  as canary deployments, blue green deployments,   rolling updates and rollbacks. And when you know  these deployment strategies, you can decide which   one fits best for your application and for  your cluster. When deploying your application   changes to Kubernetes, you won't be doing that  manually. As part of your developer workflow,   you will have CI/CD release pipeline configured  that actually deploys to the end environment.   So you need to learn how to integrate CI/CD into  Kubernetes cluster to do automatic deployments,   where whether it's a self-managed or managed  Kubernetes service. Again with best practices and   the right deployment strategy for your application  within the frame of Kubernetes. Knowledge of those   configuration details that I just mentioned may  be even more important when you're deploying more   complex microservice applications, because now you  have to connect them properly within the cluster   and configure all needed third-party services for  your microservices application. And that's where   you will need to learn more about services  that you can deploy inside cluster for such   microservice applicatio,n like a service mesh for  example. You also need to understand how to handle   traffic to the cluster as well as between your  services. So that will be the part that covers   usage of Kubernetes to the advanced level. Now  hopefully this gives you a clear roadmap of how   to structure your learning and helps you get  started. There are many resources out there:   official documentation, articles, individual  videos that you can put together to learn all   this stuff, but I know from experience that this  is still a lot of effort and time to research and   find the right resources, thinking about the  roadmap and structuring, having to collect all   the learning resources, analyze which ones are  easy to follow and understandable, not outdated,   not missing important information, making sure  you don't have knowledge gaps left and so on.   If you don't want to go through this process and  make it easier for you, save your time and energy   as I mentioned before, you can use our courses to  learn all this. You just follow the prepared path,   which is perfectly laid out for you and learn  both the whys to really understand the concepts   as well as how's of practically working with the  tool and actually implementing these things. So   in terms of learning resources, as a starting  point for the shared knowledge that you need   for both directions, you can use my one hour  Kubernetes video or the 4 hour tutorial video,   which are both on my YouTube channel and  absolutely free. If it's easy to follow and   understandable for you and you decide you want to  learn Kubernetes properly to the advanced level,   for the administration path you can use our CKA  course. And if you want to build on top of that,   learn how to use Kubernetes to the advanced level  as well as other operational parts of Kubernetes,   you can enroll in our DevOps Bootcamp, where  I teach Kubernetes in combination with various   other DevOps technologies, including the managed  Kubernetes service, AWS EKS, automating Kubernetes   cluster provisioning with Terraform, deploying  from Jenkins CI/CD pipeline to Kubernetes cluster,   monitoring and alerting in Kubernetes and more  based on actual real-life use cases that you   can apply directly at work as an engineer. And  if you want to take it even one step higher and   learn about the security best practices and secure  configuration of Kubernetes cluster specifically,   then soon we are releasing a full DevSecOps  bootcamp, where a large part of that bootcamp   will actually cover security in Kubernetes  to the advanced level. So you can also use   it as different steps of learning the basics  and then moving to the next level of learning   and acquiring new engineering skills. But  regardless of which resources you use to learn,   be sure to follow this roadmap step by step for  each concept. First understand the why and then   immediately put it in practice, so you can have  the full picture of the theory and practice. If   you decide to learn yourself take a containerized  dockerized, open source application and deploy   that to a Kubernetes cluster, you will learn a lot  in that process alone to at least get started and   break through the fear of working with Kubernetes.  I hope this comprehensive roadmap will guide you   through your Kubernetes learning journey. Please  let me know in the comments if it did actually   help to break it down like this and also if  you want me to do similar roadmap videos on   any other technology or platform, also let me  know in the comments. I try to read all your   comments and respond to all of them as much as  I can and I absolutely appreciate hundreds and   thousands of positive comments and amazing  feedback you guys leave under my videos. So   thank you for that! And with that as always thank  you for watching and see you in the next video! :)
Info
Channel: TechWorld with Nana
Views: 187,458
Rating: undefined out of 5
Keywords: kubernetes, kubernetes roadmap, kubernetes learning roadmap, kubernetes learning path, kubernetes step by step guide, kubernetes guide, kubernetes guide pdf, kubernetes guide for beginners, kubernetes administrator, kubernetes user, kubernetes developer guide, kubernetes developer, kubernetes developer vs administrator, techworld with nana, learn kubernetes, k8s learning path, k8s roadmap, k8s guide, kubernetes learning guide, complete kubernetes
Id: S8eX0MxfnB4
Channel Id: undefined
Length: 26min 57sec (1617 seconds)
Published: Wed Aug 09 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.