這篇文章主要講解了“開發(fā)人員怎么理解kubernetes”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“開發(fā)人員怎么理解kubernetes”吧!
專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)徐州免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
在JAVA開發(fā)中使用 docker run
命令配合上自建的Docker倉庫可以很容易部署JAVA服務(wù),但是使用Docker部署應(yīng)用會有幾個(gè)問題:
docker run
不是部署服務(wù)的可靠方法,因?yàn)樗鼊?chuàng)建的容器在單個(gè)機(jī)器運(yùn)行。雖然Docker引擎提供了一些基本的管理功能,例如在容器崩潰或計(jì)算器重啟時(shí)自動重啟容器。但是它不能處理機(jī)器崩潰。無法保證服務(wù)的高可用!在開發(fā)過程中特別好用的方法是使用Docker Compose。Docker Compose是一個(gè)工具,它允許使用YAML文件以聲明方式定義一組容器,然后以組的形式啟動和停止這些容器。
但是使用Docker Compose也有個(gè)很明顯的問題就是它僅限于一臺機(jī)器。要可靠的部署服務(wù),必須使用Docker編排框架,例如Kubernetes。
Kubernates是一個(gè)Docker編排框架,是Docker之上的一個(gè)軟件層,它將一組計(jì)算機(jī)硬件資源轉(zhuǎn)變成用于運(yùn)行服務(wù)的單一資源池。它努力保持每個(gè)服務(wù)所需要的實(shí)例數(shù)量,并確保它們一直在線,即使服務(wù)實(shí)例或機(jī)器崩潰也是如此。容器的靈活性和Kubernetes的復(fù)雜性相結(jié)合是部署服務(wù)的一種強(qiáng)有力的方式。
Kubernetes有三個(gè)主要功能:
Kubernetes在一組機(jī)器上運(yùn)行。Kubernetes集群中的計(jì)算機(jī)角色分為主節(jié)點(diǎn)和普通節(jié)點(diǎn)。集群中只有很少的幾個(gè)主節(jié)點(diǎn)(可能只有一個(gè))和很多普通節(jié)點(diǎn)。
「主節(jié)點(diǎn)」負(fù)責(zé)管理集群。Kubernetes的「普通節(jié)點(diǎn)」稱為 “工作節(jié)點(diǎn)”,它會運(yùn)行一個(gè)或多個(gè)Pod。Pod是Kubernetes的部署單元,由一組容器組成。
主節(jié)點(diǎn)運(yùn)行多個(gè)組件,包括以下內(nèi)容:
普通節(jié)點(diǎn)運(yùn)行多個(gè)組件,包括以下內(nèi)容:
接下來我們看一下Kubernetes上部署服務(wù)需要掌握的關(guān)鍵Kubernetes概念,掌握這幾個(gè)概念就抓住了Kubernetes的核心。
Kubernetes是很復(fù)雜的,但是,一旦掌握了一些「關(guān)鍵對象」的概念,就可以高效的使用Kubernetes。Kubernetes定義了許多類型的對象,從開發(fā)人員的角度來看,最重要的對象如下:
Pod:
Pod是Kubernetes的基本部署單元。它由一個(gè)或多個(gè)共享IP地址和存儲卷的容器組成。服務(wù)實(shí)例的pod通常由單個(gè)容器組成,例如運(yùn)行 JVM 的容器。但在某些情況下,Pod包含一個(gè)或多個(gè)實(shí)現(xiàn)支持功能的 「邊車」(sidecar)容器。例如,Nginx 服務(wù)器可以有一個(gè)邊車容器,定期執(zhí)行 git pull 以下載最新版本的網(wǎng)站。Pod的生命周期很短,因?yàn)镻od的容器或它運(yùn)行的節(jié)點(diǎn)可能會崩潰。
Deployment:
Deployment : Pod 的聲明性規(guī)范。Deployment是一個(gè)控制器,可確保始終運(yùn)行所需數(shù)量的Pod實(shí)例 (服務(wù)實(shí)例)。它通過滾動升級和回滾來支持版本控制。
Service:
向應(yīng)用程序服務(wù)的客戶端提供的一個(gè)靜態(tài)/穩(wěn)定的網(wǎng)絡(luò)地址。它是基礎(chǔ)設(shè)施提供的服務(wù)發(fā)現(xiàn)的一種形式。每個(gè) Service具有一個(gè) IP 地址和一個(gè)可解析為該 IP 地址的 DNS 名稱,并跨一個(gè)或多個(gè) Pod對 TCP 和 UDP 流量進(jìn)行負(fù)載均衡處理。IP地址和 DNS 名稱只能在Kubernetes內(nèi)部訪問。
Service默認(rèn)是使用ClusterIp模式,如果需要外部能訪問到這個(gè)Service則需要使用另外兩種類型的對象:NodePort 和 LoadBalancer。
ConfigMap:
名稱與值對的命名集合,用于定義一個(gè)或多個(gè)應(yīng)用程序服務(wù)的外部化配置。Pod容器的定義可以引用ConfigMap來定義容器的環(huán)境變量。它還可以使用ConfigMap在容器內(nèi)創(chuàng)建配置文件??梢允褂肧ecret來存儲敏感信息(如密碼),它也是 ConfigMap的一種形式。
感謝各位的閱讀,以上就是“開發(fā)人員怎么理解kubernetes”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對開發(fā)人員怎么理解kubernetes這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!