- [Instructor] To kick off this section,
I wanted to give you my favorite definition
of Kubernetes that I've heard.
It's by Joe Beda, who's one of the original
Kubernetes developers and has done some really cool things
in the Kubernetes and cloud native landscape.
He said, "Kubernetes is an open source project
"that enables software teams of all sizes
"from a small startup to a Fortune 100 company
"to automate deploying, scaling and managing applications
"on a group or cluster of server machines.
"These applications can include everything
"from internal-facing web applications,
"like a content management system to marquee web properties
"like Gmail to big data processing."
I really like this quote because I think
it encompasses everything when I think about Kubernetes.
In this section, we'll break down the different features
of Kubernetes that make it a great platform
to manage your containerized applications.
Let's take a look at some of these.
First up, multi-host container scheduling.
This feature is handled by the kube-scheduler
which assigns containers, also known as pods in Kubernetes
to nodes at runtime.
It accounts for resources, quality of service,
policies and user specifications before scheduling.
Scalability and availability.
The Kubernetes master can be deployed
in a highly available configuration.
Multi-region deployments are also available as well.
From a scalability perspective, in Kubernetes 1.17,
the architecture supports up to a 5000-node cluster
and can run up to a maximum
of a hundred and fifty thousand pods.
The pods can also be horizontally scaled via an API.
Flexibility and modularization.
Kubernetes has a plug-and-play architecture that allows you
to extend it when you need to.
There are specific add-ons from network drivers,
service discovery, container runtime,
visualization and command.
If there are tasks that you need to perform
for your environment specifically, you can create an add-on
to suit your needs.
Two features that allow Kubernetes clusters to scale
are registration and discovery.
New worker nodes can seamlessly register themselves
with the Kubernetes master node.
Kubernetes also includes service discovery out of the box.
Service discovery allows for automatic detection
of new services and endpoints via DNS
or environment variables.
It also allows for persistent storage,
which is a much requested feature when working
with containers.
Pods can use persistent volumes to store data and the data
is retained across pod restarts and crashes.
Application upgrades is one area
where the Kubernetes project has done a lot
of pioneering work.
Application upgrades are supported out of the box
as well as rollbacks.
When it comes to Kubernetes maintenance and upgrades,
Kubernetes features are always backward compatible
for a few versions.
All API's are versioned and when upgrading
or running maintenance on the host, you can unschedule
the host so that no deployments can take place on it.
Once you're done, you can simply turn the host back on
and schedule deployments or jobs.
In terms of logging and monitoring, application monitoring
or health checks are also built-in, TCP, HTTP
or container exec health checks are available
out of the box.
There are also health checks to give you the status
of the nodes and failure monitored by the node controller.
Kubernetes status can also be monitored via add-ons
like Metrics Server, cAdvisor and Prometheus.
And lastly, you can use the built-in logging frameworks
or if you choose, you can bring your own.
Management of secrets.
Sensitive data is a first-class citizen in Kubernetes.
Secrets amounted as data volumes or environment variables.
They are also specific to a single namespace
so aren't shared across all applications.
And finally, the community.
Kubernetes and in general, the cloud native community
is one of the strongest open source communities
that I've ever seen.
It is governed by the Cloud Native Computing Foundation,
also known as the CNCF.
Kubernetes also has great documentation.
I find myself looking at Kubernetes docs on a regular basis
and really appreciate how comprehensive they are.
In terms of meetups and conferences,
KubeCon or CloudNativeCon is the big conference
that happens three times a year, once in Europe,
once in Asia, and another in the United States.
There are also regional Kubernetes community days
that have occurred in different cities, as well as meetups
that happen on a monthly basis in many cities.
Check out meetup.com to see if there's one in your area.
There's also a Slack group for Kubernetes
that is very active.
Once you join Slack,
you will find different special interest groups or SIGs
where you'll find the maintainers hang out
and it's a great place to ask questions,
you'll typically find me in the odd SIG room.
In this section, I've covered some of the most
compelling features in Kubernetes
and why you'd want to pick Kubernetes for your org.
Next up, let's talk about some
of the other orchestrators out there.