K8S 架构以及工作原理

kubernetes 整体架构

Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统,所以整体的架构和borg很相似,整个架构有 apiserver,controller-manager,scheduler,etcd,kubelet,kube-proxy,network-plugin 等相关组件完成,整体架构如下:

通常 一个 K8S集群包括两个部分:

一个 Master 节点 (主节点),主要负责管理和控制

1.Etcd:存储状态的数据库,保存了整个集群的状态;

2.Apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;

3.controller-manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;

4.Scheduler:负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;

一群 Node 节点(计算节点),

1.kubelet:主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等;

2.kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡;

K8S 工作原理

 

  1. 运维人员向 apiserver 发出指令,可以通过API Server的REST API,也可用Kubectl命令行工具

  2. apiserver 响应命令,通过一系列认证授权,把 pod 数据存储到 etcd,创建 deployment 资源并初始化 (期望状态)

  3. controller-manager 通过 list-watch 机制,监测发现新的 deployment,将该资源加入到内部工作队列,发现该资源没有关联的 pod 和 replicaset,启用 deployment controller 创建 replicaset 资源,再启用 replicaset controller 创建 pod

  4. 创建完成后,将 deployment,replicaset,pod 资源更新存储到 etcd

  5. scheduler 通过 list-watch 机制,监测发现新的 pod,经过主机过滤、主机打分规则,将 pod 绑定 (binding) 到合适的主机

  6. 将绑定结果存储到 etcd

  7. kubelet 每隔 20s (可以自定义) 向 apiserver 通过 NodeName 获取自身 Node 上所要运行的 pod 清单,通过与自己的内部缓存进行比较,新增加 pod

  8. kubelet 调用 Docker API 创建并启动 pod

  9.  kube-proxy 为新创建的 pod 注册动态 DNS 到 CoreOS。给 pod 的 service 添加 iptables/ipvs 规则,用于服务发现和负载均衡

  10. controller-manager 通过 control loop(控制循环)将当前 pod 状态与用户所期望的状态做对比,如果当前状态与用户期望状态不同,则 controller 会将 pod 修改为用户期望状态,实在不行会将此 pod 删掉,然后重新创建pod

Kubernetes(简称K8s)是一个开源的容器编排和管理工具,用于自动化部署、扩展和操作容器化应用程序。K8s架构原理可以通过以下几个核心组件来详解。 1. Master节点:Master节点是K8s集群的控制中心,负责管理和控制整个集群的运行。其中包括以下几个组件: - API Server:作为控制和管理的入口,接收和处理用户和其他组件的请求。 - Scheduler:负责调度任务到合适的Node节点上运行。 - Controller Manager:监控集群状态,根据需求对集群进行自动化的维护和管理。 - etcd:分布式键值存储系统,用于保存集群中的元数据信息。 2. Node节点:Node节点是集群中的工作节点,负责运行应用程序容器。每个Node节点上包含以下几个组件: - Docker或其他容器运行时:用于管理和运行容器。 - Kubelet:与Master节点通信,接收和执行Master节点下发的指令,管理容器的生命周期。 - Kube-proxy:负责实现集群中的网络代理和负载均衡。 3. Pod:Pod是K8s的最小调度和部署单元,包含一个或多个紧密相关的容器。Pod中的容器共享同一个网络命名空间和存储卷,可以通过本地的localhost互相通信。 4. Service:Service是一种抽象,定义了一组Pod的访问规则。通过Service,可以提供稳定的访问入口,使得集群内的其他组件不需要关心具体的Pod的位置和IP地址。 除了这些核心组件,K8s还有其他一些重要的特性和功能,如命名空间、标签、配置管理、水平扩展、滚动更新等,这些功能进一步增强了K8s的弹性、可靠性和可管理性。 总结起来,K8s架构原理可以归纳为Master-Node架构,通过Master节点对整个集群进行控制和管理,Node节点负责运行容器化应用程序,Pod作为最小的调度和部署单元,Service提供访问入口。这种设计使得K8s具备自动化、弹性、可伸缩和可靠的特点,广泛应用于云原生应用的部署和管理。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值