讀書筆記:Borg, Omega, and Kubernetes Lessons learned from three container-management systems over a decade
這篇文章介紹了Google資源調度的三大金剛:Borg, Omega, 和 K8S。並且進行了很有意義的對比和Lesson Learn,讀起來很有意思,而且難度不大。
關於Borg:
The first unified container-management system developed at Google was the system we internally call Borg.7?It was built to manage both long-running services and batch jobs, which had previously been handled by two separate systems: Babysitter and the Global Work Queue. The latter's architecture strongly influenced Borg, but was focused on batch jobs; both predated Linux control groups. Borg shares machines between these two types of applications as a way of increasing resource utilization and thereby reducing costs. Such sharing was possible because container support in the Linux kernel was becoming available (indeed, Google contributed much of the container code to the Linux kernel), which enabled better isolation between latency-sensitive user-facing services and CPU-hungry batch processes.
關於Omega:
Omega, an offspring of Borg, was driven by a desire to improve the software engineering of the Borg ecosystem. It applied many of the patterns that had proved successful in Borg, but was built from the ground up to have a more consistent, principled architecture. Omega stored the state of the cluster in a centralized Paxos-based transaction-oriented store that was accessed by the different parts of the cluster control plane (such as schedulers), using optimistic concurrency control to handle the occasional conflicts. This decoupling allowed the Borgmaster's functionality to be broken into separate components that acted as peers, rather than funneling every change through a monolithic, centralized master. Many of Omega's innovations (including multiple schedulers) have since been folded into Borg.
關於K8S:
The third container-management system developed at Google was Kubernetes.4?It was conceived of and developed in a world where external developers were becoming interested in Linux containers, and Google had developed a growing business selling public-cloud infrastructure.
關鍵技術:
Containers(容器):The resource isolation provided by containers has enabled Google to drive utilization significantly higher than industry norms. For example, Borg uses containers to co-locate batch jobs with latency-sensitive, user-facing jobs on the same physical machines.(Borg這點他們的各種文章裏麵總提,結果還不開源,就TM饞大家)
Application-oriented Infrastructure(麵向應用架構):Over time it became clear that the benefits of containerization go beyond merely enabling higher levels of utilization. Containerization transforms the data center from being machine oriented to being application oriented. This section discusses two examples:
Containers encapsulate the application environment, abstracting away many details of machines and operating systems from the application developer and the deployment infrastructure.
Because well-designed containers and container images are scoped to a single application, managing containers means managing applications rather than machines. This shift of management APIs from machine-oriented to application-oriented dramatically improves application deployment and introspection.
Things to Avoid(要避免的)
Don't Make the Container System Manage Port Numbers
Don't Just Number Containers: Give Them Labels
Be Careful with Ownership
Don't Expose Raw State
Some Open, Hard Problems(待解決問題)
Configuration
Dependency Management
文章鏈接:https://queue.acm.org/detail.cfm?id=2898444
最後更新:2017-08-22 11:32:51