Now in order to get our hands dirty,
and to start working with Kubernetes,
there is one really, really, really important thing you got
to understand and keep in mind.
And that is the split between work you as a developer
and administrator have to do
and the work Kubernetes will do for you.
Because there is an important difference
and it's crucial that you understand what Kubernetes does
and what it does not.
And there is one super important thing
which Kubernetes will not do
which you instead have to do.
And that is the cluster and node creation.
Now, you may be expected
that Kubernetes is this all in one tool
where you define your final architecture,
so where you define your cluster,
and your master node and worker node configurations,
and Kubernetes creates all these resources for you.
But I have to tell you that is not what Kubernetes does.
And I actually mentioned this
in the last course section already.
Kubernetes helps you with managing these pods
with monitoring the pods,
monitoring the containers in the pods,
replacing failing pods and scaling pods.
It's really just about orchestrating these containers
which are inside of the pods,
and of moving them around between worker nodes
and ensuring that everything is up and running
and reachable by your end users,
this is what Kubernetes does.
So put in other words,
Kubernetes is responsible
for managing your deployed application for ensuring
that your application runs the way it should run,
that your containers are running,
everything related to that.
Kubernetes will not take care
about the infrastructure your application needs.
It doesn't know anything about that
and it's not a cloud infrastructure creation tool
or anything like that.
As I also mentioned in the last section already,
Kubernetes is not a cloud service provider
and also not a specific service
by one cloud service provider.
Instead, it's a framework and a collection
of concepts and tools which allows you to set up deployments
for your containerized applications.
But therefore, Kubernetes,
of course, doesn't know anything
about the concrete remote machines
to concrete virtual instances
or computers you wanna work with,
it doesn't know them.
So you have to create these machines in advance
and you have to install the Kubernetes API server,
the kubelets and all these different services I mentioned
in the last module on these master
and worker nodes which you have to create.
So you have to do all that instance creation,
that instance management,
and also the installation of all that software.
And if you're running your own data center,
that of course, means that you need
to manage that entire data center
and prepare everything therefore, Kubernetes.
If you are using a cloud provider,
it also means that you need to create,
for example, with AWS,
all the EC2 instances you need
for the worker and master nodes
and that you then also might need
to create additional resources like a load balancer,
or a file systems like the Elastic File System,
AWS offers if your dockerized application would need that.
And that, of course, brings us back
to the manual deployment part which is exactly
what we didn't want to do.
Because with that we are facing various disadvantages.
We have to keep these instances,
these machines updated,
keep the operating system updated,
and manage the entire network security group stuff.
So we have to ensure the security of these instances
and of all these machines.
And in addition,
as mentioned in the last course module,
we might face even more problems when it then comes
to replacing failing containers and so on.
Well, the good news is these problems are exactly
what Kubernetes does takes care of.
I mentioned this in the last core section
and this is still true.
Now when it comes to the security
and managing these machines,
these instances and managing the operating system on therein
and keeping everything up to date,
that is something Kubernetes can't help you with
because it's not a Server Administration tool,
it's not a cloud provider and it's not a managed service
that would take that away from you.
It really just helps you with what happens on these servers.
So Kubernetes will actually help you create the pods
and run the containers in the pods,
it will help you monitor and replace them
and it will help you with scaling.
In the end, you could say Kubernetes will simply utilize
the resources you create,
so it will utilize the worker nodes,
these machines you are creating,
and it will then help you achieve your deployment goals
for the containers.
It will not create the resources for you though,
that is something you still have to do.
Now, if you are an experienced server administrator,
you can of course do all of that.
If you're not there are additional tools like Kubermatic
which is built for Kubernetes,
but not part of Kubernetes which can help you
with creating all the infrastructure you need
for your Kubernetes managed to deployment
and therefore, this could be an additional tool
which helps you create these remote machines
and these instances,
for example, on AWS.
So that's a tool which can help you
if you don't wanna create everything manually there.
So that could be a step in the right direction.
It's not part of Kubernetes itself, though,
because Kubernetes is really just
about managing these containers
and keeping your application up and running and scaling it.
It's really important to understand that difference.
In addition, certain cloud providers like again,
AWS do have dedicated services like in AWS,
EKS, Elastic Kubernetes Service which actually helps you
with that as well.
That is a service which will allow you
to bring your own Kubernetes configuration
so that you don't have
to use the AWS specific configuration as you did have
to use with ECS but EKS.
So this Elastic Kubernetes Service will
then also set up all the resources needed
by your Kubernetes configuration.
So it's services like this
or tools like Kubermatic which I just showed you,
which can help you complete the picture,
and which can therefore help you getting rid of
that right side of this slide of the steps you have
to take care of.
I just want you to be aware of that
because it's easy to think
that Kubernetes will also create all these machines
which it needs.
And that Kubernetes will install the kubelets
and the API server and the scheduler
and all the things we talked
about when we analyzed the master and worker nodes.
And it's really important to understand
that Kubernetes will not do that.
It will not create any machines
or virtual instances and it will not install any software.
It really will only take care about managing these pods
and the containers in there monitoring them,
it will take care about scaling and about ensuring
that they can be accessed and reached.
It will keep your application up and running.
For creating the resources needed by your application,
you either need to do that on your own,
or you use a tool like Kubermatic
or a managed service like EKS.
And we will see that managed service in action later.
For the moment,
I just want you to be aware of this
and for the moment,
we'll set up a Kubernetes environment locally.
So we'll set up a worker and master node locally
and we'll ensure
that we'll have all the software Kubernetes needs
on these nodes installed locally.