首先看看k8s[中間8個(gè)字母支竹,數(shù)過了(逃](Kubernetes)是什么以及為啥會(huì)出現(xiàn)這個(gè)東西旋廷。
總的來說,k8s的出現(xiàn)和使用容器進(jìn)行部署的趨勢是分不開的礼搁。
總的來說饶碘,app的部署大致分為三個(gè)階段。
最傳統(tǒng)的方式中扎运,所有app公用一個(gè)物理系統(tǒng)饮戳,這種方式會(huì)造成很多資源分配上的沖突豪治。
而后進(jìn)入了虛擬機(jī)部署的時(shí)代扯罐,各個(gè)app運(yùn)行在其自己的VM上负拟,允許一個(gè)物理服務(wù)器上運(yùn)行多個(gè)系統(tǒng),并提供了一定的安全級別(各個(gè)VM相互隔離)歹河。
現(xiàn)如今遣蚀,更流行使用容器進(jìn)行部署蘑志。容器類似于 VM(見前文詳細(xì)比較)累奈,但是它們具有輕量級的隔離屬性,可以在應(yīng)用程序之間共享操作系統(tǒng)(OS)急但。因此澎媒,容器被認(rèn)為是輕量級的。容器與 VM 類似波桩,具有自己的文件系統(tǒng)戒努、CPU、內(nèi)存镐躲、進(jìn)程空間等储玫。
在使用容器進(jìn)行app部署的今天侍筛,需要一個(gè)平臺對容器進(jìn)行管理:
Kubernetes 是一個(gè)可移植的、可擴(kuò)展的開源平臺撒穷,用于管理容器化的工作負(fù)載和服務(wù)匣椰,可促進(jìn)聲明式配置和自動(dòng)化。Kubernetes 擁有一個(gè)龐大且快速增長的生態(tài)系統(tǒng)端礼。Kubernetes 的服務(wù)窝爪、支持和工具廣泛可用。
From?官方文檔
通俗一點(diǎn)齐媒,我理解的k8s就是對容器進(jìn)行管理的工具蒲每。其中提供的很多功能能夠提升部署的魯棒性以及整體的運(yùn)行效率:
服務(wù)發(fā)現(xiàn)和負(fù)載均衡
Kubernetes 可以使用 DNS 名稱或自己的 IP 地址公開容器,如果到容器的流量很大喻括,Kubernetes 可以負(fù)載均衡并分配網(wǎng)絡(luò)流量邀杏,從而使部署穩(wěn)定。
存儲編排
Kubernetes 允許您自動(dòng)掛載您選擇的存儲系統(tǒng)唬血,例如本地存儲望蜡、公共云提供商等。
自動(dòng)部署和回滾
您可以使用 Kubernetes 描述已部署容器的所需狀態(tài)拷恨,它可以以受控的速率將實(shí)際狀態(tài)更改為所需狀態(tài)脖律。例如,您可以自動(dòng)化 Kubernetes 來為您的部署創(chuàng)建新容器腕侄,刪除現(xiàn)有容器并將它們的所有資源用于新容器小泉。
自動(dòng)二進(jìn)制打包Kubernetes
允許您指定每個(gè)容器所需 CPU 和內(nèi)存(RAM)。當(dāng)容器指定了資源請求時(shí)冕杠,Kubernetes 可以做出更好的決策來管理容器的資源微姊。
自我修復(fù)
Kubernetes 重新啟動(dòng)失敗的容器、替換容器分预、殺死不響應(yīng)用戶定義的運(yùn)行狀況檢查的容器兢交,并且在準(zhǔn)備好服務(wù)之前不將其通告給客戶端。
密鑰與配置管理
Kubernetes 允許您存儲和管理敏感信息笼痹,例如密碼配喳、OAuth 令牌和 ssh 密鑰。您可以在不重建容器鏡像的情況下部署和更新密鑰和應(yīng)用程序配置凳干,也無需在堆棧配置中暴露密鑰晴裹。
至此,Docker和k8s的關(guān)系也就明了了:
Docker隔離并打包applications及依賴項(xiàng)纺座。
Kubernetes部署協(xié)調(diào)管理容器息拜,并提供一些其他的相關(guān)功能溉潭。