暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

K8s到底是什么

IT那活儿 2024-05-06
165
点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!    

系统架构


核心组件

Kubernetes(通常简称为K8s)是一个开源的容器编排和管理平台,具有分布式架构,包括以下核心组件:

2.1 Master节点

  • API Server
    用于提供API的主要接口,管理和处理集群操作。
  • etcd
    分布式键值存储,用于保存集群的配置信息和状态。
  • Scheduler
    负责监控新创建的Pod,并选择一个节点来运行它们。
  • Controller Manager
    负责管理控制器,确保系统中各种资源的期望状态。

2.2 Node节点

  • Kubelet
    在每个节点上运行,负责维护节点的运行状态,并与Master节点通信。
  • Kube Proxy
    用于网络代理,维护节点上的网络规则,并实现服务的负载均衡。
  • Container Runtime
    Kubernetes支持多种容器运行时,如Docker、containerd等,用于运行容器。

2.3 Pod

是Kubernetes中最小的可调度单元,包含一个或多个容器,它们在同一个网络命名空间中运行,并共享相同的存储卷。
  • Controller
    包括ReplicaSet、Deployment、StatefulSet等,用于管理Pod的副本和状态,确保系统的可扩展性和高可用性。

2.4 Service

用于将一组Pod暴露给集群内或集群外的其他服务,提供负载均衡和发现功能。

2.5 Namespace

用于逻辑隔离和分组资源,以便多个团队或项目可以在同一集群上共享Kubernetes资源。

这些组件协同工作,使Kubernetes能够管理和编排容器化应用程序,提供可伸缩性、高可用性和自动化的部署和运维。它的分布式架构和强大的功能使其成为容器编排的首选解决方案之一。


Pod的调度过程

Pod的调度是Kubernetes中的一个关键过程,它确定了将Pod调度到哪个节点上以便执行。以下是Pod调度的基本过程:

3.1 创建Pod Spec

首先,用户或工作负载控制器创建一个Pod规范(Pod Spec),规定了Pod的容器、资源需求、约束条件和其他配置信息。

3.2 提交Pod Spec

Pod规范被提交到Kubernetes集群的API Server,成为等待被调度的Pod。

3.3 Scheduler评估

Kubernetes的Scheduler(调度器)定期扫描等待调度的Pod,评估哪些Pod应该在哪个节点上运行。

3.4 节点选择

Scheduler会考虑多个因素来选择节点,包括Pod的资源需求(CPU、内存)、Pod的约束条件(污点和容忍),以及节点的可用性。

3.5 调度决策

基于节点的资源可用性和其他因素,Scheduler做出调度决策,确定将Pod调度到哪个节点上。

3.6 节点分配

调度器将Pod的信息更新为调度到的节点,并通知该节点的Kubelet开始Pod的创建过程。

3.7 Kubelet执行

节点上的Kubelet接收到Pod的信息后,根据Pod Spec启动容器,确保Pod在节点上运行。

3.8 监控和反馈

调度器和Kubelet之间有定期的通信,以确保Pod的健康状态,并在需要时重新调度或处理异常情况。

3.9 持续监控

在Pod运行期间,Kubernetes会持续监控Pod的状态和节点的可用性,以处理可能的故障或节点下线情况。
这个过程保证了Pod被合适地调度到可用的节点上,满足资源需求,并考虑到节点的可用性和约束条件。Kubernetes的调度器是高度可配置的,可以根据集群的需求和策略来自定义调度过程。这种灵活性允许Kubernetes适应不同类型的工作负载和集群配置。

K8s本质上是个啥?

K8s本质上是一种容器编排和管理平台。
它为容器化应用程序提供了容器的集中生命周期管理和自动化部署的功能。主要功能包括:
  • 容器编排
    Kubernetes可以自动管理和编排大量容器,确保它们在集群中的正确位置运行。
  • 自动化部署
    K8s允许用户定义容器化应用程序的配置,包括容器镜像、资源需求、环境变量等,并负责将这些应用程序部署到适当的节点上。
  • 容器生命周期管理
    Kubernetes负责监控容器的状态,确保它们持续运行,可以进行自动恢复和扩展。
  • 资源调度
    K8s可以智能地将容器调度到集群中的节点上,根据资源需求和可用性来分配资源。
  • 自动伸缩
    Kubernetes支持自动伸缩,根据负载自动扩展或缩小应用程序的副本数量。
  • 服务发现和负载均衡
    K8s提供服务发现机制,允许容器相互发现并通过负载均衡器进行通信。
  • 自我修复
    Kubernetes可以自动检测和处理节点和容器的故障,确保应用程序的高可用性。
总之,Kubernetes是一个强大的容器编排和管理平台,通过提供这些功能,使容器化应用程序的部署、管理和扩展更加容易和高效。这有助于简化了云原生应用的开发和运维,提供了更高的可靠性和弹性。

END


本文作者:臧二飞(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论