K8S雲端快速試玩 動手打造容器叢集

Google K8S(Kubernetes)目前已經成為最多人採用容器管理調度平台,為了協助IT人員跟上腳步,本文將透過說明及實作,練習建構Kubernetes叢集運作環境,然後示範其中幾項重要的操作技巧,例如線上擴充或縮減容器的運作規模、使用Kubernetes儀表板等等,以便降低資料中心維運人員的管理負擔。

其中,CSI容器儲存介面可以讓安裝Volume Plugins的動作就像部署Pod一樣簡單,並且在預設的情況下便會啟用此功能,而無須像K8S 1.09版本必須依賴管理人員手動啟用此功能。至於持續性本機磁碟區機制,則是幫助管理人員輕鬆地讓主機的本機磁碟區成為持續性的儲存資源供容器使用。


安全

從K8S 1.09版本開始,提供CCM(Cloud Controller Manager)特色功能,如圖4所示,在新版K8S 1.10版本中則提供「外部kubectl憑證提供者」的「Alpha」版本功能,以便使用雲端供應商提供的IAM身分驗證服務。


▲ 圖4 Kubernetes - CCM(Cloud Controller Manager)運作架構示意圖。(圖片來源:Kubernetes - Concepts Underlying the Cloud Controller Manager)

網路

此功能是為了提供在安裝程序中將DNS服務切換為「CoreDNS」的「Alpha」版本。

其他

從K8S 1.10版本開始,將「持續性磁碟區宣告」(Persistent Volume Claim,PVC)更新為Beta版本,以避免儲存資源因為被綁定在Pod中而被誤刪的情況發生。同時,在K8S 1.10版本中也推出新增功能Local raw block volumes的Alpha版本。

此外,在2016年時,Docker將Runtime主要運作元件Containerd以開源的方式釋出。在2018年5月時,K8S也正式支援最新釋出的Containerd 1.1版本,讓Kubelet能夠直接與Containerd溝通與協同運作,如圖5所示,有效改善Pod運作效能及降低啟動延遲。


▲圖5 Kubernetes正式支援Containerd 1.1版本運作示意圖。(圖片來源:Kubernetes Blog - Kubernetes Containerd Integration Goes GA)

了解Kubernetes叢集運作架構

在K8S(Kubernetes)叢集運作架構中有兩種運作角色,分別是「Kubernetes Master」及「Kubernetes Nodes」,如圖6所示,其中擔任Master角色的Kubernetes主機,將會負責協調Kubernetes叢集中所有管理工作任務,例如調度應用程式、維護應用程式的期望狀態、擴充應用程式運作規模、執行滾動式更新作業等等。


▲圖6 Kubernetes叢集運作架構示意圖。(圖片來源:Kubernetes Documentation - Using Minikube to Create a Cluster)

至於擔任Nodes角色的Kubernetes主機,除了可以採用實體伺服器或VM虛擬主機外,最主要的工作任務就是負責「運作容器」,並且都會有Kubelet管理程序和運作容器軟體(例如Docker或rkt),同時透過代理程式及Kubernetes API與擔任Master角色的Kubernetes主機溝通。


接著來看看在Kubernetes叢集運作架構中,主要負責溝通協調及調度管理重任的Kubernetes Master主機,如圖7所示,以及專責運作「容器和應用程式」的Kubernetes Node節點主機中,分別運作哪些重要的運作元件:


▲圖7 Kubernetes叢集運作元件架構示意圖。(圖片來源:Kubernetes Documentation - Building High-Availability Clusters)

Kubernetes Master

Kubernetes Master負責運作以下幾個重要的運作元件:

‧kube-apiserver:在Kubernetes叢集中負責驗證及API的控制平台前端,主要用途為提供Kubernetes API與Kubernetes Nodes節點主機溝通運作,以及進行運作規模「水平擴充」(Scale-Out)等工作任務。

‧etcd:在Kubernetes叢集中,負責處理及存放所有資料的儲存資源。

‧kube-scheduler:負責監控和調度及管理Kubernetes Node節點主機中的Pod等工作任務。

‧kube-controller-manager:負責管理在Kubernetes叢集中各項控制器的協同運作,例如Node Controller、Replication Controller、Endpoints Controller、Service Account & Token Controller等。

‧cloud-controller-manager:這是從K8S 1.06版本開始新增的Alpha運作元件,以便Kubernetes叢集能夠與各家雲端供應商提供的控制器協同運作,例如Node Controller、Route Controller、Service Controller、Volume Controller等。

Kubernetes Node

Kubernetes Node負責運作以下幾個重要元件:

‧kubelet:每台Kubernetes Node節點主機皆會運作此代理程式,並且在Kubernetes叢集中的最小單位Pod中運作容器和應用程式。

‧kube-proxy:當Kubernetes Node節點主機順利建立Pod並運作容器和應用程式後,接著便是透過kube-proxy處理網路環境進而對外提供「服務」(Service)。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!