这几年云原生的热度久高不下,许多大厂纷纷拥抱云原生。提到云原生,不少开发者可能会想到Kubernetes,也称为K8s,是一个用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。作为云原生的重要代表之一,它真的很不错。但也有不少开发者抱怨Kubernetes太复杂了。
近日,在国外知名的技术论坛网站Hacker News上,就有一位用户对Kubernetes为什么这么复杂做出了自己的见解。
为什么Kubernetes这么复杂?
Kubernetes相比其他系统来说,确实要更大,更复杂。相信不少人在使用它的过程中都曾试图了解它为什么这样。该用户也是这样,并将自己的理解写了出来。
Kubernetes是一个集群操作系统
Kubernetes更像是一个通用的集群操作系统内核。传统操作系统的工作是将一台计算机及其所有相关硬件的接口暴露出来,让应用程序可以访问这些接口。具体细节我们不明确,但这些接口都有相应的设计目标。
- 资源共享——将一台物理计算机的资源细分给多个程序,使它们在某种程度上相互隔离;
- 可移植性——在一定程度上抽象出底层硬件的精确细节,这样同一程序就可以在不同的硬件上运行而无需修改,或者只需稍加修改;
- 通用性——当有新的硬件插入计算机时,能够以渐进的方式将这些硬件纳入抽象和接口,最好是在不大幅改变任何接口或破坏任何不使用该硬件的现有软件的情况下。
- 整体性——与通用性相关,操作系统能够调解对硬件的所有访问:软件应该很少或者不可能完全绕过操作系统的内核。软件可以使用操作系统内核来建立与硬件的直接连接,从而使未来
- 的交互直接发生(