HI ! 我是小小,我們又見面了,今天是本周的第五篇,本篇將會著重講解關於為什麼要使用k8s
前言
什麼是容器?
容器是一個包,包含了其應用以及所需要的所有的依賴。
容器中的應用與主機隔離,不需要關注環境。
容器和虛擬機最大的不同在於,容器不需要啟動作業系統的王正周期,故,容器的啟動以及停止都將會非常的快。並且容器還可以相當高興的利用宿主機的各種資源。
容器把所有的應用的語言和框架都打包進入到了容器,使得容器在任何環境都能部署。
左圖,應用直接部署在宿主機中,造成環境相互幹擾,不利於運維和維護,右邊,應用直接打包在docker中,應用之間互相互不幹擾,可以任意運行。
什麼是 Kubernetes?
k8s是一個來自google的開源項目,用於統一管理處理容器化的應用。
k8s,負責在大規模的伺服器環境中,部署和管理容器組,用於解決掉容器的複製,擴展,健康,啟動,負載均衡。
k8s,現在已經被多家公司支持,例如微軟,紅帽,藍色巨人。
Kubernetes 的著名優勢特色
一個平臺搞定所有
使用k8s,部署任何應用都相當的容易。
只要能打包進入容器,容器能夠運行,那麼k8s 就一定能運行。
雲環境無縫遷移
如果你有上雲的需求,那麼使用k8s,這間會是一件相當簡單的事情,k8s,會讓你無縫遷移雲環境,從google的cloud到aws再到微軟的環境,任意遷移。
高效的利用資源
看下圖,左邊,是4個虛擬機,黃色和藍色部分是運行的應用,白色部分是未使用的內存和處理器資源。
右邊,同樣的應用打包運行在容器中。
Kubernetes 如果發現有節點工作不飽和,便會重新分配 pod,幫助我們節省開銷,高效的利用內存、處理器等資源。
如果一個節點宕機了,Kubernetes 會自動重新創建之前運行在此節點上的 pod,在其他節點上運行。
開箱即用的自動縮放能力
網絡、負載均衡、複製等特性,對於 Kubernetes 都是開箱即用的。
pod 是無狀態運行的,任何時候有 pod 宕了,立馬會有其他 pod 接替它的工作,用戶完全感覺不到。
如果用戶量突然暴增,現有的 pod 規模不足了,那麼會自動創建出一批新的 pod,以適應當前的需求。
反之亦然,當負載降下來的時候,Kubernetes 也會自動縮減 pod 的數量。
使 CI/CD 更加簡單
你不必精通於 Chef 和 Ansible 這類工具,只需要對 CI 服務寫個簡單的腳本然後運行它,就會使用你的代碼創建一個新的 pod,並部署到 Kubernetes 集群裡面。
應用打包在容器中使其可以安全的運行在任何地方,例如你的 PC、一個雲伺服器,使得測試極其簡單。
可靠性
Kubernetes 如此流行的一個重要原因是:應用會一直順利運行,不會被 pod 或 節點的故障所中斷。
如果出現故障,Kubernetes 會創建必要數量的應用鏡像,並分配到健康的 pod 或節點中,直到系統恢復。
而且用戶不會感到任何不適。
一個容器化的基礎設施是有自愈能力的,可以提供應用程式的不間斷操作,即使一部分基礎設施出現故障。
總結
Kubernetes 使得應用的啟動、遷移、部署變得即簡單又安全。
不必擔心應用遷移後工作出現問題,也不用擔心一臺伺服器無法應付突發的用戶量。
需要注意的是,你的應用最好使用微服務架構進行開發,因為微服務應用比單體應用更適合做容器化。
關於作者
我是小小,生於二線,活在一線的程序猿,我是小小,我們下期再見。
小明菜市場