ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

k8s 各组件功能

2022-07-18 01:06:10  阅读:183  来源: 互联网

标签:node 功能 kube IPVS API 组件 Pod k8s 节点


kube-apiserver

Kubernetes API server 提供了k8s各类资源对象的增删改查及watch等HTTP Rest接口,这些对象包括pods、services、replication controllers等,API Server 为REST操作提供服务,并为集群的共享状态提供前端,所有其他组件都通过该前端进行交互。

RESTful API:是RSET风格的网络接口,REST描述的是在网络中client和server的一种交互形式。

REST:是一种软件架构风格,或者说是一种规范,其强调HTTP应当以资源为中心,并且规范了URI的风格,规范了HTTP请求动作(GET/PUT/POST/DELETE/HEAD/OPTIONS)的使用,具有对应的语义。

kube-scheduler

kubernetes调度器是一个控制面进程,负责将Pods指派到节点上。通过调度算法为待调度Pod列表的每个Pod从可用Node列表中选择一个最适合的Node,并将信息写入etcd中。node节点上的kubelet通过API Server监听到kubernetes Scheduler 产生的Pod绑定信息,然后获取对应的Pod清单,下载Image,并启动容器。

策略:

LeastRequestedPriority:优先从备选节点列表中选择资源消耗最小的节点(CPU+内存)

CalculateNodeLabelPriority:优先选择含有指定Label的节点

BalanceResourceAllocation:优先从备选节点列表中选择各项资源使用率最均衡的节点

kube-controller-manager

kube-controller-manager:Controller Manager还包括一些子控制器(副本控制器、节点控制器、命名空间控制器和服务账号控制器等),控制器作为集群内部的管理控制中心,负责集群内部的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群中的pod副本始终处于预期的工作状态。

controller-manager控制器每间隔5秒钟检查一次节点的状态。

如果controller-manager控制器没有收到自节点的心跳,则将该node节点标记为不可达。

controller-manager将在标记为无法访问之前等待40秒。

如果该node节点被标记为无法访问后5分钟还没有恢复,controller-manager会删除当前node节点的所有pod并在其它可用节点重建这些pod。

pod高可用机制:

node monitor period:节点监视周期,5s

node monitor grace period:节点监视器宽限期,40s

pod eviction timeout:pod驱逐超时时间,5m

kube-proxy

kube-proxy:kubernetes网络代理运行在node上它反映了node上Kubernetes API中定义的服务,并可以通过一组后端进行简单的TCP、UDP和SCTP流转发或者在一组后端进行循环TCP、UDP和SCTP转发,用户必须使用apiserver API创建一个服务来配置代理,其实就是kube-proxy通过在主机上维护网络规则并执行连接转发来实现kubernettes服务访问。

kube-proxy 运行在每个节点上,监听API Server 中服务对象的变化,再通过管理iptables或者IPVS规则来实现网络的转发。

kube-proxy不同的版本可以支持三种工作模式:

UserSpace:k8s v1.1之前使用,k8s 1.2及以后就已经淘汰

iptables:k8s 1.1版本开始支持,1.2开始为默认

IPVS:k8s 1.9引入到1.11为正式版本,需要安装ipvsadm,ipset工具包和加载ip_vs内核模块。IPVS相对iptables效率会更高一些,使用IPVS模式需要在运行Kube-Proxy的节点安装ipvsadm、ipset工具包和加载ip_vs内核模块,当Kube_Proxy以IPVS代理模块启动时,Kube-Proxy将验证节点上是否安装了IPVS模块,如果未安装,则Kube-Proxy将回退到iptables代理模式。

使用IPVS模式,Kube-Proxy会监视Kubernetes Service对象和Endpoints,调用宿主机内核Netlink接口以相应地创建IPVS规则并定期与Kubernetes Service对象Endpoints 对象同步IPVS规则,以确保IPVS状态与期望一致,访问服务时,流量将被重定向到其中一个后端Pod,IPVS使用哈希表作为底层数据结构并在内核空间中工作,这意味着IPVS可以更快地重定向流量,并且在同步代理规则时具有更好的性能,此外,IPVS为负载均衡算法提供了更多选项,例如:rr (轮询调度)、lc(最小连接数)、dh(目标哈希)、sh(源哈希)、sed(最短期望延迟)、nq(不排队调度)等。

Kubelet

kubelet是运行在每个worker节点的代理组件,它会监视已分配给节点的pod,具体功能如下:

向master汇报node节点的状态信息

接受指令并在Pod中创建docker容器

准备Pod所需的数据卷

返回pod的运行状态

在node节点执行容器健康检查

etcd

etcd是CoreOS公司开发目前是Kubernetes默认使用key-value数据存储系统,内部采用raft协议作为一致性算法,etcd基于Go语言实现,用于保存kubernetes的所有集群数据,etcd支持分布式集群功能,生产环境使用时需要etcd数据提供定期备份机制。etcd有多个不同的API访问版本,v1版本已经废弃,etcd v2和v3 本质上是共同一套raft协议代码的两个独立的应用,接口不一样,存储不一样,数据互相隔离,也就是说如果从Etcd v2升级到Etcd v3,原来v2的数据还是只能用v2的接口访问,v3的接口的数据也只能访问通过v3的接口访问。

etcd具有下面这些属性:

完全复制:集群中的每个节点都可以使用完整的存档

高可用性:Etcd可用于避免硬件的单点故障或网络问题

一致性:每次读取都会返回跨多主机的最新写入

简单:包括一个定义良好、面向用户的API(gRPC)

安全:实现了带有可选的客户端证书身份验证的自动化TLS

快速:每秒10000次写入的基准速度

可靠:使用Raft算法实现了存储的合理分布Etcd的工作原理

DNS

DNS负责为整个集群提供DNS服务,从而实现服务之间的访问。

coredns

kube-dns:1.18

sky-dns

Dashborad

Dashbord是基于网页的Kubernetes用户界面,可以使用Dashboard获取运行在集群中的应用的概念信息,也可以创建或者修改Kubernetes资源(如Deployment,Job,DaemonSet等等),也可以对Deployment实现弹性伸缩、发起滚动升级、重启Pod或者使用向导创建新的应用。

标签:node,功能,kube,IPVS,API,组件,Pod,k8s,节点
来源: https://www.cnblogs.com/cyh00001/p/16488539.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有