--- title: Kubernetes Architecture tags: Kubernetes description: Kubernetes architecture detail --- # Kubernetes Architecture kubernetes 架構為 cluster -> node -> pod,pod 為 kubernetes 最小單位,一個 pod 裡面可以同時存在很多個 container。  --- ## Kebernetes Node kubernetes 的 node 分為兩種,分別為 master node 和 worker node,master node 負責管理 worker node 工作進程、container 的狀態。 --- ## Master Node Architecture Master Node 主要負責管理所有其他的 Node,主要由四個部分組成,API server、Scheduler、Controller Manager、Etcd  ### API server * 管理整個 Kubernetes 所需 API 的接口(Endpoint),例如從 Command Line 下 kubectl 指令就會把指令送到這裏 * 負責 Node 之間的溝通橋樑,每個 Node 彼此不能直接溝通,必須要透過 apiserver 轉介 * 負責 Kubernetes 中的請求的身份認證與授權 ### Scheduler * scheduler 在要建立一個新的 pod 時,會根據每個 Node 上面資源規定、硬體限制等條件去協調出一個最適合 放置的 Node 讓該 Pod 跑 Scheduler 會監控所有 Node 上的 ### controller-manager * 負責管理並運行 Kubernetes controller 的組件,簡單來說 controller 就是 Kubernetes 裡一個個負責監視 Cluster 狀態的 Process,例如:Node Controller、Replication Controller * 這些 Process 會在 Cluster 與預期狀態(desire state)不符時嘗試更新現有狀態(current state)。例如:現在要多開一台機器以應付突然增加的流量,那我的預期狀態就會更新成 N+1,現有狀態為 N,這時相對應的 controller 就會想辦法多開一台機器 * controller-manager 的監視與嘗試更新也都需要透過訪問 kube-apiserver 達成 ### Etcd * 用來存放 Kubernetes Cluster 所有的資料作為,當 Master 因為某些原因而故障時,我們可以透過 etcd 幫我們還原 Kubernetes 的狀態 --- ## Worker Node Architecture Worker Node 負責運行工作的Node,主要由三個部分組成,kubelet、kube-proxy、Container Runtime ### kubelet kubernetes內部指令工具,用來管理kubernetes內部狀態,包含node pod 創建刪除等等。 ### kube-proxy 負責更新 Node 的 iptables,讓 Kubernetes 中不在該 Node 的其他物件可以得知該 Node 上所有 Pods 的最新狀態 ### Container Runtime 以 Docker 為容器負責容器執行程式,Container Runtime就是 Docker Engine --- ## Thank you! :dash: You can find me on - GitHub: https://github.com/shaung08 - Email: a2369875@gmail.com
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up