Google not use kubernetes but use Borg and Omega for Internal Use ...
Borg is a highly specialized, internal cluster management and container orchestration system developed by Google to handle its massive scale of workloads. It has been in use for over a decade and continues to be a core part of Google's infrastructure.
Key Points about Borg:
Legacy and Stability: Borg has been a cornerstone of Google's infrastructure, and it has been optimized over many years to be extremely stable and efficient for Google's internal use. Discontinuing such a critical system would be a massive undertaking.
Evolution and Coexistence with Kubernetes: Borg inspired the creation of Kubernetes, but they serve different purposes. While Kubernetes is open-source and designed for flexibility and extensibility in various environments, Borg is highly optimized for Google's unique requirements.
Internal Use Only: Borg remains in use because it's tailored for Google's specific needs, providing a level of efficiency, security, and integration with other Google infrastructure that Kubernetes, being more general-purpose, does not replicate internally.
Potential Successor (Omega): There have been discussions about Borg's successor, Omega, which Google also uses internally. Omega represents an evolution in cluster management architecture, aiming to address some limitations of Borg. However, Omega and Borg are both part of the evolution of Google's internal orchestration systems and complement each other rather than fully replacing one another.
In summary, Borg is not discontinued; it is still in active use at Google. It continues to play a crucial role in managing Google's internal workloads, even as the company invests heavily in Kubernetes for cloud and external use cases.
Borg and Kubernetes are both cluster management and container orchestration systems, but they have key differences due to their design goals, use cases, and environments in which they operate. Let's break down the primary differences between Borg and Kubernetes:
1. Origin and Purpose
Borg: Developed internally by Google in the early 2000s, Borg was designed to manage Google's large-scale infrastructure and workloads. It is optimized for Google's specific requirements, such as high availability, massive scalability, and internal security policies.
Kubernetes: Developed by Google as an open-source project and released in 2014, Kubernetes is a general-purpose container orchestration platform designed to be flexible and portable across various environments, including on-premises, public, and private clouds.
2. Design Philosophy
Borg: Focuses on efficiency, stability, and control. It is tightly integrated with Google's internal tools and infrastructure, making it highly optimized for specific workloads. Borg is less concerned with flexibility and extensibility because it operates in a controlled, homogeneous environment.
Kubernetes: Designed with flexibility, extensibility, and community-driven innovation in mind. It supports a wide variety of use cases, workloads, and environments. Kubernetes emphasizes a declarative approach to managing applications and infrastructure, providing a wide range of APIs and extensible components.
3. Architecture and Components
Borg: Has a monolithic architecture with tightly coupled components, designed for maximum performance and resource utilization. It uses a centralized scheduling system that can efficiently allocate resources across a vast number of machines.
Kubernetes: Has a modular architecture with loosely coupled components, including the API server, scheduler, controller manager, and etcd. This makes it highly customizable and allows for easy integration with third-party tools. Kubernetes uses a pluggable and flexible scheduling system.
4. Workload Management and Scheduling
Borg: Uses a centralized scheduler optimized for large-scale batch jobs and Google's internal needs. It focuses on optimizing resource utilization across Google's data centers and has sophisticated algorithms to manage complex dependencies and priorities.
Kubernetes: Uses a distributed and pluggable scheduler that can be extended or replaced as needed. It supports a wide range of workloads, from stateless to stateful applications, and is more flexible in handling different scheduling policies and priorities.
5. Resource Model
Borg: Has a proprietary resource model tailored to Google's internal environment. It is highly efficient at managing resources but less adaptable to different environments or user needs.
Kubernetes: Uses a more generic resource model, which supports concepts like Pods, Deployments, ReplicaSets, and more. This makes it easier for users to define, manage, and scale applications in diverse environments.
6. Extensibility and Customization
Borg: Not designed to be extensible or customizable outside of Google's specific environment. It is tightly integrated with other Google internal systems and is not intended for external use.
Kubernetes: Designed with extensibility in mind. It provides mechanisms like Custom Resource Definitions (CRDs), Operator patterns, and various APIs to allow developers and operators to extend and customize the platform.
7. Networking and Storage
Borg: Uses a custom networking and storage stack built for Google's infrastructure. It relies on Google's internal networking and storage solutions, which are not available outside of Google.
Kubernetes: Supports a wide range of networking and storage solutions through plugins and interfaces like the Container Network Interface (CNI) and Container Storage Interface (CSI). This allows Kubernetes to be deployed in a wide range of environments with different storage and networking needs.
8. User Interface and Accessibility
Borg: Not intended for external users and lacks a user-friendly interface. It is primarily used by Google engineers who are familiar with its command-line tools and internal documentation.
Kubernetes: Provides a more accessible interface with a command-line tool (kubectl), a web-based dashboard, and third-party GUIs. Kubernetes documentation is extensive and designed for a global audience.
9. Security and Multi-Tenancy
Borg: Built with internal security mechanisms tailored to Google's needs, with strong isolation between workloads.
Kubernetes: Supports multiple security models, Role-Based Access Control (RBAC), and policies to manage security and multi-tenancy in diverse environments.
Omega is another internal cluster management system developed by Google, intended as a successor or evolution to Borg. While Borg and Kubernetes are widely known, Omega is less talked about but still plays a significant role in Google’s cluster management systems. Let's explore the differences between Borg, Omega, and Kubernetes:
Key Differences Between Borg, Omega, and Kubernetes
Origin and Purpose
Borg: Developed in the early 2000s as Google's first large-scale container orchestration system. It was designed to manage Google's immense workloads and data centers efficiently.
Omega: Developed as an evolution of Borg to address some of the limitations and design constraints of Borg. It focuses on better handling of distributed systems and more sophisticated scheduling techniques.
Kubernetes: Inspired by Borg and Omega, Kubernetes was developed as an open-source project for a more general-purpose container orchestration system that could be used by anyone outside Google in various environments (cloud, on-premises, hybrid).
Architecture
Borg: Has a monolithic architecture with a centralized scheduler that operates with a single global state and tightly coupled components.
Omega: Introduces a more microkernel-inspired architecture, with a shared, global state but decentralized and distributed control planes. It allows multiple concurrent schedulers to work in parallel on the same shared state, reducing bottlenecks.
Kubernetes: Adopts a modular architecture with a central API server, etcd for state storage, and loosely coupled components like the scheduler, controller manager, and kubelet. It is designed to be highly extensible and pluggable.
Scheduling Model
Borg: Uses a centralized scheduler that relies on a single queue and focuses on optimizing the overall utilization and efficiency of Google's data centers.
Omega: Employs a distributed, optimistic concurrency control model. It allows multiple schedulers to make decisions simultaneously, reducing contention and improving scheduling throughput. Each scheduler has a view of the global state and makes decisions optimistically, resolving conflicts through a transaction model.
Recommended by LinkedIn
Kubernetes: Uses a single scheduler by default, but the system is designed to be pluggable, allowing for custom schedulers or multiple scheduling components to be added. Kubernetes also supports multiple scheduling profiles and extender patterns for more advanced scheduling needs.
Concurrency and Consistency
Borg: Relies on a single scheduling point, which can lead to contention and bottlenecks in decision-making.
Omega: Designed to handle high concurrency with its optimistic concurrency control model. It uses a transaction-based system where changes are proposed, validated, and then committed, allowing multiple schedulers to work concurrently without strict serialization.
Kubernetes: Implements an event-driven model where changes in the cluster state are handled by controllers reacting to state changes. It uses an eventually consistent model, where different components reach consistency over time.
Resource Management and Model
Borg: Optimized for maximum resource utilization and is tightly coupled with Google’s internal infrastructure and security policies.
Omega: Focuses on flexibility and allowing more sophisticated resource scheduling policies, including fairness, prioritization, and multi-tenancy scenarios.
Kubernetes: Provides a flexible resource model that includes abstractions like Pods, Nodes, Deployments, and ReplicaSets, making it easier to define and manage applications in diverse environments.
Extensibility and Customization
Borg: Highly optimized but not designed to be extended or customized easily. It is tailored specifically for Google’s infrastructure.
Omega: Aimed to offer more flexibility than Borg with its architecture, allowing Google engineers to experiment with new features and scheduling algorithms more easily.
Kubernetes: Built with extensibility in mind, offering APIs for Custom Resource Definitions (CRDs), Operators, plugins, and many more extension points to allow developers to build custom functionality.
Deployment and Use Cases
Borg and Omega: Both are internal to Google and not available for external use. Borg is still widely used, while Omega serves as an experimental evolution to test new approaches and overcome some limitations of Borg.
Kubernetes: Designed as an open-source, community-driven project that is widely adopted in the industry for cloud-native applications and infrastructure management. It supports a wide variety of environments, from small startups to large enterprises.
Conclusion
Borg is the original, monolithic system that handles Google’s internal workloads efficiently but with some limitations in flexibility and concurrency.
Omega is an evolutionary step that introduces a more distributed and flexible architecture with concurrent scheduling, designed to address some of Borg’s limitations.
Kubernetes takes inspiration from both Borg and Omega and transforms those concepts into a flexible, extensible, and open-source system suitable for a diverse set of users and environments.
Each system represents a step in Google's journey to optimize and manage its massive scale of workloads, while Kubernetes expands these ideas into a tool that the broader community can use and innovate upon.
Google does use Kubernetes, particularly for Google Cloud Platform (GCP) offerings like Google Kubernetes Engine (GKE), a managed Kubernetes service. However, internally at Google, Kubernetes is not the primary orchestration system for their own workloads. Instead, Google primarily relies on its internal systems, Borg and Omega, to manage its vast infrastructure and services. Here are the main reasons why Google does not use Kubernetes internally for most of its own services:
Legacy and Optimization for Internal Needs
- Borg and Omega have been around much longer and are deeply integrated with Google's internal infrastructure. These systems have been highly optimized over many years for Google's specific scale, security, reliability, and operational needs. Migrating from these battle-tested systems to Kubernetes would require significant changes without much added benefit.
Scale and Efficiency
- Borg is designed specifically for Google's massive scale and unique workloads. It is highly efficient in resource utilization, scheduling, and multi-tenancy management, which are crucial for operating at Google's scale. Kubernetes, while powerful and flexible, does not match Borg's level of optimization for Google's unique scale and requirements.
Complexity vs. Specificity
- Kubernetes is designed to be a flexible, general-purpose orchestration system that can work in a variety of environments (cloud, on-premises, hybrid). This flexibility comes with some complexity. Google’s internal tools, like Borg, are designed to be simpler in terms of their operational needs within a very controlled environment. Borg's tight integration with Google's infrastructure makes it more straightforward and efficient to use for Google engineers.
Security and Internal Policies
- Google's internal systems have custom-built security and compliance features that are tightly integrated into the way Google operates. While Kubernetes has robust security features, Google's internal systems like Borg have fine-grained controls and built-in security that align with their specific internal policies and regulatory requirements.
Established Workflow and Tooling
- Borg has its own set of internal tools, workflows, and developer environments that have been established and refined over many years. These tools are tailored for Google engineers and provide efficient ways to deploy, monitor, and manage workloads. Adopting Kubernetes internally would require changing these established workflows and retraining thousands of engineers.
Kubernetes' Role in External and Cloud Offerings
- While Kubernetes was inspired by Borg, it is intentionally designed to be a more modular, extensible, and community-driven system. Kubernetes' primary role is to serve external developers and enterprises looking for a portable, cloud-native platform. For Google, Kubernetes serves as a way to promote and support cloud-native adoption through Google Cloud services like GKE.
Use Cases for Kubernetes within Google
- It’s worth noting that Google does use Kubernetes for some internal workloads, particularly for newer projects or when it aligns well with GCP products. Kubernetes is not entirely absent from Google’s internal use, but for legacy and large-scale core systems, Borg and Omega remain dominant.
Conclusion
Google doesn’t use Kubernetes as its primary internal system because its existing systems (Borg and Omega) are better suited to its specific needs and scale. Kubernetes was developed to bring the lessons learned from Borg and Omega to a broader audience, providing a flexible, open-source platform for anyone to use. Thus, Google uses Kubernetes externally through GKE and other offerings, while internally, Borg and Omega remain the more optimized choice for their scale and complexity.
but ....
continues...
#borg #omega #kubernetes
Site Reliability Engineer
3moکی گفته استفاده نمیکنه؟ گوگل کلی محصول و تیم مختلف داره داخلی یه سری پروژه ها ممکنه استفاده کنه داخل یه سری ها ممکنه نکنه.
DevSecOps engineer
3moکی گفته گوگل از کوبر استفاده نمی کنه؟؟ گوگل اصلا از امگا استفاده نکرد و فقط و فقط یه پروژه تحقیقاتی بود براش.
Infrastructure Lead | DevOps Engineer @ Matin International Group
3moمهندس عالی بود مقاله 100/100 👏