
基本概念
k8s叢集主要包含三個平面:控制層面,計算層面和資料層面。
控制層面是整個叢集的大腦,負責控制、排程叢集資源,包括kube-apiserver、kube-controller-manager、kube-scheduler三個元件;
計算層面負責運作工作負載,是控制平面排程的對象,包括kubelet、kube-proxy元件;
資料層面用來存儲整個叢集持久化資料,比如我們送出的配置檔案以及叢集狀态資訊等,指etcd叢集。
cluster:kubernetes叢集本身;
namespace:k8s叢集中的命名空間,用于隔離部署在叢集中的應用,友善按團隊和項目進行授權;
service :用于實作服務發現功能,便于部署到叢集内的服務能夠互相通路;
node:組成k8s叢集的實體節點,包括控制節點和計算節點;
pod:k8s的最小排程機關,用于同步排程多個應用容器;
kubectl:通常通過kubectl這個指令行用戶端來控制Kubernetes叢集。
configmap:用來聲明應用的配置檔案,在容器啟動前挂載到應用容器内供應用使用;
secert: 和configmap類似,是加密的,主要應對敏感配置檔案需要加密的需求;
ReplicaSet:用于控制pod的副本數,動态擴容;
DeployMent:用于控制ReplicaSet,微應用提供滾動更新的能力;
ingress:用于對外暴露部署在k8s中的服務;
volume:k8s叢集中的存儲卷,跟docker的存儲卷類似(Docker的存儲卷作用範圍是一個容器,而k8s的存儲卷作用範圍是一個頗多,每個pod中聲明的存儲卷由pod中所有容器共享);
Service Account: 服務賬戶為計算機程序和k8s叢集中運作的pod賬戶提供辨別;
ABAC:基于角色的通路控制,主要解決誰能通路哪些api的問題。
基礎元件
Kubernetes-api-server: 對外暴露Kubernetes API,所有對叢集的操作都是通過這組API完成,包括用戶端下單應用編排指令給Kubernetes叢集;kubelet上報叢集資源使用情況;以及各個元件之間的互動都是通過這套API完成的。
Kubernetes-controller-manager:負責整個Kubernetes叢集的管理工作,保證叢集中各種資源處于期望狀态。當監控到叢集中某個資源狀态與期望狀态不符時,controller-manager會觸發排程操作。
Kubernetes-scheduler:排程器負責Kubernetes叢集的具體排程工作,接收來自controller-manager觸發的排程請求,然後根據請求規格,排程限制,整體資源情況進行排程計算,最後将任務發送到目标節點有kubelet元件執行。
etcd:一個搞笑的kv存儲系統,在k8s中用于存儲持久化資料;
kubelet:是node節點上的核心元件,負責與docker daemont進行互動運作docker容器;配置網絡和資料卷;監控并上傳節點使用情況以供排程使用;
kube-proxy:主要負責service endpoint到pod執行個體的請求轉發及負載均衡的規則管理。
參考部落格:https://github.com/zhukunJ/Kubernetes/blob/master