能不能具體的說說kubernetes有哪些功能?

目前正在研究kubernetes,打算將來用於平台服務的管理。但是目前我不大理解kubernetes的作用,已知的是:

1.可以根據各個pod的資源使用情況,選擇壓力較小的pod部署服務(如何知道資源使用情況?用go的runtime?);

2.當有pod上服務掛掉時,會自動補充pod。(這裡,掛掉的服務中的數據是否有做遷移?)3.除此之外還有哪些好用的功能呢???


1. cAdvisor 來獲取使用情況,這裡使用的還是 linux 提供的介面。也就是說,linux 提供了介面使得 docker 可以單獨建立一個輕量級的虛擬機,這個虛擬機的使用情況 docker 是知道的,cAdvisor 使用了相同的方式。

2. kubernetes 只是做了簡單的高可用性,並不會也做不了數據遷移。你可以理解為 stateless scalability.

3. 主要的新功能是結合了 etcd,這個使用了 raft 協議的一致性存儲。可以自己寫外掛增強功能。

我想說一下,replicaSet並不會進行以下操作

當有pod上服務掛掉時,會自動補充pod

通常情況下你在使用replica時,pod的重啟策略都是只能設置為Always的,當服務掛掉時,pod會原地重啟,而非增加

只有當active(包含unknown,pending,running)的pod數量不足replica欄位聲明的數量時,replicaSet才會添加pod。

至於數據是否遷移,如果你沒有使用volume持久化數據,那麼在容器被刪除後數據就會丟掉,但是重啟容器是不會丟數據的。如果你不手動去刪除pod就不會有啥問題,如果真的需要持久化數據就需要使用volume


k8s真正強大的是整合了容器相關的項目,並且可以通過抽象配置來定義業務運行形態。谷歌在線上運營這個領域確實總結了很多有價值的東西。這就是為什麼k8s坑這麼多的情況下,還能把其它容器編排方案打成皮皮蝦。


回憶一下你的生產環境,某天產品要做活動,秒請求量會暴增五倍,咋辦。。傳統的方法是在找來五倍台物理機,配好各種網路,搭好各種環境變數,部署好各種應用,求運維大爺改Nginx配置,然後在夜深人靜的時候各種重啟,中間如果遇到錯誤exception。。。。。。如果使用容器雲的話,你只需要點兩下滑鼠,點擊scale,點擊數量,輸入五倍的數字,點擊確定,收官。當然這只是kubernetes的一個功能點。

1. 不是選擇壓力最小的pod來部署服務,而是選擇壓力最小的node來部署node,實際上pod里跑的就是你的程序。kubernetes通過一個單獨的組件Cadvisor來獲取各個節點的信息。

2. kubernetes會維護一個你告訴它的pod的數目,如果有pod掛了就會自動添加。pod可以使用一些共享存儲,這樣pod來了又去了,數據一直都在。

3. Pod,Service和Replication Controller,這些新概念都比較閃亮。

嘗試在不涉及太多細節的前提下概括性的總結一下k8s的優勢:通過service, deployment, volume等概念提供了描述分散式系統的一種高層次的語言,這種語言能很好的概括replication,load balancing等概念。

使用k8s管理服務集群時實際上只需要描述預期的服務運行狀態,而不需要說明如何一步一步的啟動服務和配置網路來達到這個狀態,對於開發者和運維人員來說非常省事。


問題太大,還是自己多到官網或者http://dockone.io去看看吧。

關於資源監控 https://kubernetes.io/docs/tasks/debug-application-cluster/resource-usage-monitoring/

The resource metrics pipeline provides a limited set of metrics related to cluster components such as the Horizontal Pod Autoscaler controller, as well as the kubectl top utility. These metrics are collected by the lightweight, short-term, in-memory metrics-server and are exposed via the metrics.k8s.io API.

pod掛掉補充pod,時候通過 replica的概念實現的。 掛掉的服務中的數據是是PV(persistent volume)下面,所以正常來說PV和PVC設置的好不涉及到數據遷移問題。

另外這些問題問的比較籠統,這樣講解估計也很難一時講明白。建議通過udemy來學習一些k8s的基本概念。


推薦閱讀:
相关文章