- Minimum requirement to run any program/software/application we need an environment and this kind of environment is known as operating system(OS).
- As I explained in last post there are total 4 techniques we have for OS provisioning, and containerization is the fastest approach. Just within few seconds we can not only launch a full flash OS but all we can access an application as well.
- There are lots of container tools are available like Docker, Podman, CRI-O but these are depended on runc. RUNC is lowest level which directly run on top of kernel. Just to understand in simple language we can say tha runc is a server for container tools and container tools(Docker, Podman, CRI-O) are just client of it.
- There are two type of docker tools we have - Daemon based and Daemon less, docker is daemon based and Podman and CRI-O are daemon less. That means in -
Docker - Talk with docker.service and this services talks with runc.
Podman/CRI-O - Directly talk with runc
- That is the technical reason of competitively Podman & CRI-O are faster than docker.
- Docker, Podman & CRI-O do there job very well but along with container we require few more things so that our environment can run soomthly and whenever there is any issue we come to know asap.
- So to run an environment smoothly and easy to manage we need few more things like - Container management tool, Monitoring, Notifications, If there is any failure then Automatic Container launch, Auto scaling, Collect Metrics, Authentication & a beutiful web UI so that a user can interact with it.
- In all these areas our container tools are not smart enough so that why we need some tools which provides all these services and that's how role of Kubernetes(K8s) from google, Swarm from Docker and Mesos Marathon comes into the picture. These tools have all the capabilities listed above.
- If a tool provides all these services is also known as a Container Orchestration tool. So in our case we can say that K8s is a Container Orchestration Tool.
- The OCI(Open Container Initiative) is a Linux Foundation project to design open standards for operating-system-level virtualization, most importantly Linux containers, and container tools should follow standards defined by OCI. CRI-O is the one who follow maximum standards defined by OCI.
- If we setup an environment using all the things I've explained above we can achieve a perfect containerization solution, but it will be a complex environment and to manage this environment we need a experienced technical engineer who knows - Docker/Podman/CRI-O, YAML, Linux etc. and after all even though container tools are very fast, but our solution will be quite slower. Because whenever human interaction comes into the picture things get slow, human can't be as fast as computer.
- So if we have one more abstraction layer on top of container management tools (K8s, Swarm or Mesos Marathon) K8s in our case and this abstraction layer manage K8s on behalf us known as container platform which is OpenShift(RHOCP - Red Hat OpenShift Container Platform) of us.
- So how our environment look like now -
Hardware(RAM/CPU) >> Kernel >> runc >> CRI-O >> K8s >> OpenShift
- Few things we can add here about K8s and runc
-K8s is a program through which we can create and manage containers.
-K8s is a Orchestration tool for containers.
-runc is not a services so we can't start/stop it while it is kind of driver, which can be loaded/unloaded.
Comments
Post a Comment
Please share your experience.....