自愈性、弹性伸缩、动态更新

总体构架

k8s总构架1.png

Kubernetes核心组件

kubernetes-high-level-component-archtecture.jpg

  • etcd保存了整个集群的状态;
  • apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
  • controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
  • scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;

  • kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理;

  • Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
  • kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;

Master节点构架

kubernetes-master-arch.png

Kubernetes Master节点上发生的调度

k8s-workflow.png

  1. Kubecfg 将特定的请求发送给 Kubernetes Client(比如:创建 Pod 的请求)。
  2. Kubernetes Client 将请求发送给 API Server。
  3. API Server 会根据请求的类型选择用何种 REST API 对请求作出处理(比如:创建 Pod 时 Storage 类型是 Pods 时,其对应的就是 REST Storage API)。
  4. REST Storage API 会对请求作相应的处理并将处理的结果存入高可用键值存储系统 Etcd 中。
  5. 在 API Server 响应 Kubecfg 的请求后,Scheduler 会根据 Kubernetes Client 获取的集群中运行 Pod 及 Minion / Node 信息将未分发的 Pod 分发到可用的 Minion / Node 节点上。

Node节点构架

kubernetes-node-arch.png