一文了解kubernetes

一文了解kubernetes

最近工做用到了kubernetes,因而乎給kubernetes看了一下,感受東西仍是挺多的,不過入門使用不難,仍是挺快的,下面來介紹下kubernetes,讓初學者更快的認識、學習kubernetes。
java


kubernetes是什麼web

kubernetes是Google的一個大規模容器管理技術的開源版本,可能大部分初學者是學習docker的過程當中認識到kubernetes的,kubernetes確實也能很簡單的集成docker,可是,docker只是kubernetes支持的容器之一,並非只有docker才能與kubernetes集成,只不過由於docker比較流行因此優先使用docker。docker

那麼爲何會有這個kubernetes呢?這與第一句介紹有關:kubernetes是一個大規模容器管理技術的開源版本,也就是說kubernetes是爲了管理大規模容器集羣的技術,由於當容器多到必定程度後,手動一個個管理就比較麻煩了,耗時耗力,這時就有了衆多的容器管理解決方案,方便管理大量的容器,而kubernetes則是其中比較優秀的一個,因此使用者也就比較多了。微信


kubernetes中的概念網絡

kubernetes中增長了不少新名詞、新概念,新手起初看的時候可能會頭暈,感受亂,下面就來介紹一下kubernetes中的幾個重要概念。併發


Pod


首先是Pod,在kubernetes中,最小的管理單位是Pod而不是docker或其餘容器的實例,一個Pod能夠包含多個容器,而Pod則對這些容器進行統一管理。
負載均衡


ClusterIP

在kubernetes集羣中,各個Pod都擁有一個虛擬的IP,該IP會在Pod建立後由kubernetes隨機分配,這個IP外部沒法直接訪問,而在kubernetes內部則是互通的,至關於一個虛擬局域網絡。編輯器


Endpoint

一個Pod若是想要對外提供服務,則須要開放端口(也能夠經過其餘方式解決,這是官方提供的方式),Pod的ClusterIP+端口號就組成了一個Endpoint,該Endpoint對外提供服務,而一個Pod能夠開放多個端口,也就是能夠對應多個Endpoint。若是想要該Endpoint能夠對kubernetes集羣外的客戶端提供服務,那隻須要綁定一個本機端口便可。學習


Pod管理器

在kubernetes中,直接編寫一個Pod配置文件併發布到kubernetes集羣是容許的,可是這相比直接部署docker容器並無什麼優點,而kubernetes提供了一種更優優點的方案,那就是經過Pod管理器去管理Pod,在較早的版本中使用的是ReplicationController(後稱RC),在新版本中則提供了Deployment,本文不對比兩種方案的優劣,只經過RC來介紹該方案的優點。flex

使用RC你能夠經過配置文件來完成對Pod數量的控制,只須要在RC文件中指明你須要10個某個Pod的實例,那麼RC會自動幫你部署好10個指定Pod的實例,省去了一大筆部署時間,而當其中某個Pod掛掉後,若是是直接部署的Pod,那麼就須要手動去重啓了,並且還不必定能實時監控到Pod的健康狀態,可是經過RC去部署Pod,當Pod掛掉後RC會自動從新部署一個Pod來保證Pod的總數不變。


Service

在kubernetes內網中,調用一個服務能夠經過Pod的clusterIP+port的方式調用,可是因爲Pod的clusterIP是在Pod建立後隨機分配的,也就是沒法提早得知Pod的clusterIP,同時Pod有可能被重建,當Pod被重建後IP也會隨之變化,這樣就形成一個問題,kubernetes也提供了使用環境變量的方法解決,也就是當Pod建立完後會加一條環境變量保存Pod的IP,其餘服務調用方能夠經過環境變量獲取該Pod的IP,進而調用服務,可是以上方式有一些明顯的缺點,須要寫死IP,可是當Pod重建後以前寫死的IP就會失效,若是經過環境變量獲取,那麼因爲Pod可能重建,因此須要每次使用都從新獲取,比較麻煩,因此kubernetes提供了Service的概念解決了該問題。

對於一個服務,能夠寫一個Service統一對外提供服務,Service的IP是固定不變的,同時Service不只解決了Pod的IP沒法肯定的問題,若是有多個Pod提供同一服務,那麼經過Service還能夠爲這些Pod作負載均衡,Service會根據指定負載均衡策略去將請求分發到不一樣的Pod中。

有了Service就能夠經過IP去調用服務了,可是Service的IP不容易記憶,那怎麼辦?kubernetes同時還提供了一套完善的DNS服務,經過DNS服務,你能夠經過Service的名稱調用到服務,而DNS服務則會將Service的名稱轉換爲Service的IP。


Node

在kubernetes中,一個Node對應一個主機或者一個虛擬機,Node是Pod的載體,全部Pod都在Node裏邊部署。當擴展主機時,只須要增長一些配置,該主機就能夠自動被kubernetes的master發現並配置爲一個Node,供後續部署Pod使用,擴容起來十分的快。



到此,本文就結束了,同時做者本人也是剛開始學習kubernetes,若是有發現不足的歡迎指出~同時使用過程當中有任何問題也能夠加我詢問,只要我知道的必定幫你解答~


沒有關注的能夠掃下方二維碼關注我,若是在閱讀過程當中有任何問題還能夠加我QQ1213812243詢問~



         

長按二維碼關注我吧

不要錯過



本文分享自微信公衆號 - java初學者(JoeKerouac_public)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索