Perfectly put! When I've been explaining what Kubernetes is (and why it's so important), the official description wasn't very helpful (and the Wikipedia article was even worse). From now on, I'll send everyone to your video for an in-depth explanation. That said, I like to call K8s "The Cloud OS" - what Linux is for computers, Kubernetes is for the cloud, the next evolution of operating systems - and more, thanks to it being both an Extensible Platform and Universal API.
K8s is so mainstream now that many of us take it for granted. Nobody bothers to define it or explain it anymore. You making this video in 2022 is much appreciated. 🙏 Good work
I agree with you, Viktor. When I teach Kubernetes to juniors from my team, I compare it to a cloud. Kubernetes is a naked cloud that provides computing, networking, and storage primitives. In the same way, AWS did it, you can then build custom "services" on top of those primitives to provide self-service to your teams (custom controllers). The remaining part is just to explain to them the concept of state machines, control loops and usually, they start to understand the potential of this project.
Thank you, Viktor! This is the best description and explanation of Kubernetes that we've seen yet! I will be sending people to this video when they ask me how to get started with Kubernetes.
Hey Viktor, This is the detailed explanation of Kubernetes so far we have ever read or seen. Managing VM's or external resource through Kubernetes was completely new thing to us. Looks like the controller are the component which are doing the heavy lifting inside Kubernetes. If possible can you make a detail video around Controllers, CRD's and control loops. That will be super helpful for overall understanding. Thanks a lot for the awesome work you are doing. We really appreciate it. Cheers !!
I just added it to my TODO list... :) In the meantime, you might want to check videos about crossplane and cluster API on this channel. Both tools are extending Kubernetes with additional Cards while the former (crossplane) allows you to create your own.
Keep up the excellent work Victor. Your videos are always interesting to watch and learn from, even when they are on topics which people think they already know about like "What is Kubernetes?"
If we deploy a taxi booking app on Kubernetes, taxi booking does not become a feature of Kubernetes. Similarly, if we deploy something that can create and manage an external resource, that does not become part of Kubernetes. Only things that are documented in Kubernetes documtantion can be considered part of Kubernetes, everything else is "user code" running on Kubernetes.
Kubernetes was designed to be extensible. One can argue that Kubernetes alone is not fit for serious usage. Networking is very basic, storage is non-existent, etc. If you deploy a Taxi booking app on Kubernetes, that app does not become a feature in Kubernetes. I agree with that completely. However, if you create a CRD called `Taxi`, that does become a feature in Kubernetes. There is a huge difference between running an app in Kubernetes, and extending Kubernetes capabilities through CRDs.
@@DevOpsToolkit I see your point. But even that would be just a custom extension to Kubernetes. So Kubernetes is an extensible platform that I would agree. But if we consider extensions as part of Kubernetes then the scope becomes limitless. What would learning Kubernetes imply in that case? Learning all the extensions that exist? Its just a matter of definition - what we call Kubernetes and what we call "user code" or "extensions". Just clarifying where I was coming from. Don't want to take too much of your time. I understood what you meant now. 👍
@@lhxperimental Think of it in a similar way as programming. You can use your favorite language but, by itself, it is not very useful. It needs to be extended with libraries. Some of those are baked into the language itself, while others are added by you. In any case, programming language alone is not enough. The same can be said for Kubernetes. Alone, it's not very useful. You couldn't mount an external volume, expose your apps to ouside world, etc. It's only a base. Now, just as with programming languages, Kubernetes follows a pattern. We know how it works internally (e.g., control loops) and we know the base of its API (further extended by CRDs). All that is by design. Kubernetes team is fully aware that creating a platform that would fulfil everyone's needs is either impossible or would result in a "monster" that would be close to impossible to tame. The design of a platform used by users is left to others (vendors, end-user companies, etc.). Unfortunately, that's also one of the reasons why it's so complex. It was not designed to be user-friendly, but extensible. User-friendly part comes later (and not by the Kubernetes team) in form of CRDs. I think that we are still in early stages of that phase, but we're getting there :)
I record the screen, talking head, and audio separately and send it all to an agency that does editing and animations. I believe that they use Adobe After Effects and Premier.
Add all of this to manage 1-5 simple Django backend apps with some background workers that is what I saw in 90% of deployments where k8s was used as a not proper tool at all. If you have < 100-200 services don't even touch it. No reason. If you have one region ->, don't use it. If you have < 100 requests/s don't even look at it. Then almost every startup is 1-thing is k8s integration where they don't have many customers, such a failure. In the end, money spends on DevOps gurus instead of products.
That reallly depends. It's true that if you manage k8s all by yourself, you better have a certain scale to justify it. However, Kubernetes is everywhere and comes in many different flavors. For example, if you use Azure Container Apps, all you have to do is provide a container image. Azure, on the other hand, will run it in Kubernetes without you even knowing its there. Or you can choose to use something like qovery.com that also greatly simplifies app management. What I'm trying to say is that Kubernetes is the engine most of us are using (or will be using) in one form or another. For some, using a self-managed Kubernetes is a good choice. For others, it's a managed cluster like GKE Autopilot with apps defined as Knative. For others it's a whole layer or abstractions that makes k8s invisible. It all depends on the balance of control, customization, and simplicity one requires. As a side note, for those experienced with Kubernetes, running apps there is easier than anywhere else, even if it's only a couple of apps. The problem is when one neither has the scale nor experience with k8s. That's a combination that often leads to unexpected results.
@@DevOpsToolkit It's not against k8s or this video I owe you a likes) The problem is "As a side note, for those experienced with Kubernetes, running apps there is easier than anywhere else, even if it's only a couple of apps. The problem is when one neither has the scale nor experience with k8s. That's a combination that often leads to unexpected results." -> those 90% Thank you for Qovery service, never saw it!
Qovery: "Because we receive hundreds of requests per day, we will prioritize access requests with a work email address. Please keep an eye on your inbox." xD lol
How do you define Kubernetes? What is it?
Perfectly put! When I've been explaining what Kubernetes is (and why it's so important), the official description wasn't very helpful (and the Wikipedia article was even worse). From now on, I'll send everyone to your video for an in-depth explanation.
That said, I like to call K8s "The Cloud OS" - what Linux is for computers, Kubernetes is for the cloud, the next evolution of operating systems - and more, thanks to it being both an Extensible Platform and Universal API.
K8s is so mainstream now that many of us take it for granted. Nobody bothers to define it or explain it anymore. You making this video in 2022 is much appreciated. 🙏 Good work
Came skeptical, left enlightened ;) Thank you!
This video is so underrated.
This may be the best and most detailed Kubernetes overview I have ever seen.
Thank you, Viktor!
Love it.
I agree with you, Viktor. When I teach Kubernetes to juniors from my team, I compare it to a cloud.
Kubernetes is a naked cloud that provides computing, networking, and storage primitives. In the same way, AWS did it, you can then build custom "services" on top of those primitives to provide self-service to your teams (custom controllers).
The remaining part is just to explain to them the concept of state machines, control loops and usually, they start to understand the potential of this project.
Thank you, Viktor! This is the best description and explanation of Kubernetes that we've seen yet! I will be sending people to this video when they ask me how to get started with Kubernetes.
Brilliant! Absolutely love this! Thank you!
Never seen such a great Kubernetes explanation. Keep up the good work! I will send this to every person I know that is new to or learning Kubernetes.
Simple clear and concise. Tks !!!
Victor, superb explanation on the definition of Kubernetes!
Simple clear and concise. Thanks
Hey Viktor, This is the detailed explanation of Kubernetes so far we have ever read or seen. Managing VM's or external resource through Kubernetes was completely new thing to us.
Looks like the controller are the component which are doing the heavy lifting inside Kubernetes. If possible can you make a detail video around Controllers, CRD's and control loops. That will be super helpful for overall understanding.
Thanks a lot for the awesome work you are doing. We really appreciate it. Cheers !!
I just added it to my TODO list... :)
In the meantime, you might want to check videos about crossplane and cluster API on this channel. Both tools are extending Kubernetes with additional Cards while the former (crossplane) allows you to create your own.
Keep up the excellent work Victor. Your videos are always interesting to watch and learn from, even when they are on topics which people think they already know about like "What is Kubernetes?"
LOVED the video, great explanation, and great diagrams!
If we deploy a taxi booking app on Kubernetes, taxi booking does not become a feature of Kubernetes. Similarly, if we deploy something that can create and manage an external resource, that does not become part of Kubernetes. Only things that are documented in Kubernetes documtantion can be considered part of Kubernetes, everything else is "user code" running on Kubernetes.
Kubernetes was designed to be extensible. One can argue that Kubernetes alone is not fit for serious usage. Networking is very basic, storage is non-existent, etc.
If you deploy a Taxi booking app on Kubernetes, that app does not become a feature in Kubernetes. I agree with that completely. However, if you create a CRD called `Taxi`, that does become a feature in Kubernetes.
There is a huge difference between running an app in Kubernetes, and extending Kubernetes capabilities through CRDs.
@@DevOpsToolkit I see your point. But even that would be just a custom extension to Kubernetes. So Kubernetes is an extensible platform that I would agree. But if we consider extensions as part of Kubernetes then the scope becomes limitless. What would learning Kubernetes imply in that case? Learning all the extensions that exist? Its just a matter of definition - what we call Kubernetes and what we call "user code" or "extensions". Just clarifying where I was coming from. Don't want to take too much of your time. I understood what you meant now. 👍
@@lhxperimental Think of it in a similar way as programming. You can use your favorite language but, by itself, it is not very useful. It needs to be extended with libraries. Some of those are baked into the language itself, while others are added by you. In any case, programming language alone is not enough.
The same can be said for Kubernetes. Alone, it's not very useful. You couldn't mount an external volume, expose your apps to ouside world, etc. It's only a base.
Now, just as with programming languages, Kubernetes follows a pattern. We know how it works internally (e.g., control loops) and we know the base of its API (further extended by CRDs).
All that is by design. Kubernetes team is fully aware that creating a platform that would fulfil everyone's needs is either impossible or would result in a "monster" that would be close to impossible to tame. The design of a platform used by users is left to others (vendors, end-user companies, etc.). Unfortunately, that's also one of the reasons why it's so complex. It was not designed to be user-friendly, but extensible. User-friendly part comes later (and not by the Kubernetes team) in form of CRDs. I think that we are still in early stages of that phase, but we're getting there :)
Great video 👍
Please upload custom metric server setup. Many thanks.
Adding it to my TODO list... :)
Thanks!
Thanks for this! One question, how do you create the presentation with the transparent background? OBS+remove chroma from powerpoint?
I record the screen, talking head, and audio separately and send it all to an agency that does editing and animations. I believe that they use Adobe After Effects and Premier.
The answer might surprise you 🤣
Add all of this to manage 1-5 simple Django backend apps with some background workers that is what I saw in 90% of deployments where k8s was used as a not proper tool at all.
If you have < 100-200 services don't even touch it. No reason. If you have one region ->, don't use it. If you have < 100 requests/s don't even look at it.
Then almost every startup is 1-thing is k8s integration where they don't have many customers, such a failure. In the end, money spends on DevOps gurus instead of products.
That reallly depends. It's true that if you manage k8s all by yourself, you better have a certain scale to justify it. However, Kubernetes is everywhere and comes in many different flavors. For example, if you use Azure Container Apps, all you have to do is provide a container image. Azure, on the other hand, will run it in Kubernetes without you even knowing its there. Or you can choose to use something like qovery.com that also greatly simplifies app management.
What I'm trying to say is that Kubernetes is the engine most of us are using (or will be using) in one form or another. For some, using a self-managed Kubernetes is a good choice. For others, it's a managed cluster like GKE Autopilot with apps defined as Knative. For others it's a whole layer or abstractions that makes k8s invisible. It all depends on the balance of control, customization, and simplicity one requires.
As a side note, for those experienced with Kubernetes, running apps there is easier than anywhere else, even if it's only a couple of apps. The problem is when one neither has the scale nor experience with k8s. That's a combination that often leads to unexpected results.
@@DevOpsToolkit It's not against k8s or this video I owe you a likes)
The problem is "As a side note, for those experienced with Kubernetes, running apps there is easier than anywhere else, even if it's only a couple of apps. The problem is when one neither has the scale nor experience with k8s. That's a combination that often leads to unexpected results." -> those 90% Thank you for Qovery service, never saw it!
@@ordinarygg I'm working on a video about Qovery. I hope to publish it in a couple of weeks :)
Qovery: "Because we receive hundreds of requests per day, we will prioritize access requests with a work email address. Please keep an eye on your inbox." xD lol