and container orchestration - a global adoption of distributed microservices and cloud computing....
Post on 17-Sep-2019
Embed Size (px)
And Container Orchestration
Introduction This glossary describes terms related to containers, container orchestration and cloud-native technologies with the focus on Kubernetes. We supplement Kubernetes terminology with important computing and programming terms that put container orchestration in context.
A Aggregation Layer
The aggregation layer allows extending Kubernetes with additional APIs so that these APIs are available on the core Kubernetes API. The K8s aggregation layer will forward requests sent to the kube-apiserver to your application’s API if the requests hit API paths claimed by your application’s registered APIServices.
In Kubernetes, an annotation is a key-value pair for attaching arbitrary structured or unstructured metadata to Kubernetes API objects. In contrast to labels, annotations are not designed to identify and select objects, although they are often used to convey important information to K8s resources and controllers or other applications.
Autoscaling is an automatic adjustment of cluster/ compute resources based on load. With this feature, the system increases resources when the load increases and vice versa. Horizontal autoscaling is increasing the number of instances whereas vertical autoscaling is increasing their size (see HPA and vertical autoscaling). Supergiant Capacity ships with a built-in autoscaling feature based on the cost-effective packing algorithm. It allows intelligent spin up and spin down of cluster nodes with resource requirements exactly matching the load.
The cgroup (control group) is a Linux kernel feature that allows allocating and limiting CPU time, system memory, network bandwidth, and other resources among processes on the system. By using cgroups, system administrators can achieve fine-grained control over system resources and distribute them efficiently among
processes. The cgroup is one of the cornerstones of the Linux container technology.
Cloud Service Provider
A Cloud provider (CSP) is a company that offers infrastructure and services for running containers and container orchestration tools. They can offer Infrastructure as a Service (IaaS) for deploying cluster nodes, Platform as a Service (PaaS) for managing applications, and a variety of storage and network services. Supergiant toolkit includes built-in support for major cloud providers including Google Compute Engine (GCE) and Amazon EC2.
A cluster is three or more connected physical computers or virtual machines that constitute a single system. A worker machine in a cluster is referred to as a node or minion, and the leader of the cluster is normally referred to as master. When referring specifically to K8s, a cluster is one or more machines hosting the full set of K8s microservices which make up the K8s platform.
A ConfigMap is a Kubernetes API primitive designed to store non-confidential data such as configuration in a read-only volume used by Pods. This primitive is useful for decoupling environment-specific configuration from containers. ConfigMaps can be consumed as environmental variables, configuration files in a volume, or command-line arguments.
A container is a technology for packaging applications with their entire runtime environment (e.g., binaries, filesystem, dependencies) and isolating them from the host OS. Because of this self-contained design and flexibility, containers allow disentangling applications from the underlying infrastructure and isolating them from the host environment, thereby making them highly portable and environment-agnostic. This has accelerated a global adoption of distributed microservices and cloud computing. However, Containers do not contain all application concerns and can be less secure than VMs.
Popular container technologies include Docker, rkt, containerd, and more.
A containerized application is an application that has been packaged to run in one or more containers.
In Kubernetes, a controller is an executable loop that observes the shared state of a cluster through the API server and intervenes to change the current state towards the desired state.
CNI (Container Network Interface)
CNI (Container Network Interface) is a CNCF (Cloud Native Computing Foundation) project that develops specifications and libraries for writing plugins to configure network interfaces for Linux containers. The main goal of the project is to define common interfaces between the network plugins and container execution. Kubernetes
supports CNI standards, which allows developers to use CNI-compliant network plugins on the platform.
CI/CD is a software engineering pipeline that includes a combination of Continuous Integration (CI) with Continuous Delivery (CD) or Continuous Development (CD). See the description of these terms below to find out more.
Continuous Delivery is a software engineering approach for automating the software release process. It allows deploying the application at any point of time with no effort (e.g., by clicking a button). With continuous delivery, you can create releases daily, weekly, monthly, or on whatever schedule suits your business requirements.
Continuous Deployment is the uniting of Continuous Integration with Continuous Delivery, automating the
whole pipeline from code commit to customer. It ensures that every change passing the stages of the software testing pipeline is automatically released to the software’s users.
Continuous Integration is a practice of automated incorporation of code changes to the upstream repository ensured by automated tests against the build. CI makes code updates much easier and helps de-link release cycle from the code changes. To achieve this, CI puts a great emphasis on testing automation to check that the application is not broken when new commits are integrated into the main branch.
Control Plane is a combination of Kubernetes master processes that track events in the cluster and work to make the current state of all objects in the cluster match the desired state set by the administrator. The control plane includes etcd, the kube-apiserver, the kube-
controller-manager, the kube-scheduler, and the cloud- controller-manager.
The Cloud Native Computing Foundation (CNCF) is an open source project hosted by the Linux Foundation. CNFC hosts a number of important open source projects including Kubernetes, Prometheus, OpenTracing, Fluentd, and Linkerd. Supergiant is a silver member of CNCF and is a Kubernetes Certified Service Provider.
CronJob is a sub-type of Kubernetes jobs that runs on a periodic schedule. The schedule is specified using the Cron format.
A DaemonSet is a Kubernetes resource that ensures that all (or some) nodes run a copy of a Pod. It is akin to a system daemon running on an OS except that a DaemonSet runs as a system daemon on a K8s cluster. A DaemonSet adds Pods to new nodes and garbage collects Pods as nodes are removed from the cluster. Deleting a DaemonSet will remove the Pods it created.
The Kubernetes Deployment is an API primitive for deploying and managing ReplicaSets, which facilitate fault tolerance for Pods. For example, Deployments can inform ReplicaSets of how many Pods to have, as well as to what specification. Deployments also add extra functionality to ReplicaSets, such as rolling updates and rollbacks, making them more robust and more suitable for most needs than the ReplicaSet alone.
Desired State means the state of a Kubernetes application(s), including number of replicas, container images, network, and resources available specified by the administrator. The desired state can be set and changed by creating objects using the Kubernetes declarative syntax. The desired state is enforced by the control plane (see Control Plane).
DevOps is a set of computer engineering practices aimed at unifying the processes between software development (Dev) and IT teams (Ops) to improve development and operation of software and infrastructure. The main benefits of DevOps include increased trust and better communication and coordination between software departments, resulting in faster software releases, updates, and fixes, and the ability to resolve critical issues faster.
Docker is a computer program that executes OS-level
virtualization known as containers. Docker abstracts away the resource isolation and resource management functionality of the Linux kernel such as cgroups and kernel namespaces and allows independent “containers” to run within a single Linux instance, avoiding the expenses of booting and managing virtual machines (VMs).
Docker Swarm is a native clustering solution for Docker that turns a pool of Docker hosts into a single virtual Docker host. Because Docker Swarm serves the st