In this video, I'll discuss the Kubernetes architecture and some of Kubernetes resources
which are available in Oracle Linux Cloud Native Environment.
I'll describe the high-level architecture of Kubernetes in Oracle Linux Cloud Native
Environment. I'll describe the Kubernetes services running
on the Control Plane Node and the services running on the Worker Nodes.
And finally, I'll describe Kubernetes deployments, services, and other Kubernetes resources.
This picture shows the high-level architecture of Kubernetes.
Kubernetes provides a cluster environment, which includes one or more control plane nodes
and one or more worker nodes. There is a CLI interface provided by the kubectl
utility. You can also interface with the control plane
through an API or through the Kubernetes dashboard. The dashboard is a web-based user interface
that allows you to manage the cluster and the applications.
The processes that are running on the master node include the API server.
There is a scheduler, a controller manager, and the etcd which stores the status of the
cluster. The worker nodes run three additional processes.
The kubelet is an agent that allows the worker to communicate with the API server on the
control plane. The kube-proxy performs all of the networking
functions and routes network traffic. For Oracle Linux Cloud Native Environment,
CRI-O manages the container runtime for a Kubernetes cluster.
CRI-O an implementation of the Kubernetes CRI (Container Runtime Interface) to enable
using Open Container Initiative compatible runtimes.
CRI-O allows you to run either runC or Kata Containers directly from Kubernetes.
To begin this demonstration, I'm logged on to my control plane node.
I can run kubectl get nodes to show that I have a single control plane, single worker
node cluster. I'll view the kubernetes processes that are
running on the control plane. I'll type ps -e | grep kube and we see the
apiserver, the controller, the scheduler, kubelet, and kube-proxy running on the control
plane. I'll run the ps -e command again but this
time I'll grep for etcd and you see that this process exists.
I also want to show that a crio process is running as well on the control plane node
so I'll run the ps -e command again and grep for crio.
I'll now switch to the worker node and show the processes running here.
I'll run the same three ps -e commands that I ran on the control plane node.
You can see that only Kubernetes processes running on the worker node are the kube-proxy,
kubelet, and crio. There is also an operator node, which can
be a separate system as is the case in this demonstration, or it can be one of the nodes
in the cluster. I'll switch to the operator node.
You can run kubectl commands from the operator node, for example kubectl get nodes.
However, there are no Kubernetes processes running on this node as you can see from the
output of the ps -e commands. To summarize the Kubernetes processes running
on the Control Plane and Worker Nodes: The kubelet is an agent that communicates
to the API server running on the control plane node.
The agent also sets up pod requirements such as mounting volumes, starting containers,
and reporting status. The kube-proxy service programs iptables to
handle port forwarding and IP redirects. CRI-O manages the container runtime for a
Kubernetes cluster. CRI-O allows you to run either runC or Kata
Containers directly from Kubernetes. The Control Plane Node also runs:
The API server which validates and processes requests.
The API server then updates the information in the Cluster State Store to trigger operations
on the worker nodes. The Cluster State Store is referred to as
etcd. This stores configuration data related to
the state of the cluster. It is a best practice to have a backup plan
for this data. The controller manager performs all the cluster
functions and some of the application management. And the scheduler schedules the work to be
done on the different nodes and automatically determines where containers should be run
by monitoring resources. The last thing I want to do in this video
is provide an introduction to Kubernetes resources. These resources are sometimes called objects
and I've listed a few of these here. I've already talked about nodes and pods in
another video. Services provide a way to expose access to
pods either from within the cluster or from a system outside of the cluster.
Persistent Volumes provide storage for pods that can exist independent of a pod.
Replica sets guarantee availability of a specific number of identical pods.
Deployments provide a way to manage multiple pods and services and replica sets.
You can use the kubectl command-line interface to create or edit or delete or view Kubernetes
resources. I'll describe the use of the kubectl command-line
interface in another video but will demonstrate a few commands here to introduce Kubernetes
resources. You can get a list of the supported API Kubernetes
resources by running the kubectl api-resources command.
I'll scroll up and show that there are several of these.
Resource names include bindings, componentstatuses, configmaps, endpoints, and so forth.
Some of the ones I mentioned are namespaces, nodes, persistentvolumes, pods, services,
deployments, and replica sets. You can run the kubectl explain command followed
by the name of a resource to get a short description. For example, I'll run kubectl explain nodes,
and then kubectl explain pods, and kubectl explain services.
You can use the kubectl describe command followed by the name of the specific resource to show
details of the resource. For example, I'll run kubectl get pods -A
to show all pods. Then I can run kubectl describe pod followed
by the name of a specific pod. I'll select this kube-proxy pod for example.
This command fails so I need to include the the -n option followed by the namespace for
the pod. I can scroll up and we can see the name, the
namespace, some container information, and more information that we'll discuss in other
videos. This concludes the demonstration portion of
this video. Oracle provides an extensive number of resources
which you can use to learn more about this subject and others.
For further information about Oracle Linux Cloud Environment Training, you can visit
the URL shown on this slide. There is a comprehensive Oracle Linux 8 learning
path available to support a full range of Linux administration skills for cloud, on-premise
and hybrid users. And follow the URL to the Oracle Learning
Library for more videos on Oracle Linux. This concludes this presentation. Thank you
for watching.