雲原生新時代弄潮兒k8s憑什麼在容器化方面獨樹一幟?
雲原生新時代弄潮兒k8s憑什麼在容器化方面獨樹一幟?


Kubernetes 可以為做些什麼?
在學習一種新技能之前,囧囧建議不要上去先看各種牛叉的實現,我們需要先搞清楚這個技能是什麼?學習了之後能為我們提升什麼有用的價值。畢竟在當今技術快速更新迭代的時代,我們沒有足夠的精力去學習太多沒有用的知識去擴展的無用的廣度,只有你明白了你需要學習的東西的價值,你才有動力去持續跟進,去剖析,去理解,去愛上它,用它創造價值。

Kubernetes 是什麼?
Kubernetes 這個名字源於希臘語,意為「舵手」或「飛行員」。k8s 這個縮寫是因為 k 和 s 之間有八個字元的關係🧐🧐🧐。
官方解讀
Kubernetes 是一個可移植的,可擴展的開源平台。
用於管理容器化的工作負載和服務,方便了聲明式配置和自動化。
它擁有一個龐大且快速增長的生態系統。Kubernetes 的服務,支援和工具廣泛可用。
部署演進

傳統部署
各個組織機構在物理伺服器上運行應用程式。無法為物理伺服器中的應用程式定義資源邊界,更多的選擇是憑藉工程師的個人經驗去分配資源,也就是無法合理的去規劃資源分配,這會導致資源分配問題。
虛擬化部署
虛擬化技術允許你在單個物理伺服器的 CPU 上運行多個虛擬機(VM)。允許應用程式在 VM 之間隔離,虛擬化技術能夠更好地利用物理伺服器上的資源,
相比於傳統部署方式,優點是更好的可伸縮性,降低硬體成本。
容器部署
以應用程式為中心的管理
資源隔離的粒度更細膩,比VM要更簡約,更容易擴展移植,
容器類似於 VM,但是它們具有被放寬的隔離屬性,可以在應用程式之間共享作業系統(OS)。
為什麼需要 Kubernetes,它能做什麼?

應用容器化
容器是打包和運行應用程式的好方式。
容器化已經做到應用程式能以簡單快速的方式發布和更新。
線上環境我們應用程式需要持續穩定的運行,不能早上部署好了,下午用戶無法使用。
出現故障問題的時候,需要有快速響應的機制去確保不會造成重大影響。
程式是無錯的情況下,對應到容器層面,就是我們需要保證容器是正確的,不能因為容器的意外而影響到前線😇。
這意味著我們需要管理運行應用程式的容器,時刻監督著運行情況,並確保容器不會停機。
如果一個容器發生故障,需要快速採取措施,例如重啟容器,或者另外啟動一個容器去替代它。

半夜凌晨兩點鐘,你在家裡呼呼大睡,線上瘋狂報警,你不得不趕緊起床解決😭😭😭

咦,想想都慘呀😭😭😭!
如果交給系統去處理容器問題,會不會更容易?更方便?不再需要你精神高度集中每天注意可能發生的各種意外情況😳?
所以,k8s來了,它來了,它來了,它帶著旋風跑來了!🧐🧐🧐
Kubernetes 提供了一個可彈性運行分散式系統的框架。

-
服務發現和負載均衡
Kubernetes 可以使用 DNS 名稱或自己的 IP 地址公開容器,如果進入容器的流量很大, Kubernetes 可以負載均衡並分配網路流量,從而使部署穩定。
-
存儲編排
Kubernetes 允許你自動掛載你選擇的存儲系統,例如本地存儲、公共雲提供商等。
-
自動部署和回滾
你可以使用 Kubernetes 描述已部署容器的所需狀態,它可以以受控的速率將實際狀態 更改為期望狀態。例如,你可以自動化 Kubernetes 來為你的部署創建新容器, 刪除現有容器並將它們的所有資源用於新容器。
-
自動完成裝箱計算
Kubernetes 允許你指定每個容器所需 CPU 和記憶體(RAM)。當容器指定了資源請求時,Kubernetes 可以做出更好的決策來管理容器的資源。
-
自我修復
Kubernetes 重新啟動失敗的容器、替換容器、殺死不響應用戶定義的 運行狀況檢查的容器,並且在準備好服務之前不將其通告給客戶端。
-
密鑰與配置管理
Kubernetes 允許你存儲和管理敏感資訊,例如密碼、OAuth 令牌和 ssh 密鑰。你可以在不重建容器鏡像的情況下部署和更新密鑰和應用程式配置,也無需在堆棧配置中暴露密鑰。


