kubernetes k8s container ReplicaSet Deployment Rolling Update Kubectl Create Service

For K8S Beginner EP 2:什麼是Kubernetes (K8S)

What Is Kubernetes?

誠如EP1內文所述,Kubernetes是用來管理容器的工具。根據Google的介紹,Kubernetes起源於Google Cloud,Google從其內部的叢集管理系統”Borg”啟發,將其去蕪存菁後,推出Kubernetes,以自動化的方式調度、管理Kubernetes。發展至今,Kubernetes已經是一個功能非常全面的企業級管理工具,內建有多種指令,可用於部署應用程式、逐步推行應用程式的變更、因應多變的需求調度應用程式資源、監控應用程式等,進一步簡化應用程式的管理。

為什麼需要Kubernetes

在港口邊,貨櫃裡裝著各式各樣的貨物,碼頭工人透過吊機將貨櫃放到貨櫃船上,貨櫃船負責運送這些貨櫃到世界各地,並在各個碼頭卸貨開箱;容器就像是貨櫃,剛好他們的英文名字也都是Container (接下來就稱容器為Container),而Kubernetes就像是船長,負責調度貨櫃上船、運送、下船、報關…等流程。

假設沒有Kubernetes來幫忙管理Containers,那Container將無人管轄,其執行狀態無人知曉,服務壞了也沒告警或重啟機制,直到公司的客服都忙翻了,系統管理者才後知後覺,這些都是企業級應用不能不重視的,所以Kubernetes更像是系統管理者的替身,讓大家可以安心睡覺不被On Call的重要夥伴!

標準的Kubernetes環境包含哪些元件

首先,Kubernetes基本上是以一個集群(Cluster)來運作的,有兩大角色,一是Control plane,也稱作是Master Node,用於管理整個Kubernetes Cluster;二是Compute machines,也稱作Worker Node,實際負載Container運作;另外還需要磁碟與Container registry工具。

Pod與Container的關係

Pod是Kubernetes內用於運行Container的環境,也是Kubernetes內Container最小的單位,也就是說,Kubernetes是透過管理Pod來操作Container的。Kubernetes原始設計,單一個Pod內可以容納多個Container,但一般而言,極為建議一個Pod內就只有一個Container,除了降低資源使用及簡化監控實作複雜度等因素外,因為Kubernetes管理的最小單位是Pod,當Pod內有多個Container時,會導致服務間的關聯係變高,服務運作互相牽制,造成穩定度下降,這都不利於實際應用。

可是,實務上仍然有需要一個Pod內有多個Container的狀況,這時侯,一個稱為Sitecar模式就出現了,透過Sitecar模式,在主要的Container旁再加一個用於特定目的的Container,如:收集Log的Filebeat。不過這並不會改變單一Pod多個Container會導致的不穩定,所以在設計上仍要小心,不要塞一堆Sitecar Container。

Minikube滿足學習所需

Minikube是一個Kubernetes Cluster的迷你縮小版,只需要少少的資源就可以模擬Kubernetes的環境,不論是實驗、學習或測試程式,都可以使用Minikube來完成,接下來,本系列都將使用Minikube作為教學環境喔!

~ END ~


,

Related posts

Latest posts