2016-06-08 65 views
0

所以,我試圖通過kubernetes,docker和AWS ecs來理解CPU和虛擬機的分配。 這看起來正確嗎?Kubernetes是否均勻地分佈在一個ec2集羣中?

  1. 本地,運行「泊塢窗撰寫」有幾個服務:
    每個容器被添加到一個泊塢窗機VM。您可以從該單個VM分配CPU份額。

  2. AWS,運行ECS,從碼頭工生成:
    每個容器(所有這些容器)都被添加到一個ec2虛擬機中。您可以從該單個VM分配CPU份額。除非您手動將「添加實例」添加到您的應用程序,否則部署到5個ec2實例的集羣的事實並沒有什麼不同。你的5個容器將共享1個ec2。

  3. AWS,運行kubernetes,使用複製控制器和服務yamls:
    分別獲得容器被分佈在都在你的kubernetes集羣的EC2實例?????

如果我旋轉起來5個EC2實例的羣集,然後部署5複製控制器/服務,他們將被實際穿過EC2的分佈?這似乎與ECS和本地開發的主要區別。只是想獲得正確的事實。

回答

1

以下是回答您不同的問題:

1>是的,你是對的,你有一個虛擬機,運行任何容器會從這個單獨的虛擬機得到CPU份額。您也可以選擇產卵羣集並嘗試。 Docker爲通過遍佈多個vms的覆蓋網絡連接的容器組成支持羣。

2>是的,您在一個任務中定義的容器將在同一個ec2實例中結束。當您啓動任務的多個實例時,這些任務會分散到集羣的實例部分。非任務應具有大於您的一個ec2實例上可用的最大資源的資源需求。

3> Kubernetes在許多方面比ECS更進化,但在容器分佈的情況下,它的工作原理類似於ecs。 Kubernetes吊艙相當於一個ECS任務。哪個是一個或一組容器位於單個虛擬機上。在kubernetes中,你也不能讓一個pod需要更多的資源在你的下面的一個計算資源上。

在所有這三種情況下,部署大型容器或吊艙時,您都受到資源下方可用的最大容量的限制。

您不應將docker平臺等同於VM創建和管理平臺。 所有這些碼頭平臺都希望您定義適合虛擬機的任務,並要求您在需要時通過更多任務數量進行水平縮放。 Kubernetes帶有服務發現功能,可以使用DNS查找將請求無縫路由到部署的容器。您將擁有swarm和ecs構建自己的服務發現。 CONSUL,EUREKA等都是您可以使用的工具。