Containers are one of the most powerful tools that have emerged for managing applications and their deployments. It is not an understatement to say that containers and the subsequent challenges that accompany them have impacted nearly every part of modern software development.
Kubernetes in an Organization Setting
Already, we’ve seen many of their benefits, including the environment isolation and independence they provide. What we haven’t looked at is how they can be used in an organization setting or at scale.
Kubernetes provides a distributed computing platform. It consists of at least one master and multiple compute nodes.
• The master is responsible for exposing the application program interface (API), scheduling deployments, and managing the overall cluster.
• Compute nodes run a “container runtime” (a system that provides a set of tools of running containers and allowing them to access node resources). Kubernetes supports two primary
runtimes – Docker and Rkt – with Docker being the more popular of the two. Nodes expose the computing resources to applications via the container runtime. Nodes can be physical or virtual machines, or they can also be other containers.
- Associated with the compute nodes is a set of ancillary services that provide networking and storage resources to container applications.
- Containers can be composed of stateless containers or stateful containers. Stateless containers can easily be scaled on demand, and there is support for dynamic autoscaling built into Kubernetes.
- Kubernetes is able to work with a large number of storage systems including network file shares (NFS), GlusterFS, and cloud specific storage types (like Amazon Elastic Block storage or Google Compute Engine persistent disk)
On top of the container runtime, Kubernetes introduces additional features to allow containers to work together:
Pods: A pod is a collection of one or more containers and serve as the core unit of management in Kubernetes. Containers in pods can see one another and share the same context and resources. In this way, it helps to bridge some of the limitations in containerization be-cause multiple dependent processes can be run together. Pods also provide for horizontal scalability in Kubernetes as it is possible to create copies of pods (called replica sets).
In Kubernetes, pods are not stable. They are frequently started and stopped based on a number of external factors. When they are stopped, they are not restarted.
ReplicationControllers are one of the main components that control the lifecycle of pods, such as when scaling up or down, or when doing rolling updates.
Services: Groups of pods and their replicas provide the template for a service. A service defines a logical set of pods and a policy which controls how they are accessed. Services can be exposed to internal or external applications, and there are tools which can help one group of pods to discover and access another.
Pods are associated with services through key/value pairs called labels and selectors. Through the use of grouped pods spread throughout a cluster, Kubernetes provides for high availability at both the infrastructure and application levels. It is possible for an administrator to declare the number of pods that should be running at any given time, and the cluster than manages the availability of the containers.
Deployments: A controller that describes a specific application, and then manages the job of deploying that application to the cluster. Deployments can be used to create new pods/replicas or to remove existing deployments.
Start Your Transformation with DVO Consulting! Implement Kubernetes to Consolidate Your Workloads
Contact us to learn more about the open-source container and how DVO Consulting can help you with your business processes. Our team of engineers will discuss your unique needs and how we can help run your operations and consolidate workloads with Kubernetes.
Founded and headquartered in Bountiful, UT to service the ever growing silicon slopes market and the west coast. We also have offices in Great Falls, VA which supports clients in Maryland, Virginia and Washington DC.