【4月更文挑战-01】——K8s起源与其组件

138 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

默认标题_公众号封面首图_2022-04-02+22_25_41.png

第一节   K8s是什么?

K8skubernetes的简称,是Google于2014年创建管理的开源容器集群管理系统,一个大规模容器应用编排系统。如果把Docker比作为出租车,那么K8s就是就是出租车的调度系统。Kubernetes的名字来自希腊语,意思是“舵手”或 “领航员”。K8s是将8个字母“ubernete”替换为“8”的缩写,固简称为“K8s”

第二节   K8s实现了什么?

K8s是一个编排容器的工具,也是一个管理应用的全生命周期的工具,(在K8s进行管理应用的时候,基本步骤是:创建集群,部署应用,发布应用,扩展应用,更新应用。)从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器宕机了,K8s可以自动将这个服务器上的服务调度到另外一个主机上进行运行。

具体来说,K8s实现的内容主要包括以下几点:

  • 服务发现与调度;
  • 负载均衡;
  • 服务自愈;
  • 服务弹性扩容;
  • 横向扩容;
  • 存储卷挂载;

总而言之,K8s的目标是让部署容器化应用更加简单高效。

第三节   K8s的特点有哪些?

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud

  • 可扩展: 模块化, 插件化, 可挂载, 可组合

  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

第四节   K8s可以帮助哪些人?

  • 运维工程师;

  • 运维开发工程师;

  • 开发工程师;

  • 虚拟化工程师等。

第五节   K8s的组件有哪些?

Kubernetes采用主从分布式架构,包括Master(主节点)、Worker(从节点或工作节点),以及客户端命令行工具kubectl和其它附加项。

image.png

K8s中的组件如上图所示,图为K8s的集群架构与其在基本工作流程中所涉及的组件,

kubectl开始,我们来看一下K8s的基本工作流程,以及各组件之间的联系作用:

  • kubectl 客户端首先将CLI命令转化为RESTfulAPI调用,然后发送部署请求到kube-apiserver

  • kube-apiserver 在验证这些 API 调用后,通过一系列认证授权,把请求存储到etcd,并通知Controller-managerController-manager会通过API server读取etcd,然后按照所预设的模板去创建Pod,并将Pod数据写入etcd

  • Controller-manager 会通过API Server去找kube-scheduler为新创建的Pod选择最适合的Node 节点。kube-scheduler会通过预算策略在所有Node节点中挑选最优的。

  • 一旦 kube-scheduler 返回一个适合调度的目标节点后,kube-apiserver 就把任务的节点信息存入etcd,并创建任务;

  • 此时目标节点中的 kubelet正监听apiserver,当监听到有新任务需要调度到本节点后,kubelet通过本地runtime创建任务容器,执行作业;

  • 接着kubelet将任务状态等信息返回给apiserver存储到etcd

  • 这样任务就已经在运行了,此时control-manager发挥作用保证任务稳定进行。

未来展望

在之后的文章学习中,我们将逐一介绍K8s集群架构图中所涉及的组件。

  • 控制平面组件(kube-apiserveretcd、kube-schedulerkube-controller-managercloud-controller-manager);

  • Node中组件(kubeletkube-proxy

  • 容器运行时(Container Runtime

本月将陆续推出相关系列文章,

篇篇精彩,尽请关注。