Overview of Kubernetes
Containerization is a process that bundles application code and all its dependent components into a single package. The resulting package is known as a container. Containers include all the files, resources, and libraries needed to run an application on any computer operating system or infrastructure. Containers are lightweight and memory efficient when compared to virtual machines and other virtualization technologies.
Docker and Kubernetes are containerization platforms often used together. Docker is used to create containers. Kubernetes, on the other hand, is a container management tool. Kubernetes allows developers to deploy and manage containerized applications at scale across multiple hosts or cloud providers, and it provides a platform for building microservices-based applications. It automates the deployment of containers and provides load balancing, scaling, and self-healing functions. These functions make it easier for developers to manage their infrastructure so that they can focus on writing code.
By combining MarkLogic with containers using Docker and Kubernetes, developers can quickly collaborate and release code faster and more efficiently. Because containers are platform agnostic, applications can be built once and run in a variety of scenarios including on-premise environments; private, hybrid, or public clouds; and on AWS, Azure, and Google Cloud. By using containers, Docker, and Kubernetes, MarkLogic developers will realize the benefits of a flexible, light-weight, and cost-effective alternative to virtual machines.
Compatibility
MarkLogic Server
MarkLogic Server Version |
Docker Image Version |
---|---|
9 |
Unsupported |
10 |
10.0-9.5-centos-1.0.2 or later
|
11 |
11.0.2-centos-1.0.2 or later |
Kubernetes
Kubernetes 1.23 or later.
Managed Kubernetes
The MarkLogic Helm chart is currently tested on Amazon EKS and Azure AKS. Setup and operational instructions are currently only provided for Amazon EKS.
Terminology
The following terms are used throughout this guide:
Term |
Definition |
---|---|
Container |
A container is a unit of software containing application code and all the libraries, files, and dependent resources that enable an application to run efficiently and reliably in different environments. |
Node |
A node is a physical or virtual machine. There are two types of nodes:
|
Cluster |
A cluster is a group of nodes. |
Control Plane |
The control plane manages clusters and the workloads running on them. The control plane manages scheduling and detects and responds to events. The control plane operates on one or more machines within a cluster. |
Pod |
A pod is a group of one or more containers with shared storage, network resources, and a specification for how to run the containers. In Kubernetes, applications and the accompanying utilities are hosted in pods. A pod can also operate as a logical host. A MarkLogic pod is managed by StatefulSet workload resources. |
StatefulSet |
StatefulSet is used to manage stateful applications by managing the deployment and scaling of a set of pods. StatefulSet also guarantees the ordering and uniqueness of pods. |
Namespace |
A namespace is a mechanism for isolating groups of resources within a single cluster. |
Service |
A service is an abstract way of exposing an application running as a network service on a set of pods. |
Ingress |
Ingress is a Kubernetes resource that manages external access to the services in a cluster (typically using HTTP). An Ingress also provides load balancing functions. |
ConfigMap |
A ConfigMap is an API object used to store data in key-value pairs. |
Secret |
A secret is an object that contains a small amount of sensitive data, such as a password, a token, or a key. |
Load Balancing |
Load balancing is the methodical and efficient distribution of network or application traffic across multiple servers. |