Fairwinds | Blog

Top 6 Lessons Learned Managing Kubernetes for SMBs

Written by Brian Bensky | Oct 3, 2024 2:00:00 PM

In the fast-growing landscape of cloud computing, Kubernetes is a powerful container orchestration platform that transformed how organizations deploy and manage applications and services. At Fairwinds, we’ve spent the last eight years building and maintaining Kubernetes infrastructure for clients large and small, and we’ve learned a lot along the way. Here are some of the key lessons we’ve learned from managing Kubernetes for small- and medium-sized businesses.

1. Kubernetes or Something Else?

Kubernetes offers a complex and flexible framework for managing containerized applications at scale. It enables automated scaling, self-healing, and declarative configuration. For complex, distributed systems, Kubernetes can be a game-changer in terms of efficiency and reliability.

Still, Kubernetes isn’t the right fit for every organization. Depending on the nature and requirements of your workloads, there are other cloud offerings that might be a better fit. For example, Google Cloud Platform (GCP) App Engine is ideal for building monolithic server-side rendered websites and supports popular development languages and developer tools. Cloud Run by GCP and Fargate by AWS enable you to run containerized apps quickly on fully managed platforms. These alternatives can offer SMBs simplicity and cost-effectiveness for certain types of workloads.

2. The K8s Learning Curve

Kubernetes offers a great deal of flexibility, which means the way it is deployed in each organization is unique. Along with that, however, comes a steep learning curve for running clusters, deploying to them, and keeping everything in the ecosystem optimally configured and up to date. Before committing to K8s, every SMB needs to consider:

  • How much do you expect your developers to understand about Kubernetes?
  • What type of deployment models will you implement?
  • How much of your in-house resources do you anticipate dedicating to Kubernetes maintenance?

The answers to these questions will impact your adoption strategy and help you level-set on what to expect from a business perspective.

3. On-Call Support

Even if you choose one of the cloud provider’s managed Kubernetes services, you'll still need engineers on call and available for infrastructure outages. Develop a strong alerting strategy that defines which types of alerts should go to which engineers. This will help your engineering teams avoid alert fatigue due to excessive pages and burnout. Plus, it will help you prevent prolonged outages due to misrouted alerts. A Managed Kubernetes-as-a-Service can take over your infrastructure maintenance and pages, leaving your in-house team to manage application-related outages.

4. Keeping Up with a Fast-Moving Ecosystem

The Kubernetes ecosystem is still young (just 10 years old!) and it continues to evolve rapidly. This is great because it fosters constant innovation, which provides new capabilities and integrations beyond its core functionality. At the same time, that means your SMB needs to plan for changes. Your team will need to stay abreast of regular updates to Kubernetes itself.

And while Kubernetes is a great foundation, it typically requires add-on tools for a lot of important capabilities, including monitoring, scaling, handling ingress, and so on. Many of these add-ons get updated often to ensure compatibility with the latest version of Kubernetes or to introduce additional functionality. SMBs need to have a plan for frequent updates to ensure that the changes are minimal and therefore less disruptive. You don’t want to be caught off guard by major changes that require a significant investment of time and effort (and learning if there are a lot of new capabilities). You’ll also need to consider how to minimize disruption to your applications and services during updates, and more frequent small updates are likely to result in fewer issues.

5. Build an Iterative Plan

Because Kubernetes has a large ecosystem, there are many directions you can take your clusters. Some of these, such as service meshes, introduce a lot of additional complexity. Especially when you’re just starting out with Kubernetes, use an iterative plan to determine what's most important for running your apps. For example, determine which aspects you want to prioritize: scalability over reliability or security over efficiency? Do you absolutely need a structure that can failover to another cloud region, or another cloud provider altogether? What latencies are acceptable, given the requirements of your application?

6. What to Handle In-House vs. Outsource

Deciding what to run yourself versus using managed services is a critical aspect of building and running Kubernetes infrastructure for SMBs. Let’s look at a few examples.

Databases

There are absolutely ways to run databases successfully in Kubernetes, but it's often preferable to use a managed service provider like Amazon Relational Database Service or Google Cloud SQL to handle running, scaling, and backing up your database instances. These services handle a lot of the complex administrative tasks of running databases, including provisioning and scaling database instances, performing backups and snapshots, and managing high availability and replication. This enables your in-house team to focus on application logic instead of database administration. However, these tools have their own limitations, so there are cases when self-managed databases might be a better option.

Monitoring Solutions

The open source ecosystem is very robust, offering tools that enable you to build your own monitoring and alerting system using Prometheus and OpenTelemetry. There are also vendors, including Datadog and New Relic, that have very comprehensive observability products. These solutions are generally simple to configure. They can also be expensive, with pricing that can scale dramatically the more you use them. One benefit of using OpenTelemetry is that you can connect it with different solutions, both paid or built with open source tools, very flexibly. Monitoring and alerting are incredibly important, so you’ll need to weigh the pros and cons of each approach.

Consider Kubernetes for Your SMB

Kubernetes is a powerful tool, but it's not always the right choice for every organization or every application. Carefully evaluate your application requirements, team expertise, and long-term goals before making the leap. Remember, the right infrastructure is the one that best serves the specific needs and constraints of your organization. Regardless of company size, make sure you understand how much developers need to know about the Kubernetes environments that their apps run in and how much time it requires to keep your infrastructure running smoothly. If you want to focus on your business differentiators in-house and leave infrastructure architecture and management to an outside provider, consider Fairwinds Managed Kubernetes-as-a-Service.