(Tutor) Kubernetes can help us with the problem
outlined in the last lecture because with kubernetes,
we have a way of defining our deployments,
our scaling of containers
and how containers should be monitored
and replaced if they fail.
We have a way of defining all of that
independent from the cloud service we're using.
Because kubernetes is an open-source system
and de-facto standard
for managing container deployments
and for orchestrating containers.
And it can help us with tasks like automatic deployment,
with scaling and load balancing,
and with managing our deployment
and our containers in general.
It can help us with monitoring containers
and replacing them automatically if they go down.
And kubernetes simply allows us to
write down a kubernetes configuration.
So you could say
to write down a configuration file,
where we define our desired deployment,
which containers we want to deploy,
how many instances,
if it should scale up,
if they should be replaced and so on.
And then, we can actually pass that configuration
with certain tools to any cloud provider
or actually any machine owned by us
which is configured correctly,
which can then pick up on that Kubernetes configuration
to then create the resources and the deployment specified
in that configuration.
Which basically means that you have
one way of writing down such a configuration file.
It could look something like this.
This is actually how the kubernetes syntax will look like,
but of course we're going to dive into that
in great detail throughout this course.
And then this configuration would work
with any cloud provider
as long as it supports Kubernetes,
or even if it doesn't support it you can manually install
some Kubernetes software on any machine you own
and then that software, if you want to call it like that,
we'll be able to utilize this conflict file
and we'll be able to understand it.
So you have this standardized way of describing the
to-be-created and to-be-managed resources,
and as long as the server
you're planning to use is able to understand
this kubernetes syntax you could say,
and is able to run kubernetes
you can use this conflict file,
no matter which cloud provider you're using.
And what's even better is the fact
that you can actually merge
certain cloud providers-specific options
into this conflict file.
So that if some cloud provider
would require additional configuration,
you could just add that configuration into that main file.
And if you then ever want to use that file
with another cloud provider,
you just need to remove
or replace the cloud provider specific configurations
with the one often new cloud provider,
and you don't have to rewrite the entire conflict file.
That is the idea behind kubernetes.
Having this standardized way of describing deployments.
So kubernetes is quite powerful and quite interesting,
but it is super important that we're all on the same page
regarding what Kubernetes is and what it's not.
Because there are a couple of things
which Kubernetes is not.
For example, it's not a cloud service provider.
It's not an alternative to AWS
or Microsoft Azure.
It's an open-source project.
It's just a collection of concepts
and a collection of software you could say,
which together can be used with any cloud provider.
It's also not a service by a cloud service provider.
So whilst AWS indeed will have a service
which helps us with using kubernetes,
kubernetes itself is as I already said here,
an open source project,
and it can be used with any provider
and with any machine you own.
Some service providers, some cloud providers
might have services that make working
with kubernetes easier,
but you technically can use it anywhere.
The offer of course you're not restricted
to any specific cloud provider or a specific service,
you can use it anywhere.
And it's also really important to understand
that kubernetes is not just a software
which you run on some machine,
it's indeed that collection of concepts and tools
which you'll see in actual throughout this course,
which can help us with deployment
on any provider of our choice.
It's also not an alternative to Docker.
Instead it works together with Docker containers
to deploy containers anywhere.
And it's also not a paid service,
which I guess should be clear at this point,
because again, it's a free open source project
you don't need to pay for using kubernetes.
You might need to pay if you're using a kubernetes
specific cloud providers service
or in general,
if you use Kubernetes to deploy to some cloud provider,
you will of course have to pay for the resources
created by that cloud provider,
but just for using kubernetes to manage this deployment,
you don't have to pay.
Indeed you can think of kubernetes,
as Docker-Compose for multiple machines
because in its core, that is basically what it's about.
Docker composes a tool we learn about,
which helps us manage multi container projects
easily on our local machine.
We could even use it on single container projects,
just to a wide running these long docker run commands.
And kubernetes does this the same for multi machine setups
because when you deploy your application,
you do that by running the application
across multiple computers, multiple machines,
not just one machine.
And kubernetes makes deploying your containers,
monitoring and restarting them automatically
across multiple machines very easy.
So it's like docker-compose
with some convenience deployment specific extra features
for managing and running your dockerized,
your containerized application on a multi machine setup.
That's in the end what kubernetes does this about.
It's like docker-compose for deployment you could say.