【Kubernetes】之资源、组件介绍

一、资源介绍

         以下是常见的资源类型,如果想要了解更多的资源,可以通过kubectl api-resources查看资源列表,从而更深入的学习

1.1 Pod

        Pod是能够创建和部署的最小单元,也是Kubernetes集群中的一个应用实例。它包含一个或多个容器,这些容器共享存储、网络等资源。Pod是部署的最小单元,一个pod相当于一个虚拟的主机,在这个Pod下的一组容器可以使用localhost互相访问。不同的Pod在同一个共享的网络空间下,可以使用pod的ip进行访问

1.2 Endpoint

        Endpoint是一种资源对象,用于表示一个服务的网络终结点。它是一种抽象层,用于将服务的网络地址(IP地址和端口号)与后端容器或节点上的实际服务进行关联,从而实现服务的访问和负载均衡

1.3 Deployment

       Deployment是一个用于描述应用程序如何部署到容器平台(如Kubernetes)上的配置文件。它包含了应用程序的镜像、容器数量、副本数、端口映射等配置信息,以及应用程序部署过程中所需的其他元数据

1.4 Service

        主要目的是提供一个稳定的网络访问入口,用于外部客户端和集群内的其他资源访问运行在Pod中的应用程序。它使用Kubernetes的负载均衡器来路由流量到后端运行的Pod,并确保网络策略和安全设置得到执行

1.5 Headless Service

        Kubernetes中的一种服务类型,它与普通的Service不同,普通的Service会分配一个虚拟的Cluster IP给服务,用于负载均衡请求到后端Pod。而Headless Service不会分配Cluster IP,而是直接返回对应Pod的IP地址,通常用于服务发现、集群内部通信、stateful应用等场景

1.6 Ingress

        为Kubernetes集群中的服务提供了入口,可以提供负载均衡、SSL终止和基于名称的虚拟主机等功能。它通常部署在所有的Node节点上,可以配置提供服务外部访问的URL、负载均衡、终止SSL,并提供基于域名的虚拟主机等能力

        

二、组件介绍

2.1 核心组件

2.1.1 Api Server (统一认证鉴权组件,相当于网关)

        ApiServer是指Kubernetes中的API Server组件,它是整个Kubernetes集群的核心组件之一;他提供了一个RESTful API接口,允许外部应用程序或用户通过HTTP请求与Kubernetes集群进行交互。它负责接收和处理来自客户端的请求,将请求数据转换为Kubernetes对象,并与其他组件通信以执行相应的操作

API Server的作用包括:

  1. 提供了Kubernetes集群的唯一入口点,允许客户端与集群进行通信
  2. 负责验证和授权请求,确保只有经过授权的用户才能执行特定的操作
  3. 负责API版本控制和资源扩展,支持多种资源类型,如Pods、Deployments、Services等
  4. 与etcd存储系统集成,存储和检索集群状态
  5. 与Controller Manager通信,执行资源的自动扩展、自动修复等任务
  6. 提供了API聚合功能,允许第三方实现自己的APIs并集成到Kubernetes API中

2.1.2 ETCD(配置中心、服务发现)

        是一个用于实现分布式一致性的开源键值存储系统,它是Kubernetes集群中的重要组件之一;etcd用于存储Kubernetes集群的状态数据,并确保整个集群的状态保持一致

etcd的作用主要包括以下几点:

  1. 数据存储:etcd用于存储Kubernetes集群的状态数据,包括Pod、Service、Deployment等资源的配置信息。这些数据被保存在一个可靠的、持久化的存储系统中,以确保数据不会丢失
  2. 一致性保证:etcd使用Raft一致性算法来维护集群内各节点之间的数据一致性。通过这个算法,etcd确保任何时候集群内的所有节点都能够看到相同的数据状态,保证了Kubernetes集群的强一致性
  3. 分布式协调:etcd提供了一种可靠的分布式协调机制,允许Kubernetes中的各个组件通过读写操作来维护集群状态。组件之间可以通过读写etcd中的数据来同步状态,实现相互协作
  4. 服务发现:etcd可以用于服务发现,帮助Kubernetes中的容器找到其他容器的IP地址或端口号等信息。通过在etcd中存储服务的网络信息,可以实现自动化的服务发现和负载均衡等功能

2.1.3 Controller Manager(中间件)

        通过监听Kubernetes API Server的事件,对资源进行实时的监控和操作;当某个资源发生状态变化时,Controller Manager会尝试将其调整为期望的状态

Controller Manager通常包括多个Controller,每个Controller针对特定的资源类型,负责执行相应的管理任务。例如,Node Controller负责监控集群中的节点状态,并根据需要重新调度Pod;Deployment Controller负责监控Deployment资源的状态,并根据需要自动扩缩容等

Controller Manager的作用还包括:

  1. 自动修复:当某个节点意外宕机时,Controller Manager会发现并执行自动化修复流程,重新调度以确保集群始终处于预期的工作状态
  2. 弹性伸缩:Controller Manager可以根据预设的策略自动扩缩容应用,以满足业务需求
  3. 滚动升级:通过Controller Manager可以实现Pod的滚动升级,逐步替换旧的Pod,以降低升级对业务的影响
  4. 服务发现和负载均衡:Controller Manager可以与其他服务发现工具集成,实现自动化的服务发现和负载均衡等功能

2.2 节点组件

2.2.1 Kubelet(节点控制器)

        运行在每个节点上,负责处理本节点上Pod的生命周期管理。

Kubelet的主要职责包括:

  1. 接收并处理来自Kubernetes API Server的指令,管理Pod和其中的容器
  2. 定期向API Server汇报节点资源使用情况,并通过cAdvisor监控容器和节点资源
  3. 定期检查容器的状态,确保它们正常运行
  4. 执行容器的垃圾回收,包括每分钟对容器执行一次垃圾回收,每五分钟对镜像执行一次垃圾回收
  5. 负责与容器运行时交互,创建、启动、停止容器等任务
  6. 实现Node级别的工作负载调度,例如调度批量作业或周期性任务
  7. 实现节点级别的自修复功能,例如自动修复损坏的容器、自动重启失败的容器

2.2.2 kube-proxy(节点代理)

        通过在每个节点上创建一个代理,来实现网络连接的转发和负载均衡;它使用iptables或ipvs来实现这些功能,根据集群的具体配置来选择合适的方式。

kube-proxy的作用包括:

  1. 服务发现:kube-proxy会定期从Kubernetes API Server中获取服务的最新信息,并根据这些信息创建路由规则。这样,当客户端请求某个服务时,kube-proxy可以根据这些规则将请求转发到正确的后端Pod
  2. 负载均衡:kube-proxy会根据预设的策略实现客户端请求的负载均衡,将请求分发到多个后端Pod上。这有助于提高服务的可用性和可扩展性
  3. 网络代理:kube-proxy充当网络代理的角色,对进入和离开节点的流量进行转发。通过这种方式,它能够实现服务之间的通信和访问控制
  4. 故障转移:当某个后端Pod出现故障时,kube-proxy能够感知到这一点,并将流量切换到其他可用的后端Pod上。这有助于提高服务的可用性和可靠性

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值