編者按:本文做者是 Diamanti 的產品 VP Mark Balch,他將更多的分享他們向 Kubernetes作出的一些貢獻。這篇文章是關於 Kubernetes 1.3 新功能的一系列深刻文章中的第五篇。數據庫
首先,祝賀 Kubernetes 社區最近又發佈了一個帶來豐富價值的版本。對有狀態應用和聯邦集羣的更好支持,是我對 Kubernetes 1.3 版本如此興奮的兩個主要緣由。安全
Kubernetes對有狀態應用的支持是很是關鍵的,好比 Cassandra,Kafka 和 MongoDB。一些重要的服務都會依賴於數據庫,鍵值存儲、消息隊列等其餘存儲服務。服務器
此外,隨着應用訪問量的不斷增長,可能須要服務於全球數以百萬計的用戶,而依賴於一個數據中心或容器集羣將沒法知足這樣的需求。聯邦集羣則能夠知足規模和彈性的靈活需求,容許用戶跨多個集羣和數據中心進行應用部署。網絡
你之前可能聽我說過,容器將會是下一個重要的應用平臺。Diamanti 正在加速以容器技術運行有狀態服務在生產環境中的採用,這時咱們就更須要關心性能和易於部署。app
除了無狀態的容器服務,好比 Web服務器(之因此稱之爲「Cattle」由於這些實例是彼此能夠替代的),用戶也愈來愈多的使用容器部署有狀態的工做任務,這樣才能從 「build once, run anywhere」 的優點中受益,並能夠改善裸機的效率和利用率。性能
這些 「pets」 (運行有狀態服務的容器 ,須要特殊處理)就帶來了新的需求,包括更長的生命週期,配置依賴,有狀態的故障轉移以及對性能的要求。爲了成功的部署和伸縮應用,容器編排系統就必須解決這些需求。ui
下面咱們來看一下 Pet Set,它是 Kubernetes 1.3 引入的對象類型,目的是改善對有狀態服務的支持。google
例如 Pet Set 經過每一個數據庫副本的啓動階段進行排序,確保有序的主/從配置。翻譯
Pet Set 也經過無處不在的DNS SRV 記錄簡化了服務發現,一個熟知和簡單明瞭的處理機制。對象
Diamanti 將 FlexVolume 貢獻給Kubernetes社區,經過提供低延時、可保證性能的持久化存儲卷,來更好的支持有狀態的工做負載,包括從容器到存儲介質的強制 QoS。
規劃應用程序可用性的用戶必須面對跨地域的故障轉移和彈性伸縮的問題。跨集羣的聯合服務容許容器化應用跨多個集羣的輕鬆部署。
聯邦服務將會處理各類挑戰,好比跨聯邦集羣來管理多個容器集羣,協調服務部署和服務發現。
就像一個嚴格中心化的模型,聯邦提供一個通用的應用程序部署接口。每個集羣仍然保持自制,然而在網絡中斷和其餘異常事件發生時,聯邦爲本地管理集羣帶來了很大靈活性。
跨集羣聯邦服務也應用於一致服務命名和跨容器集羣部署,簡化了DNS解析。
在將來的版本中,很容易想象使用跨集羣聯邦服務帶來的強大的多集羣使用案例。
一個例子是基於管理要求,安全性和性能需求來調度容器。 Diamanti 的調度擴展模塊就是根據這個概念開發出來的。
咱們的第一個實現使 Kubernetes 調度器能夠感知對於每一個集羣節點的本地網絡和存儲資源。相似的概念在將來能夠應用於跨集羣聯邦服務的更普遍的調度控制。
隨着對有狀態應用的興趣的日益提高,進一步加強 Kubernetes 存儲的工做已經開始了。
存儲特別興趣小組(SIG)正在討論支持本地存儲資源的提議。 Diamanti 也在期待擴展FlexVolume 來包括更豐富的API,從而支持本地存儲和存儲服務,包括數據保護,複製和還原。
咱們還致力於一些其餘相關提議,包括改善跨集羣聯邦服務下容器的存放、遷移和故障轉移。
加入相關會話並做出貢獻!你能夠先從這些地方開始:
產品管理組(https://groups.google.com/for...!forum/kubernetes-pm)
Kubernetes 存儲 SIG (https://groups.google.com/for...!forum/kubernetes-sig-storage)
Kubernetes 集羣聯邦 SIG(https://groups.google.com/for...!forum/kubernetes-sig-federation)