master 節點
master 是 kubernetes cluster 的大腦,執行著如下 daemon 服務:kube-apiserver、kube-scheduler、kube-controller-manager、etcd 和 pod 網路(例如 flannel)。
api server(kube-apiserver)
api server 提供 http/https restful api,即 kubernetes api。api server 是 kubernetes cluster 的前端介面,各種客戶端工具(cli 或 ui)以及 kubernetes 其他元件可以通過它管理 cluster 的各種資源。
scheduler(kube-scheduler)
scheduler 負責決定將 pod 放在哪個 node 上執行。scheduler 在排程時會充分考慮 cluster 的拓撲結構,當前各個節點的負載,以及應用對高可用、效能、資料親和性的需求。
controller manager(kube-controller-manager)
controller manager 負責管理 cluster 各種資源,保證資源處於預期的狀態。controller manager 由多種 controller 組成,包括 replication controller、endpoints controller、namespace controller、serviceaccounts controller 等。
不同的 controller 管理不同的資源。例如 replication controller 管理 deployment、statefulset、daemonset 的生命週期,namespace controller 管理 namespace 資源。
etcd
etcd 負責儲存 kubernetes cluster 的配置資訊和各種資源的狀態資訊。當資料發生變化時,etcd 會快速地通知 kubernetes 相關元件。
pod 網路
pod 要能夠相互通訊,kubernetes cluster 必須部署 pod 網路,flannel 是其中乙個可選方案。
node節點
node 是 pod 執行的地方,kubernetes 支援 docker、rkt 等容器 runtime。 node上執行的 kubernetes 元件有 kubelet、kube-proxy 和 pod 網路(例如 flannel)。
kubelet 是 node 的 agent,當 scheduler 確定在某個 node 上執行 pod 後,會將 pod 的具體配置資訊(image、volume 等)傳送給該節點的 kubelet,kubelet 根據這些資訊建立和執行容器,並向 master 報告執行狀態。
kube-proxy
service 在邏輯上代表了後端的多個 pod,外界通過 service 訪問 pod。service 接收到的請求是如何**到 pod 的呢?這就是 kube-proxy 要完成的工作。
每個 node 都會執行 kube-proxy 服務,它負責將訪問 service 的 tcp/upd 資料流**到後端的容器。如果有多個副本,kube-proxy 會實現負載均衡。
pod 網路
pod 要能夠相互通訊,kubernetes cluster 必須部署 pod 網路,flannel 是其中乙個可選方案。
完整的架構圖
你可能會問:為什麼 k8s-master 上也有 kubelet 和 kube-proxy 呢?
這是因為 master 上也可以執行應用,即 master 同時也是乙個 node。
幾乎所有的 kubernetes 元件本身也執行在 pod 裡,執行如下命令:
kubernetes 的系統元件都被放到 kube-system namespace 中。這裡有乙個 kube-dns 元件,它為 cluster 提供 dns 服務,我們後面會討論。kube-dns是在執行 kubeadm init 時(第 ⑤ 步)作為附加元件安裝的。
kubelet 是唯一沒有以容器形式執行的 kubernetes 元件,它在 ubuntu 中通過 systemd 執行。
k8s架構描述
架構 kubectl k8s是命令列端,用來傳送客戶端的操作指令 api server 是k8s集群的前端介面,各種客戶端工具以及k8s的其他元件可以通過他管理k8s集群的各種資源。他提供了http https restful api,即k8s api scheduler 排程 負責決定將pod放在...
K8s生產架構
kubernetes的生產架構,如圖所示 k8s平台 日誌管理 使用elasticsearch filebeat 和 kibana技術棧 監控告警管理 使用cadvisor prometheus和grafana技術棧 微服務架構 使用service mesh服務網格中的istio方案 devops ...
k8s架構和元件
架構 主從分布式架構,master node 服務分組,小集群,多集群 服務分組,大集群,單集群 元件 kubernetes master 集群控制節點,負責整個集群的管理和控制,基本上kubernetes所有的控制命令都是發給它,它來負責具體的執行過程,我們後面所有執行的命令基本都是在master...