Everything you need to know about Virtualization, VMs , Containers, Pods, Clusters ..
A Mega Thread ๐
What is Virtualization?
Virtualization is the act of dividing shared computational resources: CPU, RAM, Disk, and Networking into isolated resources that are unaware of the original shared scope.
What is a virtual machine?
A VM is a virtual env that functions as a virtual computer system with its own CPU, memory, nw interface, & storage, created on a physical hw system (located off- or on-prem).
It uses sw instead of a physical computer to run programs & deploy apps.
The hypervisor allows multiple VMs to run on a single machine. Each VM includes a full copy of an operating system, the application, necessary binaries and libraries - taking up tens of GBs. VMs can also be slow to boot.
What is a hypervisor?
A hypervisor is software that creates & runs virtual machines (VMs). A hypervisor, sometimes called a virtual machine monitor (VMM), isolates the hypervisor operating system & resources from the virtual machines & enables the creation & mgmt of those VMs.
Types of hypervisors -
There are 2 different types of hypervisors that can be used for virtualization.
Type 1 -
A type 1 hypervisor is on bare metal. VM resources are scheduled directly to the hardware by the hypervisor. KVM is an example of a type 1 hypervisor.
Type 2 -
A type 2 hypervisor is hosted. VM resources are scheduled against a host operating system, which is then executed against the hardware. VMware Workstation and Oracle VirtualBox are examples of type 2 hypervisors.
What are Containers?
A container is a pkg of sw that includes all dependencies: code, runtime, config, & system libraries so that it can run on any host system.
At runtime, the container is also granted its own isolated slice of OS resources like CPU, RAM, Disk, & Networking.
Why do you need Containers?
Containers are extremely useful in scaling DevOps efficiency across multiple codebases & developer headcount. Containers ensures that containerized code works consistently on any machine the container is deployed to.
How does a container work?
Containers virtualize a machines operating system at the user space level. Virtualizing user space leverages the existing mechanisms that divide system resources between separate user accounts and programs on an operating system.
The Linux kernel has a few features that make this possible ->
cgroups- It allow processes & their resources to be grouped, isolated, & managed as a unit.
Namespaces- limit what processes can see of the rest of the system.
Benefits of containers -
1. Less overhead -
Containers require less system resources than traditional or hardware virtual machine environments because they donโt include operating system images.
2. Increased portability -
Applications running in containers can be deployed easily to multiple different operating systems and hardware platforms.
3. More consistent operation -
DevOps teams know applications in containers will run the same, regardless of where they are deployed..
4. Greater efficiency -
Containers allow applications to be more rapidly deployed, patched, or scaled.
5. Better application development -
Containers support agile and DevOps efforts to accelerate development, test, and production cycles
Container use cases -
1. Application Modernization
Modernizing applications today means migrating programs from legacy on-premises deployments to cloud solutions. Bcoz containers are agile, they enhance an organizationโs ability to migrate applications & workflows seamlessly.
2. Refactor existing applications for containers -
Although refactoring is much more intensive than lift-and-shift migration, it enables the full benefits of a container environment.
3. Deploying Microservices -
The microservices architecture allows sw developers to produce apps made up of several independent deployable services. Different components of d application hosted in containers are scalable & amenable to updating w/o disrupting other services.
4. Provide DevOps support for continuous integration and deployment (CI/CD) -
Container technology supports streamlined build, test, and deployment from the same container images.
5. Provide easier deployment of repetitive jobs and tasks -
Containers are being deployed to support one or more similar processes, which often run in the background, such as ETL functions or batch jobs.
Containers vs VMs -
VMโs simulate d entire machine & OS. Means VMs have simulated CPU/RAM/Filesystems/nw resources.
Containers only virtualize d user space of an existing OS. Therefore containers r much more lightweight den VMs. Containers can be utilized in an existing host OS
What are (Kubernetes) Pods?
Pods are the smallest deployable units of computing that you can create & manage in Kubernetes.
A Pod is a group of one or more containers, with shared storage & nw resources, & a specification for how to run d containers.
What is a cluster?
A cluster is a board that provides the circuitry to run all the pods (which have the container instances in them) in an orchestrated manner as defined by the users.
So thereโs a symbiotic relationship between these terms:
Container โ Pod โ Cluster
1. A container runs logically in a pod (though it also uses a container runtime).
2. A group of pods, related or unrelated, run on a cluster.
3. A cluster can contain many pods, related or unrelated [&] grouped under d tight logical borders called namespaces.
Retweet the thread if you like it and Follow me for more such content. ๐๐
โข โข โข
Missing some Tweet in this thread? You can try to
force a refresh
traceroute tracks the route packets take across an IP network on their way to a given host.
It assists you in troubleshooting nw connectivity issues from your Destination to a Remote destination by using echo packets (ICMP) to visually trace the route.
The syntax -
The cmd traceroute <x> (x here being an IP or hostname) is d most basic version & it will begin to send packets to d designated target. This result will allow u to trace d path of d packets sent from ur machine to each of d systems b/n u & ur desired destination.
Cybersecurity is a way of protecting the network, computers, and other electronic gadgets from cybercriminals. The Malicious attackers might delete, modify or leak confidential information posing a huge threat to a business or an individual.
Iptables is a command-line firewall utility for Linux. It monitors traffic from & to ur server using tables.
These tables contain sets of rules, called chains, that will filter incoming & outgoing data packets.
When someone tries to establish connection to and from your system iptables immediately looks for a rule in its list to match it and If it doesnโt find a matching one, it resorts to the default action (either DROP or Accept).
Rsync, or Remote Sync, is a fast, versatile and free command-line tool that lets you transfer and sync files and directories to local and remote destinations in an efficient and secure way. .
Why use Rsync?
When copying or moving large no. of files using tools like cp and mv may leave ur data in inconsistent state with part of it still in the original location and part of it in the target destination in case of any interruptions.
What was web1 or web?
The very first stage of development on the World Wide Web where only simple static websites used to exist.
Those were the times when Personal web pages (mostly static pages) used to be hosted on ISP-run web servers, or on free web hosting services.
What is web2?
Today's internet is all about web2. As per @Wikipedia Web 2.0 refers to websites that emphasize user-generated content, ease of use, participatory culture and interoperability for end users where websites and apps allow anyone to create content and share.