0. 架构
1. 整体架构
抽象架构图如下:
整体架构(图片参考:https://thenewstack.io/kubernetes-an-overview/)
k8s整体上包含控制面和数据面两个部分,控制面通常由以下几个组件组成:
- etcd:存储整个集群的资源;
- apiserver:负责与etcd交互,并接收所有外部请求;
- controller-manager:所有内建的controller集合;
- scheduler:负责节点的调度;
- metrics-server:提供node和pod的CPU和内存使用情况;
- cluster-autoscaler:集群与云厂商搭配使用时,使用cluster-autoscaler扩容实例;
数据面由以下几个组件组成:
- kubelet:管理节点上的Pods和容器的生命周期,从apiserver获取Pod的指令,并保证容器运行在这些Pods中;
- kube-proxy:是网络代理,它维护节点上的网络规则,允许网络会话内或跨节点的Kubernetes网络通信;
- container runtime:是负责运行容器的软件。k8s 支持多种容器运行时,如Docker、containerd、CRI-O等;
各组件通信架构图:
通信架构(图片来源于网络)