Designing a Better Kubernetes Experience for Developers (2024)
March 1, 2021 Published by Matthew Clarke, Senior Engineer
TLDR; If you’re deploying a service with Kubernetes, you shouldn’t have to use all of your cluster management skills just to perform everyday developer tasks (like seeing which pods are experiencing errors or checking autoscaler limits). Backstage Kubernetes simplifies your deployment workflow by connecting to your existing Kubernetes implementation and aggregating the status of all your deployments into a single view — even across multiple clusters in multiple regions.
Navigating the complexity of Kubernetes
If you’re building a service today, you’re likely deploying it as a container, which is inside a pod, which is inside a cluster (alongside a bunch of other services that don’t belong to you), with deployments on different clusters spinning up and down all around the world. It can be hard to keep track of everything.
But despite widespread adoption of Kubernetes, all the tools for navigating this complexity have been focussed on the needs of cluster admins. This can make something as simple as checking the health of your service somewhat complicated.
That’s why we built a Kubernetes monitoring tool focussed on the needs of service owners and made it a core feature of Backstage, our open platform for building developer portals. We wanted to make the experience of managing services deployed on Kubernetes easier for all developers.
But first, how did we get here?
The rise of Kubernetes and DevOps
Since its release in 2014, Kubernetes has become one of the most widely adopted and important open source projects. Capabilities like autoscaling and cost optimisation through container scheduling used to be time-consuming and tricky to get right — now they’ve been democratised.
At the same time, the concept of DevOps has become mainstream. Developers now regularly perform tasks that were traditionally the domain of operations experts.
So, while everyday engineers can do more than ever before, their new powers have also come along with a new set of responsibilities.
New powers, shifting roles
When I first started using Kubernetes, cluster admins and service owners were one and the same: the people who built a cluster were usually the same people who owned the services that ran in the cluster. That’s not how it is today. As Kubernetes has achieved widespread adoption there has been a shift in Kubernetes usage as well as a shift in how Kubernetes is managed at the organisation level.
Now organisations tend to have a separate infrastructure team (sometimes not-so-ironically called the “DevOps” team) who build and maintain clusters for the feature developers and service owners. As the teams have become more specialized, the setups have become more advanced. For instance, the infrastructure team might set up Kubernetes clusters in multiple geographic regions in order to reduce end-user latency, wherever the user is in the world.
This is a better experience for the user, and it’s an optimization you might not have considered before Kubernetes existed or without a dedicated infrastructure team. But it also comes with productivity costs for the developer.
When your deployment environment reaches this kind of complexity and scale, the maintenance overhead for service owners increases. It forces them to use multiple kubectl contexts or multiple UIs just to get an overall view of their system.
It’s a small overhead — but adds up over time — and multiplies as service owners build more services and deploy them to more regions. Just checking the status of a service first requires hunting for it across multiple clusters. This can reduce productivity (and patience) company-wide.
Better tools for the job
We believed we could solve the problem through developer tooling. But we soon discovered the available tools weren’t suitable, because they:
Don’t cater well for deploying to multiple Kubernetes clusters,
Usually require that users have clusterwide permissions, or
Display everything on a cluster and aren’t focused on the service the user cares about.
Backstage Kubernetes: Manage your services, not clusters
Backstage provides vital information from Kubernetes — specifically focussed on the developer’s service. At a glance, the developer can see:
The current status of their systems running in Kubernetes
Including information aggregated from multiple clusters/regions
Any errors reported by Kubernetes
How close the system is to its autoscaling limits
Container restarts
Instead of spending 20 minutes in a CLI trying to track down which clusters your service has been deployed to, you get all the information you need to know at a glance. You can learn more about these features on the Backstage blog — or watch the demo video below to get an overview.
Everything about your service in one place
As a standalone monitoring tool, we think Backstage Kubernetes can improve the experience of any developer who deploys to Kubernetes. Combined with the other features of Backstage, developers get a complete solution for building and managing their services.
At the core of Backstage is its service catalog, which aggregates information about software systems together so you have a consistent UI and one tool for developers to use. For years, Backstage has provided one place for Spotify’s developers to see everything they need to know about their services (APIs, documentation, ownership, etc.). Now that includes the current status of their service, regardless of how many Kubernetes clusters they deploy to.
Now that Backstage is open source, we want to improve on what we have built internally and provide Kubernetes as a core component of Backstage for anyone to contribute to and benefit from.
Future Iteration
As we continue to grow and develop Kubernetes in Backstage with the community, we hope to offer support for Kubernetes resources beyond Deployments and Custom Resource Definitions.
Although at Spotify we currently use GKE extensively, Kubernetes in Backstage communicates directly with the Kubernetes API and is cloud agnostic, accordingly. It will work with other cloud providers, including AWS and Azure, as well as managed Kubernetes services, like Red Hat OpenShift.
Ask us anything: Matthew and the Backstage team will be hosting a Reddit AMA on March 3 at 4:00pm GMT. Send questions in r/kubernetes starting March 2.
A version of this article first appeared on The New Stack.
Kubernetes offers both advantages and disadvantages to developers. If your development team has the time and ability to learn it and they need software with high scalability and availability, you should consider Kubernetes.
Kubernetes is the foundation of cloud software architectures like microservices and serverless. For developers, Kubernetes brings new processes for continuous integration and continuous deployment; helps you merge code; and automate deployment, operation and scaling across containers in any environment.
This includes, for example, the master nodes — a Kubernetes cluster typically has 3 master nodes, and if you have only a single cluster, you need only 3 master nodes in total (compared to 30 master nodes if you have 10 Kubernetes clusters).
One success story that's come out of the early days of Kubernetes is a tool called Slingshot that a Spotify team built on Kubernetes. "With a pull request, it creates a temporary staging environment that self destructs after 24 hours," says Chakrabarti.
You need to learn Kubernetes if it is related to your work in any way, whether it's creating containerized applications, managing and deploying, or maintaining a containerized environment. If you are a practitioner, there is a high likelihood that you will encounter K8s in some form or another.
Google Cloud is the birthplace of Kubernetes—originally developed at Google and released as open source in 2014. Kubernetes builds on 15 years of running Google's containerized workloads and the valuable contributions from the open source community.
Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery.
A multi-master setup protects against a wide range of failure modes, from a loss of single worker node to the failure of the master node's etcd service. By providing redundancy, a multi-master cluster serves a highly available system for your end users.
Kubernetes High-Availability is about setting up Kubernetes, along with its supporting components in a way that there is no single point of failure. A single master cluster can easily fail, while a multi-master cluster uses multiple master nodes, each of which has access to same worker nodes.
You can have a single worker on Kubernetes but it's better to have at least three in case of node failure as the cluster will have to redispatch pods from the failing node to the two nodes still available.
Helios is a Docker orchestration platform for deploying and managing containers across an entire fleet of servers. Helios provides a HTTP API as well as a command-line client to interact with servers running your containers.
There are many many different parameters and settings to manage in order to make the environment suitable. Again, the environment is now where the complexity lives and not so much in the applications.
A promising cloud technology that may become widely accepted after Kubernetes is micro VM Kubernetes distributions. AWS Firecracker is the most popular of micro VM Kubernetes, which packages micro virtual machines into a Kubernetes cluster to enhance the security, workload isolation, and efficiency of resources.
Full removal is targeted in Kubernetes 1.24, in April 2022. This timeline aligns with our deprecation policy, which states that deprecated behaviors must function for at least 1 year after their announced deprecation.
The future of Kubernetes is in the custom resource definitions (CRDs) and abstractions which we build on top of Kubernetes and make available to users through CRDs. Kubernetes becomes a control plane for abstractions, and it's the CRDs of these abstractions that developers should focus on.
Kubernetes isn't really a one-size-fits all tool. It has a lot of expansion capabilities and can be highly flexible, but there are times it won't be the right fit. Kubernetes shouldn't be used for certain tasks because it would be overkill and not offer many benefits.
Amazon ECS, Docker Swarm, Nomad, Redhat OpenShift are the most popular Kubernetes alternatives and Kubernetes competitors. All of these have their own set of features, and also, there are some basics that they all seem to cover well. Let's see these alternatives to Kubernetes one by one, along with their pros and cons.
Kubernetes was created by Google and written mostly in Google's Go programming language. "While there have been many stories about using Rust for systems-level programming, you don't often hear stories about cloud software or Kubernetes software being written in Rust.
Although Docker Swarm is an alternative in this domain, Kubernetes is the best choice when it comes to orchestrating large distributed applications with hundreds of connected microservices including databases, secrets and external dependencies.
Support for running on any infrastructure – on-prem, public clouds, or both. A centralized control plane for managing applications, no matter where they are hosted.
Kubernetes is the most popular container orchestration platform, and has become an essential tool for DevOps teams. Application teams can now deploy containerized applications to Kubernetes clusters, which can run either on-premises or in a cloud environment.
This Kubernetes-native architecture allows your CI/CD pipeline to be portable and function across multiple cloud providers and locations. The declarative nature of Tekton and Kubernetes allows you to standardize, collaborate, and share your workflows across teams.
Docker. While Docker is a container runtime, Kubernetes is a platform for running and managing containers from many container runtimes. Kubernetes supports numerous container runtimes including Docker, containerd, CRI-O, and any implementation of the Kubernetes CRI (Container Runtime Interface).
Even when the master node goes down, worker nodes may continue to operate and run the containers orchestrated on those nodes. If certain applications or pods were running on those master nodes, those applications and pods will go down.
After a node fails, it is up to the Kubernetes cluster operator to recover the node and re-attach it to the cluster. During a node failure event, the Kubernetes cluster is operating in a degraded state, leading to potential resource constraints on a deployed Greenplum cluster.
The kubelet works in terms of a PodSpec. A PodSpec is a YAML or JSON object that describes a pod. The kubelet takes a set of PodSpecs that are provided through various mechanisms (primarily through the apiserver) and ensures that the containers described in those PodSpecs are running and healthy.
Having multiple master nodes ensures that services remain available should master node(s) fail. In order to facilitate availability of master services, they should be deployed with odd numbers (e.g. 3,5,7,9 etc.) so quorum (master node majority) can be maintained should one or more masters fail.
The Kubernetes Master node—runs the Kubernetes control plane which controls the entire cluster. A cluster must have at least one master node; there may be two or more for redundancy. ...
Worker nodes—these are nodes on which you can run containerized workloads.
etcd is a consistent and highly-available key value store used as Kubernetes' backing store for all cluster data. If your Kubernetes cluster uses etcd as its backing store, make sure you have a back up plan for those data. You can find in-depth information about etcd in the official documentation.
The Kubernetes load balancer sends connections to the first server in the pool until it is at capacity, and then sends new connections to the next available server. This algorithm is ideal where virtual machines incur a cost, such as in hosted environments.
Kubernetes enables you to easily manage containerized apps. This makes it ideal for applications that need to be horizontally scalable such as web applications, big data solutions, or infrastructure services. Kubernetes abstracts the monotonous tasks developers need to perform to run, maintain and scale cloud services.
Kubernetes is in fact one of the most sought-after skills by software companies around the world and if you are looking to gain a skill that will stay with you throughout your career, much like SQL and UNIX then learning Kubernetes is a great option.
Kubernetes is useful if you are dealing with many containers and require some automation of the steps when starting them. So, unless you have a large microservice environment, Kubernetes is unlikely to bring much added value. Probably, it is not needed or suited for your case and you should not invest in it.
When it comes to learning Docker or Kubernetes first and you ask yourself do I need to learn Docker before Kubernetes? The answer is that you should instead learn about containerization engines.
Full removal is targeted in Kubernetes 1.24, in April 2022. This timeline aligns with our deprecation policy, which states that deprecated behaviors must function for at least 1 year after their announced deprecation.
A promising cloud technology that may become widely accepted after Kubernetes is micro VM Kubernetes distributions. AWS Firecracker is the most popular of micro VM Kubernetes, which packages micro virtual machines into a Kubernetes cluster to enhance the security, workload isolation, and efficiency of resources.
Kubernetes is the most popular container orchestration platform, and has become an essential tool for DevOps teams. Application teams can now deploy containerized applications to Kubernetes clusters, which can run either on-premises or in a cloud environment.
There are many many different parameters and settings to manage in order to make the environment suitable. Again, the environment is now where the complexity lives and not so much in the applications.
How much does a Devops Kubernetes Engineer make in USA? The average devops kubernetes engineer salary in the USA is $150,000 per year or $76.92 per hour. Entry level positions start at $130,000 per year while most experienced workers make up to $180,000 per year.
Google Cloud is the birthplace of Kubernetes—originally developed at Google and released as open source in 2014. Kubernetes builds on 15 years of running Google's containerized workloads and the valuable contributions from the open source community.
Kubernetes can be used for data center outsourcing, web/mobile software, SaaS support, cloud web hosting, and high-performance computing. None of the listed great advantages have anything to do with Microservices or are only beneficial to large organizations.
Among the reasons why Kubernetes has been so widely adopted are flexibility and lack of fragmentation. Kubernetes may not be perfect, but there's no denying that a lot of people love it. Indeed, Kubernetes provides orchestration for more than three-quarters of containerized applications today.
The best way, to be a certified and recognized expert in Kubernetes security is to prepare: First the CKA exam – Certified Kubernetes Administrator. And then the CKS exam – Certified Kubernetes Security Speciali.
If you add in lab time, reading, and exploring different ways to utilize Kubernetes, around 20 hours is a good enough timeframe to expect you'll be able to start working with Kubernetes in a work environment.
Kubernetes, also known as K8s, is an open-source container orchestration tool for automating deployment, scaling, and management of containerized applications. Is Docker hard to learn? If you dedicate your time in learning such crucial skills and practice them accordingly, you could simply learn Docker in 30 days.
Introduction: My name is Stevie Stamm, I am a colorful, sparkling, splendid, vast, open, hilarious, tender person who loves writing and wants to share my knowledge and understanding with you.
We notice you're using an ad blocker
Without advertising income, we can't keep making this site awesome for you.