One of the biggest challenges for organizations with skills and expertise in container technology is in deploying a Kubernetes-based environment on-premises. The many different container management platforms are nearly all focused on cloud deployments, and include all the different management tooling needed. However, an on-premises deployment typically requires the customer to select, assemble, integrate, and install all the different tools required to make the Kubernetes cluster operational, particularly if they want to run it on bare metal. Scality noticed that there was a gap in the market for on-premises bare metal deployment options for a container management platform. Deploying Kubernetes on-premises is useful for stateful applications that require direct I/O to a local disk, something that the standard Kubernetes solutions find difficult to support. Kubernetes, by default, looks to use SAN or cloud-based storage, which increases the cost and decreases performance. Ovum accepts that the use of direct attached local storage is a specialist use case for containers, and that the performance and cost benefits are only noticeable for those stateful applications that organizations consider not to be good candidates to migrate to the cloud.
Providing on-premises container management for bare metal deployments is an emerging segment of the market
Scality has released MetalK8s under the Apache Software License v2.0 on GitHub, and it is based on the open source Kubespray "playbook" project. The base Kubernetes cluster is installed using Ansible, and Scality has made some definitive choices on the other projects that it would support. MetalK8s uses Calico for its container network interface (CNI) implementation, and the "ingress controller" is based on Nginx. The management tools for monitoring and metering the deployment have also been preselected by Scality, and include
Prometheus, to handle the metering and monitoring of the cluster.
Grafana, to provide dashboards of the different metrics and resource information.
ElasticSearch, to collect all the log files in a cluster and make them available for reporting.
Kibana, to enable operators to access the logs stored in ElasticSearch.
Helm, to manage the cluster, with all the different projects being treated as Helm packages.
MetalK8s requires CentOS 7.4 as the operating environment for the cluster. With MetalK8s, Scality has created a solution that provides for bare metal on-premises Kubernetes clusters a degree of manageability similar to that afforded to the more mainstream solutions. The major difference is that MetalK8s changes the default storage to locally attached direct storage, not SAN or cloud storage.
Roy Illsley, Principal Analyst, Infrastructure Solutions