我正在探索Google的IaaS / PaaS的架构,我对GKE(Google容器引擎)如何在Google数据中心运行感到困惑。在本文(http://www.wired.com/2012/07/google-compute-engine/)以及一些Google IO 2012会议中,我收集到GCE(Google Compute Engine)使用KVM(基于内核的虚拟机)运行配置的VM;这些虚拟机在谷歌基于cgroups的容器中运行(这使得谷歌可以按照他们安排现有基于容器的工作负载的方式安排用户虚拟机;可能使用Borg / Omega)。现在Kubernetes如何计算这个,因为它让你在GCE配置的VM上运行Docker容器,而不是在裸机上运行?如果我的理解是正确的,那么Kubernetes预定的Docker容器在KVM VM中运行,这些VM本身在由Borg / Omega安排的Google cgroups容器内运行......
此外,Kubernetes网络如何适应Google现有的GCE Andromeda软件定义网络?
我知道这是一个非常低级的架构问题,但我觉得对内部构件的理解将改善我对用户工作负载最终如何在裸机上运行的理解。另外,我很好奇,如果从性能的角度来看,容器内VM上的整个运行容器是否必要?例如。通过拥有多个层,网络性能是否会降低?谷歌在其博格论文(http://research.google.com/pubs/archive/43438.pdf)中提到,他们在没有虚拟机的情况下运行基于容器的工作负载(他们不想支付虚拟化成本");我理解在VM中运行公共外部工作负载的逻辑(更好的隔离,更熟悉的模型,异常的工作负载等),但是对于Kubernetes,我们的工作负载不能直接在裸机上安排,就像谷歌自己的工作负载一样?
答案 0 :(得分:0)
可以在虚拟机和物理机see this link上运行Kubernetes。谷歌的云平台仅提供虚拟机即服务,这就是为什么谷歌容器引擎是在虚拟机之上构建的。 在Borg中,容器允许任意大小,并且他们不会为奇数任务支付任何资源惩罚。