首页 > 技术文章 > k8s功能、各组件介绍以及pod创建流程

xhbiu 2022-02-23 17:28 原文

  一、什么是Kubernetes

   Kubernetes(k跟s中间隔了8个字母又称k8s) 是谷歌开源的容器集群管理系统,是 Google 多年大规模容器管理技术Borg 的开源版本,主要功能包括:

  •   基于容器的应用部署、维护
  •   负载均衡和服务发现
  •   跨机器和跨地区的集群调度
  •   自动伸缩
  •   滚动升级和一键回滚
  •   应用程序健康检查

  二、Kubernetes组件介绍

  •  APIserver :所有服务的统一访问入口,并提供认证、授权、访问控制、API注册和发现等机制;
  •  Controller Manager:主要就是用来维持pod的一个副本数,比如故障检测、自动扩展、滚动更新等;
  •  Scheduler(调度器):负责集群pod的调度,基本原理是通过监听kube-apiserver获取需要进行调度的pod,通过一系列的筛选,为pod分配最佳的node节点
  •  ETCD:键值对数据库,保存了集群的状态;
  •  Kubelet:直接和容器引擎交互,用来维护容器的一个生命周期;同时也负责 Volume(CVI)和网络(CNI)的管理;
  •  Kube-Porxy:部署在每个节点上的网络代理组件。基本原理是通过监听 APIServer 获取 Service、Endpoint 等资源,基于 Iptables、IPVS 等技术实现服务的映射访问、数据包转发等功能。

  三、Pod创建流程

 

 

  •   用户创建Pod,apiserver接收到pod创建请求后,不会直接创建Pod。而是先创建一个包含Pod创建信息的yaml文件,并将文件信息写入到etcd中。 
  •   apiserver准备创建pod,信息转发给scheduler,首先判断:pod.spec.Node == null?若为空,表示该pod是新来的需要创建,首先会找几个最闲的节点然 后从这几个节点找一个最适合创建该pod的节点,调度器将信息给apiserver,apiserver将信息写入到etcd中。
  •   apiserver调用kubelet开始创建容器,创建完成后又将pod状态信息给apiserver,apiserver将pod状态信息写入到etcd中。

     

     

 

 

 

 

推荐阅读