The Pragmatic Engineer thumbnail

The Pragmatic Engineer

How Kubernetes is Built with Kat Cosgrove

Understanding Kubernetes: Inside the World’s Second Largest Open Source Project

Kubernetes has become synonymous with modern cloud infrastructure, powering vast swarms of containerized applications across the globe. But what exactly is Kubernetes, why has it become so dominant, and how is such a massive open source project managed? In a recent deep dive conversation with Kat Cosgrove, leader of the Kubernetes release team subproject, we uncover the architecture, history, community, and operational secrets behind Kubernetes’ success.


What is Kubernetes and Who Should Care?

At its core, Kubernetes is a powerful orchestration tool designed to manage and scale applications running as swarms of containers. It automates resource scaling—whether that’s networking, storage, or compute—based on demand, helping maintain high availability while controlling costs.

However, Kubernetes is complex and primarily targeted at specialists such as cluster administrators or site reliability engineers (SREs). Most software developers may never interact with Kubernetes directly, though many applications they use likely run on it.

The tool’s rise was driven by the increasing complexity of microservices architectures. Before Kubernetes, managing clusters of containers was manual and error-prone. Kubernetes abstracts away much of this complexity, enabling rapid and reliable scaling of distributed applications.


The Kubernetes Architecture: Pods, Nodes, and Control Plane

Kubernetes operates with a control plane and nodes:

  • Control Plane: Manages the overall cluster state and scheduling, usually abstracted away from day-to-day user interaction.

  • Nodes: These host pods, which are groups of containers managed together. Each node runs a kubelet, a small agent that communicates with the Kubernetes API to start or stop containers.

If a pod fails—due to application crash or resource exhaustion—Kubernetes automatically recreates it without user intervention, ensuring seamless availability.


Containers vs Virtual Machines

Containers and virtual machines (VMs) are both virtualization technologies but operate differently:

  • Containers virtualize the operating system, are lightweight, and highly portable. They enable microservices architectures by allowing developers to package applications with their dependencies.

  • Virtual Machines virtualize hardware and are much larger and more resource-heavy.

Kubernetes relies on container virtualization but can run inside VMs if needed. The popularity of Docker and container registries empowered Kubernetes’ ecosystem, making container orchestration essential for scaling complex applications.


The Origins of Kubernetes: From Google’s Borg to Open Source Giant

Kubernetes originated from Google’s internal cluster management tool called Borg, used to manage tens of thousands of servers and microservices. Recognizing the broader industry need for such a tool, Google open sourced Kubernetes almost 11 years ago by donating it to the Cloud Native Computing Foundation (CNCF).

This move was both altruistic and strategic: though Google still runs Borg internally, open sourcing Kubernetes gave them significant influence over the cloud-native ecosystem. Today, Kubernetes is the second largest open source project worldwide, second only to Linux.


The Power of Open Source and Community

Open sourcing Kubernetes led to a vibrant community of users, contributors, and maintainers:

  • Users consume Kubernetes to deploy applications.
  • Contributors submit code, documentation, and fixes.
  • Maintainers oversee governance, technical decisions, and project health.

With over a thousand contributors monthly and around 150-200 maintainers, Kubernetes thrives on community collaboration. Many contributors are paid by companies that rely on Kubernetes, while others contribute as a hobby or career growth path. The project’s transparency, governance rules preventing single-company dominance, and extensive documentation foster a healthy ecosystem.


Managing Kubernetes Releases: A Well-Oiled Machine

Kubernetes releases happen every 12 to 16 weeks and require coordination among dozens of people. The release team is divided into subteams handling communications, documentation, enhancement proposals, and quality signals.

For example, the communications team manages feature blogs and webinars, while the documentation team ensures every user-facing change is properly documented before release—a strict policy that has helped Kubernetes maintain exceptional documentation quality.

This structured approach, combined with strict anti-burnout policies and mentorship, ensures sustainable project management despite the project’s scale and complexity.


Why Kubernetes Won: Documentation and Governance

Several factors contributed to Kubernetes becoming the de facto standard:

  • Google’s reputation and early hype built initial trust.
  • Integration with Docker’s ecosystem made it accessible.
  • Exceptional documentation and transparency: Every user-facing feature must be documented, enforced through Kubernetes Enhancement Proposals (KEPs), which are public and thoroughly reviewed.
  • Open governance: No single company can dominate the project, fostering community trust.

Good documentation has been a key enabler for adoption, helping users and contributors alike navigate the complexity.


Getting Started with Kubernetes and Contributing

For those interested in learning Kubernetes, the official Kubernetes documentation and Google Kubernetes Engine (GKE) tutorials are excellent starting points, especially since GKE offers sandbox environments to experiment safely.

If you want to contribute, documentation is a great entry point, especially for newcomers. Kubernetes welcomes new contributors and even allows anyone to apply to join the release team, offering an invaluable experience for those early in their careers.

Kat herself emphasizes how contributing can be a rewarding networking opportunity, connecting you with experts and opening career doors.


The Role of AI in Kubernetes Development

Interestingly, Kubernetes maintainers are skeptical about the current hype around generative AI tools, considering most to be overhyped or ineffective for their workflow. For Kubernetes, which involves a lot of people and project management, AI tools have limited use. However, automating mundane tasks like labeling pull requests could be a promising application.


When to Use Kubernetes: Advice for Startups and Teams

Kubernetes is not always the right choice, especially for small projects or simple websites. It shines when rapid scaling and cost control are critical. Key advice includes:

  • Avoid rolling your own cluster; use managed Kubernetes services like GKE, AKS, or EKS.
  • Migrate to Kubernetes before you hit a scaling bottleneck to avoid painful migrations.
  • Consider whether you have or can hire the expertise needed to manage Kubernetes securely and efficiently.

Final Thoughts

Kubernetes represents a monumental achievement in infrastructure management, combining Google’s engineering prowess with a vast, open source community. Its careful blend of automation, documentation, governance, and collaboration serves as a model for managing large, complex projects.

Whether you are a developer curious about what runs your applications or an engineer considering contributing to Kubernetes, there is a wealth of resources and a welcoming community ready to support you.


Resources


Special thanks to Kat Cosgrove for sharing her insights about the Kubernetes project, its community, and its future.


If you enjoyed this deep dive, consider subscribing to related podcasts and exploring other topics around open source infrastructure and software engineering.

← Back to The Pragmatic Engineer Blog