2015-09-30 32 views
8

因此Kubernetes擁有一個非常新穎的網絡模型,我相信它基於它認爲是缺省Docker網絡的一個缺點。雖然我還在努力去理解:(1)它認爲實際的缺點是什麼,(2)Kubernetes的一般解決方案是什麼,現在我已經達到了一個我只想實施這個解決方案也許會讓我更好一點。在vCenter上運行Kubernetes

儘管Kubernetes文檔的其餘部分非常成熟並且編寫良好,但配置網絡的說明很少,基本不一致,並且跨越許多不同的文章,而不是位於一個特定的地方。

我希望在(從頭開始)之前設置Kubernetes集羣的人可以幫助我完成基本程序。我對運行GCE或AWS不感興趣,現在我不想使用任何類型的覆蓋網絡,例如flannel

基本的理解是:

  1. 能開出/16子網所有的豆莢。這將限制您的65K豆莢,這對大多數正常應用來說應該足夠了。該子網中的所有IP都必須是「公共」的,並且不在某些傳統私有(有類別)範圍內。
  2. 創建cbr0橋的地方,並確保其持續性(但什麼機器?
  3. 刪除/禁用由泊塢窗安裝MASQUERADE規則。
  4. 一些如何配置iptables路由(再次,其中?),以便Kubernetes啓動的每個吊艙接收其中一個公共IP。
  5. 使用負載均衡Services和動態DNS需要一些其他設置。
  6. 提供5個虛擬機:1個主站,4個爪牙在所有5個虛擬機
  7. 安裝/配置kubectlcontroller-managerapiserveretcd到主,並運行它們作爲服務/守護進程
  8. 安裝/配置泊塢
  9. 安裝/配置每個馬仔kubeletkube-proxy並運行它們作爲服務/守護進程

這是我可以從2個研究整天收集最好的,他們可能是錯誤的(或misdir被排除),並且完全不完整。

我有無限制的訪問權限來在本地vCenter羣集中創建虛擬機。如果需要對VLAN /交換機/等進行更改。我可以參與基礎設施。

我應該爲Kubernetes設置多少個虛擬機(適用於中小型羣集),爲什麼?我需要對上面的模糊說明做出什麼確切的更正,以便完全配置網絡?

我很好的安裝/配置所有的二進制文件。只是完全窒息了設置的網絡端。

回答

3

對於kubernetes網絡的一般介紹,我發現http://www.slideshare.net/enakai/architecture-overview-kubernetes-with-red-hat-enterprise-linux-71相當有幫助。

在您的項目(1)和(2):恕我直言,他們很好地描述在https://github.com/kubernetes/kubernetes/blob/master/docs/admin/networking.md#docker-model。 從我的經驗來看:Docker NAT類型的方法有什麼問題?有時您需要配置到軟件的所有節點的所有端點(172.168.10.1:8080,172.168.10.2:8080等)。在kubernetes中,您可以簡單地將pod的IP配置到其他pod中,Docker使用NAT間接尋址將其複雜化。 另請參閱Setting up the network for Kubernetes一個很好的答案。

您的其他點建議:1。

所有IP地址在該子網必須是「公衆」,而不是內部的一些傳統的私有的(有類)的範圍。

kubernetes的「內部網絡」通常使用私有IP,參見上面的幻燈片,以10.x.x.x爲例。我猜混淆來自一些引用「public」的kubernetes文本爲「在節點外可見」,但它們並不意味着「Internet公共IP地址範圍」。

+0

謝謝@Stefan Vailant(+1),我欣賞鏈接和解釋。不過,我認爲你錯過了我的問題的主要焦點,這是上面開始的**粗體**句子「*我應該爲Kubernetes設置多少VM ...... *」。問題(和賞金!)的主要焦點是爲了在vCenter上設置Kubernetes而制定一系列具體步驟。有什麼想法嗎? – smeeb

+0

嗨smeeb,我同意你的評論。對不起,我的想法沒有,我主要想開始討論,因爲你的問題沒有回答2天。 –

0

對於有興趣做同樣事情的人,這裏是我目前的計劃。

我找到了kube-up.sh腳本,該腳本在您的AWS賬戶上安裝了一個生產質量良好的Kubernetes集羣。本質上它會創建1個Kubernetes主EC2實例和4個minion實例。

在主設備上安裝etcd,apiserver,控制器管理器和調度程序。在它的奴才上安裝kubelet和kube-proxy。它還爲小夥伴創建了一個自動擴展組(好),並在AWS上爲您創建了大量以安全和網絡爲中心的事物。 如果您運行該腳本並且創建AWS S3存儲桶失敗,請手動創建一個具有相同確切名稱的存儲桶,然後重新運行該腳本。

腳本完成後,您將使Kubernetes啓動並運行並準備好接近生產使用(我一直在說「接近」和「生產」,因爲我對Kubernetes太陌生,無法知道實際構成一個真正的交易生產集羣)。您將需要安裝AWS CLI,並配置一個擁有對您的AWS賬戶的完全管理訪問權的用戶(它會繼續並創建IAM角色等)。

我的比賽計劃將是:

  1. 獲取舒服Kubernetes在AWS上工作
  2. 保持在追捕的Kubernetes隊Slack幫助我理解Kubernetes如何運作引擎蓋下
  3. 逆向工程kube-up.sh腳本,這樣我就可以在本地運行Kubernetes(vCenter)
  4. 有關此過程的博客
  5. 更新此答覆指向所述博客的鏈接。

給我一些時間,我會繼續。

相關問題