首页 > 其他分享 >Kubernetes组件简介

Kubernetes组件简介

时间:2023-01-12 18:14:32浏览次数:29  
标签:Kubernetes 简介 APIServer 集群 组件 Pod k8s 节点

Kubernetes组件简介

Kubernetes(简称k8s)致力于提供跨主机集群的自动部署、扩展、高可用以及运行应用程序容器的平台。

k8s是什么

  • 一个基于容器技术的分布式架构
  • 一个一站式的完备的分布式系统开发和支撑平台
  • 提供自动化机制,降低运维难度与成本的架构

在k8s中,Service是分布式集群架构的核心,一个Service对象拥有以下特征:

  • 拥有唯一指定的名称
  • 拥有一个虚拟IP(Cluster IP、Service IP 或 VIP)和端口号
  • 能够提供某种远程服务能力
  • 被映射到提供这种服务能力的一组容器应用上

k8s集群的组成

k8s由控制平面组件(master节点)、存储端和工作节点组成。

工作节点会托管 Pod ,而 Pod 就是作为应用负载的组件。
控制平面管理集群中的工作节点和 Pod。
在生产环境中,控制平面通常跨多台计算机运行, 一个集群通常运行多个节点,提供容错性和高可用性。

k8s集群由master(控制节点)和node(工作节点)组成。

master节点:整个集群的控制中枢,负责整个集群的管理和控制;

node节点:工作节点,应用服务部署至工作节点中;

load balance:一般用软件keepalive、HAproxy或者硬件F5虚拟VIP地址,使其对master节点的高可用,通过load balance能访问master节点的apiserver;云端使用SLB或者ELB提供该功能。

生产环境中通常采用3个master节点形成集群管理架构,node节点主要部署服务。

master节点各组件介绍:

master节点主要由APIServer、Scheduler、Controller-manager组件组成,及Etcdpod网络( flannel、calico等 )

APIServer:

  • 集群的控制中枢,各个模块之间信息交互都需要通过APIServer;
  • API Server是k8s的前端接口,各种客户端工具以及k8s其他组件可以通过它管理集群的各种资源。(接受管理命令,对外接受命令结构)
  • APIServer将集群状态和信息存储导分布式键-值(key-value)存储系统Etcd集群中;(包含删除pod、增加资源等;注意只有APIServer与Etcd通信,其他组件不与Etcd通信)
  • 同时APIServer是集群管理、资源配置、整个集群安全机制的入口,为集群各类资源对象提供增删改查以及watch的REST API接口。(如namespace分配资源、RBAC)

Etcd:

  • 负责保存k8s集群的配置信息和各种资源的状态信息,K8S中所有的服务节点的信息数据、配置数据都是存储在ETCD中,当数据发生变化时,etcd会快速的通知k8s相关组件。保证数据高可用、一致性,会把数据备份部署多份,即使一个服务也不影响使用。只有APIServer 与Etcd 通信,其他组件不与其通信。
  • etcd属于键值数据库,保存集群的信息,一般生产环境中针对集群比较大的情况,建议部署三个以上节点(奇数个),并且与master节点区分开,不要部署在同一台主机上。对磁盘性能要求高,最好采用SSD硬盘;

Scheduler(kube-scheduler):
Scheduler 资源调度,负责决定将pod放在哪个node上运行。另外scheduler在调度时会充分考虑集群的架构,当前各个节点的负载,以及应用对高可用、性能、数据亲和性的需求。

  • 集群pod调度中心,它会根据指定的一系列条件,选择一个或一批最佳的节点,然后部署我们的Pod。
  • 它通过APIServer监听所有Pod状态,一旦发现新的未被调度到任何Node节点的pod(PodSpec.NodeName为空),就会根据一系列策略选择最佳节点进行调度。

Controller Manager:
Controller Manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。Controller Manager 由多种 controller 组成,包括 replication controller、endpoints controller、namespace controller、serviceaccounts controller 等。不同的 controller 管理不同的资源。例如 replication controller 管理 Deployment、StatefulSet、DaemonSet 的生命周期,namespace controller 管理 Namespace 资源。

  • 集群的状态管理器,保证Pod或其他资源达到期望值,
  • 也是需要和APIServer进行通信,在需要的时候创建、更新或删除它所管理的资源。

关于k8s控制组件中有状态服务与无状态服务的说明:

APIServer是无状态服务: 它会把集群状态和资源情况存储在Etcd中,当LB发出连接请求时,只会到1个apiserver中;
Scheduler和Controller-manager组件是有状态服务:

  • Schedule和Controller-manager有"选主"机制,它们会选举出主节点和从节点,当监控到pod或其他资源出现异常状态需要重新修复或调度时,通过主节点进行控制调度。
  • Scheduler和Controller-manager通过APIServer去监听pod状态,或者pod或其他资源副本数,
  • 1.20版本下通过 “leases” 资源保存主节点信息在 “HOLDER” 中;
  • 1.20以上、1.24版本通过 “ep” 中 “annotations” 保留主节点信息;

node节点各组件介绍:

由kubelet、kube-proxy、DNS、Calico网络、Runtime组件组成。

Kubelet:
负责监听节点上Pod的状态,同时负责上报节点和节点上面Pod的状态,负责与Master节点通信,并管理节点上面的Pod。

kubelet可以看作是node的agent,当scheduler确定在某个node上运行pod后,会将pod的具体配置信息发送给该节点的kubelet,kubelet会根据这些信息创建和运行容器,并向master报告运行状态。

Kube-proxy:
负责Pod之间的通信和负载均衡,将指定的流量分发到后端正确的机器上。一般为10249端口。

proxy是配合service实现从pod到service,以及从外部的node port 到 service的访问。每个 Node 都会运行 kube-proxy 服务,它负责将访问 service 的 TCP/UPD 数据流转发到后端的容器。如果有多个副本,kube-proxy 会实现负载均衡。

查看proxy模式命令为:
curl 127.0.0.1:10249/proxyMode

Ipvs:监听Master节点增加和删除service以及endpoint的消息,调用Netlink接口创建相应的IPVS规则。通过IPVS规则,将流量转发至相应的Pod上。Ipvs属于内核级转发。速度比Iptables快*

Iptables:监听Master节点增加和删除service以及endpoint的消息,对于每一个Service,他都会场景一个iptables规则,将service的clusterIP代理到后端对应的Pod。

eBPF网络插件

Calico:
符合CNI标准的网络插件,Calico给每个Pod生成一个唯一的IP地址,并且把每个节点当做一个路由器。Cilium原生只是eBPF

CoreDNS:
用于Kubernetes集群内部Service的解析,可以让Pod把Service名称解析成IP地址,然后通过Service的IP地址进行连接到对应的应用上。 通常CoreDNS的IP为k8s网段的第10个地址。

Runtime:
负责容器的管理。

标签:Kubernetes,简介,APIServer,集群,组件,Pod,k8s,节点
From: https://www.cnblogs.com/liuxc83/p/17047435.html

相关文章

  • 【图文教程】云服务器上,Linux安装VSFTPD组件及遇到的问题
    服务器做迁移,从AXX云迁移到Txx云上,迁移的话,需要把图片服务器也迁移过去。之前使用的是VSFTPD这次也还用这个吧。这里就记录下FTP服务器安装及遇到的问题。1:安装VSFTP组件......
  • 死锁简介
    哲学家就餐的问题。死锁:互相等待对方持有的资源而造成的谁的无法执行的情况叫做死锁。死锁处理:死锁预防死锁避免:判断一下该时间有没有一个进程处于安全序列死锁检测+......
  • 形象化认识Spring Cloud相关组件
    一、整体认识Springframework架构的项目就像一栋高楼大厦,一栋大厦里租用者各色各样的公司和企业为用户提供各种各样的服务。大厦里的每间办公室都是一个容器,对应着一个dock......
  • 主动向elementUI的el-upload组件添加图片,展示图片显示的解决办法(仅list-type="picture
    效果解决办法<el-upload ... :list-type="picList" ...></el-upload>...this.picList.unshift({url:你的图片路径}).........
  • CodeCogs LaTeX 在线 API 使用简介
    有些Markdown渲染器不支持LaTeX,只能换用兼容性更强的图片格式。CodeCogsLaTeXAPI是一个在线将LaTeX公式转换生成图片的工具,提供了URLAPI接口,方便使用。Usageh......
  • Nginx模块综合简介
    Nginx模块介绍对于Nginx来说,可能每个人都并不默认。多多少少都使用过,或者说是听说过。Nginx凭借其高并发、低消耗、热部署等特点,逐渐成为WEB服务器软件的首选。可以算作为Ap......
  • crm-权限组件
    介绍https://www.cnblogs.com/wupeiqi/tag/crm%E9%A1%B9%E7%9B%AE/CRM开发(系列)CRM,客户关系管理系统(CustomerRelationshipManagement)。企业用CRM技术来管理与客户之间......
  • vue动态挂载组件
    平时我们渲染组件都是通过路由的方式。但有时候不太满足需要,需要我们手动去挂载组件。方式如下:通过调用一个方法去实现动态挂载组件:importVuefrom"vue"importj......
  • ABP Framework 7.0 RC 新增功能简介
    ABPFramework在架构上有四大目标:模块化、DDD、多租户和微服务。从7.0更新的功能来看,其侧重点转向微服务场景的实现,比如:Dapr集成、动态权限和功能、外部本地化、分布......
  • JavaScript数据类型简介以及简单的数据类型
    JavaScript前文回顾: ​​认识JavaScript到初体验​​​​JavaScript注释以及输入输出语句​​​​JavaScript变量的使用、语法扩展、命名规范​​一、数据类型简介1.1为......