Kubernetes (also known as K8s) is an open-source container orchestration platform that automates the deployment, scaling and management of containerized apps. It was initially developed by Google, and it is currently maintained by the Cloud Native Computing Foundation CNCF.
Background
Containers such as the ones created with Docker are a popular method to package and deploy applications. Containers provide an isolated and consistent environment for applications to run. This makes it easier to move them between environments such as development, test, production, and maintenance.
But managing large quantities of containers can be time-consuming and complex. Kubernetes is the solution. Kubernetes provides a single approach to automate and manage the deployment, scaling, maintenance, and management of containerized applications.
The Core Concepts
Kubernetes is built on a few key concepts that you need to know:
- Nodes – A node in a Kubernetes cluster is a worker machine. You can choose to have it either virtual or physical. Kubernetes controls the Kubernetes control plan and the containers are run by nodes.
- Pods is the smallest unit in the Kubernetes model. It is a single instance a running process within a node. One or more pods can be contained within the same network namespace and may share the same container.
- Services : A service is an abstraction which defines a logical set pods and a policy for accessing them. Services are a reliable way to access the pods regardless of their current location or state.
- Replication controllers: A replica controller makes sure that at least one pod is running at any time. The replication controller will make a new copy to replace the pod if it goes down.
- Deployments : A deployment is a higher level object that manages replicas pods and provides declarative updates to their desired state.
- StatefulSets : StatefulSets, a kubernetes object, manages stateful application deployment. Unlike Replication Controllers or Deploments, it ensures that pods can be created and destroyed in the right order and that they are assigned unique hostnames.
- DaemonSets : DaemonSets make sure that a copy (or some) a pod is running on every node in a cluster. These are useful for monitoring agents and log collection daemons.
How Kubernetes works
Kubernetes is run in a cluster, and it’s made up of many components.
- etcd is a distributed key value store that stores configuration data for the cluster. It is used by Kubernetes to retrieve and store the current state of the cluster.
- API server – This is the control plane component. It exposes Kubernetes API to the world and manages all communication between other components.
- Controller manager The controller manager is responsible to maintain the desired state for the cluster. It monitors the state of the cluster via the API server and adjusts as needed.
- Scheduler : This scheduler decides which nodes will run what pods. It considers factors like the resources available and the constraints on the pods.
- Kubelet: This is the agent running on each node. It communicates with the API server and ensures that all containers are running as they should.
Kubernetes has many additional components that can be added to improve its functionality.
- Kubeadm is a tool to help you bootstrap a basic Kubernetes Cluster. It can be used for creating a cluster using a set number of machines or to add machines to an existing one.
- Kubectl is the command line tool that allows you to interact with Kubernetes clusters. You can use it to update, delete, or create objects in a Kubernetes cluster. It also allows you to see the current status of the cluster.
- Kubefed is a tool to create and manage a Kubernetes cluster federation. You can create a single view of multiple clusters, and move workloads among them.
- Helm is a Kubernetes package manager. This allows you to install and manage software easily on Kubernetes clusters.
Kubernetes allows users, who can take advantage of its robustness, scalability and reliability, to deploy their applications in a reliable fashion. This makes Kubernetes a must-have for any organization that wants to adopt a containerized infrastructure.
Kubernetes’ Advantages
- Kubernetes allows you to scale up or down your application based on demand.
- Kubernetes improves reliability by automatically detecting and recovering from failures. This reduces downtime.
- Kubernetes offers enhanced security. Kubernetes has a variety of security features such as network segmentation and role-based access control that can be used to protect your application.
- Kubernetes improves productivity. Developers can focus on writing code and not worrying about the infrastructure.
- Kubernetes offers improved portability. You can run your application on any number of platforms, including on-premises or in the cloud.
Kubernetes StorageClass Concepts and Common Operations
Kubernetes, an open-source container orchestration platform that has been popular in recent years, is powerful. Kubernetes’ ability to manage storage resources is one of its key features. This article will discuss the common operations and concepts of Kubernetes StorageClass. It plays an important role in managing storage resources within a Kubernetes cluster.
Understanding Kubernetes StorageClass
Kubernetes’ StorageClass defines the rules and parameters that are used to provision storage resources. It’s used to provision persistent volumes (PVs), and persistent volume claims (PVCs), in Kubernetes clusters. A PV is a storage resource that can dynamically be provisioned. A PVC is a request to store resources. A PVC is bound to a PV when it is created. It must meet the storage requirements of the PVC.
A YAML file can be used to define a StorageClass. It can contain parameters such as the storage provider type, storage class name, and the provisioner. The provisioner is the storage plugin used to provision storage resources. It can either be a Kubernetes-built-in provisioner, or a third party provisioner like OpenEBS.
StorageClass also includes the provisioner type as well as the storage class name. The provisioner type refers to the storage resource being provisioned. It could be SSD or HDD. The storage class name is what is used to refer to the storage class in Kubernetes.
Common Operations
How to create a StorageClass
A YAML file containing the storage class definition is required to create a StorageClass. The YAML file must contain the provisioner, storage class name, and the provisioner type. After the YAML file has been created, it can then be applied to Kubernetes using the kubectl use command.
apiVersion: storage.k8s.io/v1
kindd: StorageClass
metadata:
name: example-storage-class
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-ssd
Modifying a StorageClass
You can modify a StorageClass by updating the YAML file, then reapplying it in the cluster with the kubectl application command. Important to remember that changing a StorageClass won’t affect any existing PVs or PVCs that are bound by it.
How to delete a StorageClass
You can delete a StorageClass using the kubectl remove command. Important to remember that deleting a StorageClass won’t affect any existing PVs or PVCs that are tied to it.