In the past few years, Kubernetes (aka k8s) has emerged as the industry standard for managing containers at a scale. K8s has changed the way in which companies build, ship and run applications. Now, it has become the pinnacle for modern infrastructure and New IT. In this article, we will analyze the containers market, the need for persistent storage / datastores for containers and the trends which are expected to change the Kubernetes domain.
The number of companies using Kubernetes is growing year over a year together with the number of IT professionals who have Kubernetes expertise. Four out of ten enterprise companies (with 5,000+ employees) included in the Cloud Native Computing Foundation’s (CNCF) biannual survey in 2019 reported that they’re running Kubernetes in production environments. According to the CNCF annual report, the ecosystem has grown rapidly across both vendors and end-users. They started 2019 with 345 members and accomplished a growth of 50% throughout the year. All these numbers, plus the growing popularity of the expos in this ecosystem, which are visited by 10 000+ people show that Kubernetes usage will only grow in the coming years.
But what are the trends which will shape the cloud-native world in 2020?
Container Adoption on the Rise
Not only more companies run containerized applications, but also companies run a higher percentage of their existing applications in containers. We notice an accelerated move to bare-metal container deployments, especially for deployments at scale. The reason is that when you package different services and applications in a container, you can deploy it easily and fast across a number of physical and virtual machines and automate it through your orchestration tool. This brings easier management, scaling, and flexibility.
The container market in 2022 is projected to be $4.3 billion according to 451 Research. The number represents a 30% CAGR for the period between 2017 and 2022.
The typical use cases for containers are running new cloud-native applications in a microservices architecture in an efficient and scalable way, while providing software portability, reducing time and money spent on running apps and managing the infrastructure beneath these apps.
Top Challenges for Containers Adoption
Whether running applications in containers will be a suitable option for your existing infrastructure and technology stack is to be assessed on a case by case basis. Especially for big enterprises, which have a huge infrastructure, preferred hardware and software vendors, and established internal practices/policies.
And running containers in production does not come without some challenges. According to a 2019 Container Adoption Benchmark Survey conducted by Diamanti companies identify the following top challenges when adopting containers:
- 31.4% – Security
- 25.9% – Infrastructure integration
- 21.1% – Deployment
- 13.4% – Performance
- 8.3% – Persistent storage
It’s not surprising that security is on top of the list. Experts identify as top security risks using insecure images, unrestricted communication between containers, containers that are not properly isolated from the host, and of course, the option to lose data.
Usability is still to be improved, judging by the next 3 challenges. They will be addressed as containers become widely used and Kubernetes and the tooling around it become more mature.
Persistent Storage for Containers and Kubernetes Storage
Initially, the idea of running containers was that all containers and their data will be stateless and ephemeral – i.e. they can be destroyed or rescheduled without any consequence. However, this does not apply to databases, root images and sometimes other data, as they need to survive reboots and failures on both software and hardware levels.
Also, containers usually work together and share data or databases. The databases were to be kept outside of Kubernetes, but this is a hassle operationally. Yet the easiest and most secure way to run databases and persistent data is to use a shared storage data pool. So there is a clear need for persistent datastores for containers especially for Kubernetes storage.
This was realized surprisingly late in the ecosystem. But now it seems that K8s practitioners realized this and persistent storage is becoming the default datastore for containers, especially since the introduction of the CSI interface. We’ve seen the same development in other cloud-native ecosystems, such as Amazon EC2 and OpenStack.
And it’s all best done by software. Software-defined storage solutions enable users to provide scalable and highly-available storage for their containerized apps. This can be done by old-school SANs and All-Flash Arrays (AFA), but it does not fit in the fluid, software-driven world of containers.
This is also a development, which we’ve seen before in traditional/legacy ecosystems. With the increased adoption and scale of Kubernetes systems, we expect that the next realization will be that companies need high-performance persistent storage with Enterprise-grade features and proven reliability.
Kubernetes on the rise in the Enterprise Segment
K8s started as a toolkit for younger, cloud-native companies and applications. It was used to run production applications designed as microservices and also as a unified control plane for hybrid cloud orchestration. However, in 2019 we saw an accelerated adoption in the enterprise segment, which will only get faster in 2020 and beyond.
A number of services, targeted at the Enterprise user were launched in 2019 – IBM Cloud Paks, Google Anthos, HPE Container Platform, Red Hat OpenShift 4.2 and Microsoft Azure Arc. With traditional players entering the cloud-native market, Kubernetes got a major push in the enterprise. According to a recent Gartner report, “By 2023, more than 70% of global organizations will be running more than two containerized applications in production, up from less than 20% in 2019.”
Container Predictions to Watch
Except for the growth of the usage of containers and enterprise adoption, we should also focus on the technical challenges and predictions. Looking back at what happened in the Kubernetes ecosystem in the last two years and summing-up the expertise of leading Kubernetes and containers experts, we outlined the following trends:
- Expansion of workloads – more and more workloads will be migrated on containers, because of the numerous advantages. Containers give you a consistent environment. With them, you are able to run code on different machines and environments and do not have to worry about hardware compatibility, software versions, etc. You achieve on-demand scalability and built-in robustness.
- Kubernetes – becomes the undisputed standard in the container orchestration domain. According to research by Sysdig, Kubernetes holds a 77% share of the orchestrators in-use. It is followed by OpenShift, Swarm, and Mesos. With
- Container life will become even shorter – According to the same research of Sysdig, 22% of all containers have a lifespan of fewer than 10 seconds, 17% of fewer than a minute, 15% of fewer than a minute and only 3% of all containers live more than 2 weeks. It is expected that the lifespan of containers will become even shorter in the future, as bigger environments are more fluid.
- Containers entering highly-regulated companies/use-cases, especially around mature standards like PCI, HIPAA, NIST, etc.
- Hardware vendors will start designing optimized solutions around Kubernetes – in storage, networking and compute.
- The decoupling of the K8S API. Kubernetes is not just a cluster orchestrator, it is also an API framework. K8s API is on it’s way to become a standard like the S3 API.
- Creating end-to-end testing environments with Kubernetes – we can have a “snapshot” of production environments and test specific features with tools like selenium and cypress.io. This makes Kubernetes a perfect solution for end-to-end testing environments even in big enterprises.
- Kubernetes may become the Killer App (OK, more like the foundation) for Edge Computing in 2020, who knows!