Pod/Pod控制器
Name / Namespace
Label / Label選擇器
Service / Ingress
Pod: 能夠被運作的最小邏輯單元. 邊車(SideCar)模式, 類似那種帶挎抖的機車.
1個 Pod 可以運作多個容器, 容器之間共享 UTS + NET + IPC 名稱空間.
Pod 控制器: 管理 副本數,生命周期,健康狀态等, K8S 提供多種控制器:
Deployment, DaemonSet, ReplicaSet, StatefulSet, Job, Cronjob
每一種功能都是一種 "資源" , 隔離資源 -> Namespace, 在 metadata 中定義了各種資源的 name.
資源與标簽之間是多對多的關系. Label選擇器: 可以通過标簽來過濾資源.
标簽的組成是 key = value
在 K8S 中, 每個 Pod 都會配置設定一個獨立的 IP 位址. 但這個IP位址會随着Pod的銷毀而消失.
一個service 可以看做一組提供相同服務的 Pod 的對外通路接口, service 作用于哪些 Pod 是通過标簽選擇器來定義的。
Ingress 是 K8S 叢集裡的工作在 OSI 網絡參考模型下, 第7層的應用(最上層應用層) 對外暴露的接口.
abc.od.com/sh, 通過 Ingress 決定這個位址找哪個 service, service -> Pod 決定找哪個 Pod.
Service 暴露的是 ip + port 的形式, 而 Ingress 則可以排程不同業務域,不同 URL 通路路徑的業務流量
配置存儲中心 -> etcd服務, 存儲叢集中繼資料資訊, key-value 形式
主要(master)節點
kube-apiservice: restful API 接口. 負責資料互動. 通信樞紐, 資源配額入口.
kube-controller-manager: 管理控制器的,有一系列控制器, Node Controller, Deployment Controller, Service Controller......
kube-scheduler: 接收排程 pod 到适合的運算節點上. 預先政策(predict), 預選政策(priorities)
運算(node)節點
kube-kubelet 服務: 定時擷取 pod 的期望狀态, 真正幹活的, 定時彙報目前節點的狀态給 apiserver
kube-proxy服務:每個節點運作網絡代理,service資源的載體, 管理 clusterip -> podip, 建立pod網絡和叢集網絡的關系.
流量排程模式: IPVS 推薦.
CLI用戶端
kubectl : 指令行工具
CNI 網絡插件 -> flanel / calico
服務發現插件 -> coredns
服務暴露插件 -> traefik
GUI管理插件 -> dashboard
service 網絡是虛拟網絡. 192.168.0.0/16
Pod 網絡: 實際網絡. 172.7.21.0/24 (Node 主機的 IP 位址為 10.4.7.21)
Cluster 節點網絡. 10.4.7.0/24
實際上, 一個server 上可以同時部署 master 和 node 節點, 當然, 如果資源足夠充分, 可以拆分 master 和 node 到不同機器上.
左下角的2個大框部分才是 K8S, 上邊,右邊的實際上不屬于 K8S 範疇.