This couldn't have come at a better time, we had pods getting evicted due to insufficient memory and couldn't figure out why, this helped a lot. Thank you!
Excellent video, you really make a good job to explain things in a crisp and concise way. One question that has remained, however, is the following: you describe that a certain part of the CPU gets allocated for each of the pods, although this isn't necessarily in use. Doesn't this totally break with the idea of scalability, because now each pod has completely overprovisoned resources (i.e., they are allocated but idle)? I somehow assumed that this would be part of the autoscaling, which vertically scales the conteiners depending on the load, or was this part of your video and I missed it?
This is really interesting. I also found that pods can be evicted regarding lack of ephemeral storage. This is related to OS disk of my node instance which only has 30GB. I was wondering if there's a way to handle the storage parameter to avoir pods being evicted ? thanks for these videos and very nice channel
Great Video :) I was just curious. Typical usecase I imagine is for nodes to scale up or down fully automatically based on number of requests. But here, we need are manually changing the number of pods.
I was wondering why kubernetes didn't go the CNI/CSI route of abstracting away the platform specific aspects of node addition ... also It seems there's no support in kubernetes for Intel RSD PODM based dynamic node composition.. great vid!
Hi Marcel, thanks for the great content firstly. I have seen your video twice but confused in one thing - as when you scaled to 12Pods, and you mentioned that yr computer has 4 core - all exhausted in (almost 8 pods running instance) - then howcome Autoscaler would add 1 more node to yr K8S cluster when core machine is not having any CPU left
A cluster autoscaler will only add a node when total requested CPU exceeds available CPU in that node. Pods would usually wait in a 'Pending' state until either CPU is freed up or a node is available thay satifies CPU request requirement for that Pod. Hope that helps 💪🏽
Congrats, excellent video. I have a question about CPU units, in your example you said 4 Cores equals 4096m. Should not be 4000m? Do we measure millicpu as well as memory?
Excellent explanation. Keep it up. My doubt is if we auto scalling have to scale down node after we have sufficient resources. Then what will happen to the pods which are already in running state .? Thanks
Thanks for the kind words The cluster autoscaler will only scale down if the node is not utilised. Kubernetes will not interrupt pods to scale nodes down.
@@MarcelDempers Thanks for the reply it really mean a lot. but let's see we have one pod which serving request and controller know that node is under utilizes. They will that pod dies or it will wait until it finishes the request.
Hi there. This is a very informative and comprehensive video. Thanks for that. I was wondering something you probably have an answer to. The cluster autoscaling, how much time you reckon it would take from the point where you ran out of space on your node, to the point where the new node is operational? And for the pod autoscaling, from running out of space to a new operational pod?
This depends, there's a thing called scaling lag. 1) metrics are 30sec delayed 2) time for scheduler to determine a new node is needed, can take few min 3) new node scaling time can take 3-5min 4) pod create , depends on what you are running
very interesting. As i try to use "memory limits" i get sometimes "Out of memory" and my pod process is killed. I thought it would trigger another node instead. should i remove the limits ?
limits are more for last resort protection. You should ideally use resource request values and set the pod autoscaler around that. Checkout my pod autoscaler video for more info about scaling pods. The node autoscaler is only triggered when there is no space to schedule another pod.
There is no advantage over using an entire core or splitting them unless you know the required consumption of your workload. It really depends on understanding how much CPU your pod needs. If you don't know, i recommend you start with as little as possible. And use your monitoring to figure out best recommended CPU. There is good app called Goldilocks which is great at finding recommended CPU usage based on actual consumption over time . github.com/FairwindsOps/goldilocks
i am using kubernetes 1.19 I get an error like this unable to get metrics for resource cpu: failed to get pod resource metrics: the server could not find the requested resource (get services http: heapster :) how to solve it?
That was the cluster autoscaler.
Checkout the Pod autoscaler
👉🏽 ua-cam.com/video/FfDI08sgrYY/v-deo.html
This is just pure gold in youtube. I feel like I have found a goldmine.
Me too
This couldn't have come at a better time, we had pods getting evicted due to insufficient memory and couldn't figure out why, this helped a lot. Thank you!
Like the way you present it, you make it simple to grasp and understand :)
Holy smokes….. I learnt a lot in 12 mins.
Great tutorial, thank you. The music/ambiance is sometimes disturbing but still okay.
Great video man, very easy to understand and follow! Congrats!
Sweet stuff! Awesome editing, very pleasant to watch :)
Excellent video, you really make a good job to explain things in a crisp and concise way. One question that has remained, however, is the following: you describe that a certain part of the CPU gets allocated for each of the pods, although this isn't necessarily in use. Doesn't this totally break with the idea of scalability, because now each pod has completely overprovisoned resources (i.e., they are allocated but idle)? I somehow assumed that this would be part of the autoscaling, which vertically scales the conteiners depending on the load, or was this part of your video and I missed it?
This is great info, very well explained, thank you.
I’ve been looking for someone like you for months. Loved the presentation!
Superb. Very concise and helpful. Thank you for sharing these insights
Excellent explanation. Quick, crisp and neat.
Amazing video with great practical examples.
This is really interesting. I also found that pods can be evicted regarding lack of ephemeral storage. This is related to OS disk of my node instance which only has 30GB. I was wondering if there's a way to handle the storage parameter to avoir pods being evicted ? thanks for these videos and very nice channel
Great Video :) I was just curious. Typical usecase I imagine is for nodes to scale up or down fully automatically based on number of requests. But here, we need are manually changing the number of pods.
As usual, damn good contents MrDemper.
good one. thanks for your effort to make a quality tutorial
Great explanation, thank you
Beautifully explained. thanks Bro !!
Awesome video, greetings from Chile.
I was wondering why kubernetes didn't go the CNI/CSI route of abstracting away the platform specific aspects of node addition ... also It seems there's no support in kubernetes for Intel RSD PODM based dynamic node composition.. great vid!
Very interesting video. Thank you.
You are really great :), and thanks for the information. Please keep going ahead...............
This is beyond helpful. Thank you!
Great video Sir. Very informative.
Hi Marcel, thanks for the great content firstly. I have seen your video twice but confused in one thing - as when you scaled to 12Pods, and you mentioned that yr computer has 4 core - all exhausted in (almost 8 pods running instance) - then howcome Autoscaler would add 1 more node to yr K8S cluster when core machine is not having any CPU left
A cluster autoscaler will only add a node when total requested CPU exceeds available CPU in that node. Pods would usually wait in a 'Pending' state until either CPU is freed up or a node is available thay satifies CPU request requirement for that Pod. Hope that helps 💪🏽
Congrats, excellent video. I have a question about CPU units, in your example you said 4 Cores equals 4096m. Should not be 4000m? Do we measure millicpu as well as memory?
Yes you're right, my bad. It should be 4 cores = 4000m :)
Excellent explanation. Keep it up.
My doubt is if we auto scalling have to scale down node after we have sufficient resources. Then what will happen to the pods which are already in running state .?
Thanks
Thanks for the kind words
The cluster autoscaler will only scale down if the node is not utilised. Kubernetes will not interrupt pods to scale nodes down.
@@MarcelDempers
Thanks for the reply it really mean a lot. but let's see we have one pod which serving request and controller know that node is under utilizes. They will that pod dies or it will wait until it finishes the request.
Hi there. This is a very informative and comprehensive video. Thanks for that. I was wondering something you probably have an answer to. The cluster autoscaling, how much time you reckon it would take from the point where you ran out of space on your node, to the point where the new node is operational? And for the pod autoscaling, from running out of space to a new operational pod?
This depends, there's a thing called scaling lag. 1) metrics are 30sec delayed 2) time for scheduler to determine a new node is needed, can take few min 3) new node scaling time can take 3-5min
4) pod create , depends on what you are running
I have K8 using EKS , Do you have steps to implement autoscaling into Kubernetes cluster?
Awesome video as always
Keen for the next vid! Thanks Marcel
Excellent video my man, thanks a lot
If I have to understand really what is happening behin the scene. This channel I have to come.
Thanks for another awesome video
Awesome topic Marcel! Keepem comin. Have you tried K9s to visualize stuff in the cluster? Was thinking of givin it a spin myself...
I can't image working without K9s, but anyway it's useful to get grasp with kubectl commands
You are Legend and you must know it
very interesting. As i try to use "memory limits" i get sometimes "Out of memory" and my pod process is killed. I thought it would trigger another node instead. should i remove the limits ?
limits are more for last resort protection. You should ideally use resource request values and set the pod autoscaler around that. Checkout my pod autoscaler video for more info about scaling pods. The node autoscaler is only triggered when there is no space to schedule another pod.
That DevOps Guy yes, will check this. Thanks a lot. Love your youtube channel, all my support !
if you talking about scaling then you should talk about billing usage. scaling is a good but it could be a bad also for your money.
why are you assigning 1 core to two process? assigning 500millicore to a process has some advantage over allowing the process to use the entire core?
There is no advantage over using an entire core or splitting them unless you know the required consumption of your workload. It really depends on understanding how much CPU your pod needs. If you don't know, i recommend you start with as little as possible. And use your monitoring to figure out best recommended CPU. There is good app called Goldilocks which is great at finding recommended CPU usage based on actual consumption over time . github.com/FairwindsOps/goldilocks
loved it ! :)
Awesome
I am first one to like the video :)
i am using kubernetes 1.19
I get an error like this
unable to get metrics for resource cpu: failed to get pod resource metrics: the server could not find the requested resource (get services http: heapster :)
how to solve it?
Save me googling time
Hoala India.