iT邦幫忙

2024 iThome 鐵人賽

DAY 2
1
Kubernetes

開工前挑戰 K8s系列 第 2

Day2 - K8s 元件

  • 分享至 

  • xImage
  •  

前言

本文將以此圖作為主軸,介紹K8s架構中的元件有哪些
https://ithelp.ithome.com.tw/upload/images/20240917/20169452qyzVArgO5t.jpg

K8s 架構

Pod
是K8s中運作的最小單位,一個Pod通常會對應到一個應用程式。
Pod裡的容器共享所有儲存空間與網路,因此當Pod裡的容器要進行通訊時,只需透過localhost的port即可溝通。

之後整理一篇關於Kubernetes網路

工作節點 (Worker Node)
K8s中運作的最小硬體單位,為一臺安裝了K8s的實體或虛擬機器,在其上可運行多個Pod,如下圖所示,過去也被稱作Minions。

https://ithelp.ithome.com.tw/upload/images/20240916/20169452t7JsmJIZ6P.png

Master 節點 (Control Panel)
運作的指揮中心,負責管理、調度叢集資源。
透過其上不同的組件,可以區分該臺機器為工作節點,抑或是Master。
https://ithelp.ithome.com.tw/upload/images/20240917/20169452uoFvRzCyh6.png

叢集 (Cluster)
工作節點與Masters的集合,當其中一臺工作節點出現故障時,可藉由其他工作節點提供服務,進而達到服務不中斷的目標,除此之外,多節點也有助於負載平衡。
Master監視指揮所有的工作節點,負責安排在工作節點上執行的容器。

https://ithelp.ithome.com.tw/upload/images/20240916/20169452JRd8XwWno4.png

K8s元件

事實上,在進行安裝K8s時,系統其實安裝了以下幾個元件:

https://ithelp.ithome.com.tw/upload/images/20240916/20169452pwNe8qt5GQ.png

  • API Server: 作為Kubernetes的前端,使用者、command-line皆需經過此層,才能與整個K8s叢集進行互動。
    1.管理K8s所需的API接口(Endpoint),如透過command-line執行kubectl 指令
    2.Node之間的溝通橋樑,每個Node彼此不能直接溝通,需透過apiserver作為媒介

  • etcd: 為分散式、鍵值存儲,用於存放、管理叢集資料,負責實作Lock機制,確保在masters之間不存在衝突。
    而當Master故障時,可透過etcd中儲存的叢集資訊,還原Kubernetes狀態。

  • kubelet: 節點管理員,管理其上所有Pods狀態按預期運行,並負責與Master的API Server溝通。

  • container runtime: 該節點真正負責容器執行的程式,以Docker容器為例,其對應的Container Runtime就是 Docker Engine,其餘的container runtime有rkt、CRI-O等。

  • controllers: 負責監視叢集狀態並做出反應的Process,也就是說,會在叢集與預期狀態不符時,嘗試更新現有狀態。
    如當容器發生故障時,controllers需要即刻重啟新的容器。

  • scheduler: 負責分配工作,會監視新建立但尚未被指定要跑在哪個節點上的 Pod,並根據每個節點的資源、硬體限制等條件,協調出一個最適合放置的節點,讓該Pod在其上執行。

小結

還有蠻多細節想要補充的


上一篇
Day1 - 為什麼要學 K8s
下一篇
Day3 - 安裝工具
系列文
開工前挑戰 K8s8
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言