k8s的组件有哪些,作用别离是什么

k8s次要由master节点和node节点形成。master节点负责管理集群,node节点是容器利用真正运行的中央。
master节点蕴含的组件有:kube-api-server、kube-controller-manager、kube-scheduler、etcd。
node节点蕴含的组件有:kubelet、kube-proxy、container-runtime。

kube-api-server:以下简称api-server,api-server是k8s最重要的外围组件之一,它是k8s集群治理的对立拜访入口,提供了RESTful API接口, 实现了认证、受权和准入管制等平安性能;api-server还是其余组件之间的数据交互和通信的枢纽,其余组件彼此之间并不会间接通信,其余组件对资源对象的增、删、改、查和监听操作都是交由api-server解决后,api-server再提交给etcd数据库做长久化存储,只有api-server能力间接操作etcd数据库,其余组件都不能间接操作etcd数据库,其余组件都是通过api-server间接的读取,写入数据到etcd。

kube-controller-manager:以下简称controller-manager,controller-manager是k8s中各种控制器的的管理者,是k8s集群外部的治理控制中心,也是k8s自动化性能的外围;controller-manager外部蕴含replication controller、node controller、deployment controller、endpoint controller等各种资源对象的控制器,每种控制器都负责一种特定资源的管制流程,而controller-manager正是这些controller的外围管理者。

kube-scheduler:以下简称scheduler,scheduler负责集群资源调度,其作用是将待调度的pod通过一系列简单的调度算法计算出最合适的node节点,而后将pod绑定到指标节点上。shceduler会依据pod的信息,全副节点信息列表,过滤掉不符合要求的节点,过滤出一批候选节点,而后给候选节点打分,选分最高的就是最佳节点,scheduler就会把指标pod安置到该节点。

Etcd:etcd是一个分布式的键值对存储数据库,次要是用于保留k8s集群状态数据,比方,pod,service等资源对象的信息;etcd能够是单个也能够有多个,多个就是etcd数据库集群,etcd通常部署奇数个实例,在大规模集群中,etcd有5个或7个节点就足够了;另外阐明一点,etcd实质上能够不与master节点部署在一起,只有master节点能通过网络连接etcd数据库即可。

kubelet:每个node节点上都有一个kubelet服务过程,kubelet作为连贯master和各node之间的桥梁,负责保护pod和容器的生命周期,当监听到master下发到本节点的工作时,比方创立、更新、终止pod等工作,kubelet 即通过管制docker来创立、更新、销毁容器;
每个kubelet过程都会在api-server上注册本节点本身的信息,用于定期向master汇报本节点资源的应用状况。

kube-proxy:kube-proxy运行在node节点上,在Node节点上实现Pod网络代理,保护网络规定和四层负载平衡工作,kube-proxy会监听api-server中从而获取service和endpoint的变动状况,创立并保护路由规定以提供服务IP和负载平衡性能。简略了解此过程是Service的通明代理兼负载均衡器,其外围性能是将到某个Service的拜访申请转发到后端的多个Pod实例上。

container-runtime:容器运行时环境,即运行容器所须要的一系列程序,目前k8s反对的容器运行时有很多,如docker、rkt或其余,比拟受欢迎的是docker,然而新版的k8s曾经发表弃用docker。

kubelet的性能、作用是什么?(重点,常常会问)

答:kubelet部署在每个node节点上的,它次要有2个性能:
1、节点治理。kubelet启动时会向api-server进行注册,而后会定时的向api-server汇报本节点信息状态,资源应用状态等,这样master就可能晓得node节点的资源残余,节点是否失联等等相干的信息了。master晓得了整个集群所有节点的资源状况,这对于 pod 的调度和失常运行至关重要。
2、pod治理。kubelet负责保护node节点上pod的生命周期,当kubelet监听到master的下发到本人节点的工作时,比方要创立、更新、删除一个pod,kubelet 就会通过CRI(容器运行时接口)插件来调用不同的容器运行时来创立、更新、删除容器;常见的容器运行时有docker、containerd、rkt等等这些容器运行时,咱们最相熟的就是docker了,但在新版本的k8s曾经弃用docker了,k8s1.24版本中曾经应用containerd作为容器运行时了。
3、容器健康检查。pod中能够定义启动探针、存活探针、就绪探针等3种,咱们最罕用的就是存活探针、就绪探针,kubelet 会定期调用容器中的探针来检测容器是否存活,是否就绪,如果是存活探针,则会依据探测后果对查看失败的容器进行相应的重启策略;
4、Metrics Server资源监控。在node节点上部署Metrics Server用于监控node节点、pod的CPU、内存、文件系统、网络应用等资源应用状况,而kubelet则通过Metrics Server获取所在节点及容器的上的数据。

参考:这https://blog.csdn.net/MssGuo/...

版权申明:本文为CSDN博主「MssGuo」的原创文章,遵循CC 4.0 BY-SA版权协定,转载请附上原文出处链接及本申明。
原文链接:https://blog.csdn.net/MssGuo/...

pod创立过程

  • 用户通过kubectl或其它API客户端提交pod spec给API Server。
  • API Server尝试着将pod对象的相干信息存入etcd中,带写入操作执行实现后,API Server会立刻返回确认信息至客户端。
  • Scheduler通过其watcher检测到API Server创立了新的pod对象,于是为该pod对象筛选一个工作节点并将后果信息更新至API Server。
  • 调度后果信息有API Server更新至etcd存储系统,并同步给Scheduler。
  • 相应节点的kubelet检测到由调度器绑定于本节点的pod后会读取其配置信息,并由本地容器运行时创立相应的容器启动pod对象后将后果回存至API Server。
  • API Server将kubelet发来的pod状态信息存入etcd零碎,并将确认信息发送至相应的kubelet。

容器设计模式

单容器模式是指将应用程序封装为利用容器运行。该模式须要遵循简略和繁多准则,每个容器仅承载一种工作负载。

单节点多容器模式

单节点多容器模式是指扩容器的设计模式,其目标是在单个主机之上同时运行多个共生关系的容器,因此容器管理系统须要将它们作为一个原子单位进行同一调度。kubernetes编排零碎设计的pod概念就是这个设计模式的实现之一。

若多个容器间存在强耦合关系,它们具备完全相同的生命周期,或者必须运行于同一节点之上时,通常应该将它们置于同一个pod中,较常见的状况是为主容器并行运行一个助理治理过程。单节点多容器模式的常见实现有Sidercar(边车)、适配器(Adapter)、大使(Ambassador)、初始化(Initializer)容器模式等。

Sidecar模式
Sidecar模式是多容器零碎设计的最罕用模式,它由一个主应用程序以及一个辅助容器(Sidecar)组成,该辅助容器用于为主容器提供辅助服务以加强主容器性能,是主应用程序必不可少的一部分,但却不肯定非得存在于应用程序自身外部。

最常见的sidecar容器时日志记录服务、数据同步服务、配置服务和代理服务等。对于主容器利用的每个实例,Sidecar的实例都被部署并托管在它旁边,主容器与sidecar容器具备雷同的生命周期,毕竟主容器运行时,运行sidecar容器并无实际意义,只管齐全能够将sidecar容器集成到主容器外部,然而应用不同的容器来运行解决不同性能还是存在较多劣势;

  • 辅助利用的运行时环境和编译语言与主应用程序无关,因此无需为每种为每种编程语言别离开发一个辅助工具;
  • 二者可基于IPC、lo接口或共享存储进行数据交换,不存在显著的通信提早;
  • 容器镜像时公布的根本单位,将主利用与辅助利用划分为两个容器使得可由不同团队开发和保护,从而变得不便及高效,独自测试及集成测试也变得可能;
  • 容器限度了故障边界,使得零碎整体能够优雅降级,例如sidecar容器异样时主容器仍可提供服务;
  • 容器时部署的根本单元,每个功能模块均可独立部署及回滚。

https://blog.51cto.com/wanggu...

参考文档