什麼是Kubernetes A.K.A K8S呢? Kubernete源於希臘語 舵手 的意思,Google在2014年開源了K8S項目,而K8s即為Google在十幾年來大規模服務的運行經驗下,誕生的產物。
Kubernetes是一個可移植、可拓展的開源平台。用於管理容器化的工作負載與服務,可透過聲明式配置進行多服務的自動化佈署。
K8s會在監視你部署的服務同時,因應每時每刻配置的變化而自動地部署,
並且在部署地同時確保至少會有一個實例正在健康運作。
K8s為Pods提供自己的IP與dns,讓Pods彼此間能夠很好進行負載平衡。
提供基於整個集群的流量路由。
自動安裝你所選擇的儲存系統,像是本地儲存、公有雲(GCP, AWS)亦或是網路儲存系統(NFS)。
對於機密資訊與環境變數的部署,無需重新重建映像檔,且亦不會在堆棧配置中暴露機密。
根據容器的資源要求和其他限制條件自動放置容器,同時不影響可用性。混合關鍵和盡力而為的工作負載,以提高利用率並節省更多資源。
除了Services之外,Kubernetes還可以管理您的批處理和CI工作負載,並根據需要替換發生故障的容器。
允許分配IPv4/IPv6的addresses給Pods與Services
根據CPU, memory usage與其他所設定的條件限制,進行自動地水平擴增。
會自動重啟故障容器,在節點死亡時會自動地安排並重啟容器。
Kubernetes並非傳統的Platform as a service,由於K8s在容器級別而非硬體級別運行,因此他亦也提供了一些PaaS共有的服務,像是部署、負載平衡、擴充..等,並會自動地紀錄log,與監測Cluster並提供Report,但Kubernetes是相對有彈性的,對於上述默認功能是可選與可插入的,為此可能許多人會對Kubernetes有錯誤的認知。
在現行架構越來越複雜且微服務越來越多的環境下,Kubernetes的出現能讓我們更簡單地管理系統。
K8s架構內,節點Node的種類分為兩種,分別為Master Node與Slave Node,Master Node幫我們做決策面的事情,Slave Node則幫我們執行服務的部署與運行。也因應這種模式,Master Node只會有一個,而Slave Node可以有多個。
在Node當中,最小的執行單位為Pod,每個Pod當中可以有若干個Containers,這些Containers共享同個Pod當中的資源。
從功能的角度,可以簡略的將Kubernetes大致分為這些項目,但這並不是全部。就只是用一個GKE的實例讓大家來瀏覽大局。
這章節僅僅只是個入口,後面章節會先開始教大家從GKE入門K8S,並從Kubernetes master node開始帶讀者進入K8S五花八門的世界。
也恭喜大家成為了Kubernetes的初心者
增加此圖的原因有以下幾點:
https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture?hl=zh-tw
https://lol.garena.tw/game/item