kubernetes(k8s)架构及基础知识(一)

一、背景

随着 Docker 的崛起,各个公司大显神通,都想在容器平 台化领域抢占市场,竞争非常激烈,其中不乏大巨头公司 的身影。
Borg 系统(Google 公司的)是一个大规模的内部集群管 理系统,它可以运行数千个不同应用程序中的数十万个遍布多个集群的作业,每个集群拥有多达数万台器。
部分 Brog 核心功能及设计理念开源并正式命名 Kubernetes.

二、核心组件及架构

1.Kubernetes 架构

Kubernetes 整体架构图如下:
在这里插入图片描述
假设创建一个 nginx 服务:

Master
  • 通过kubectl命令行创建 nginx 服务,kubectl 会调用 APIServer 往 ETCD 里面写入一个 Deployment 对象
  • Controller-Manager 监听到有新的Deployment对象被写入,获取对象信息后,根据对象信息做任务调度,创建出对应的 Pod 信息。
  • Scheduler监听到有新的 Pod 被创建,读取到 Pod 对象信息,根据集群状态将 Pod 调度到某一节点上,然后更新 Pod 信息(在信息中加入了节点绑定配置)
Worker
  • Kubelet 服务监听到当前节点被指定了新的 Pod,就根据对象信息实际的运行 Pod
  • Pod的网络访问由节点的 Kube-proxy 服务进行 Iptables 的转发规则设定

2.Kubernetes 核心组件

Etcd

Etcd是一种k-v存储仓库,可用于服务发现程序,是 Kubernetes 集群中的重要组件,记录了集群中各种资源对象信息,它除了具备状态存储的功能,还有事件监听和订阅功能,实际Master 上核心组件的通信,并不是互相调用 API 来完成,而是把状态写入 ETCD,其他组件通过监听 ETCD 的状态的的变化(类似订阅消息),然后做后续的处理,然后再一次把更新的数据写入 ETCD

API-Server

类似一个代理,通过标准的 Restful-API 重新封装了对Etcd的接口调用,API-Server 还实现了一些附加功能如身份认证、缓存等,通过调用 API-Server 的相关接口,就可以往 Etcd 中写入数据。

Controller Manager

主要实现任务调度和控制管理,包含多种管理模块,如:
任务:Deployment Controller、DaemonSet Controller,各种任务类型的管理
节点:Node Controller,监控节点信息,若有异常情况,则对节点进行某种操作,如变更节点状态为未就绪(NotReady)
资源:ResourceQuota Controller,判断系统请求资源时是否合法
网络:Endpoints Controller,负责生成和维护所有 Endpoints 对象的控制器。Endpoints 表示了一个 Service 对应的所有 Pod 副本的访
问地址

Scheduler

资源调度服务,Controller-Manager 会把服务对资源的要求,写到 Etcd 中,Scheduler 监听到有新的资源需要调度时,会根据集群的状态,将服务分配到具体的节点上,并将此绑定信息通过 API-Server 写回到 Etcd 中。

3.Kubernetes 特点-可靠性

Kubernetes 工作节点故障服务自愈过程图
在这里插入图片描述
在 Kubernetes 上运行的应用服务,会一直保 持期望的实例数量,不会被 Pod 或节点的故障 所中断。如果出现故障,Kubernetes 会创建必要的数量 的服务并分配到健康的节点上,直到系统恢复 ,这一过程用户基本无感知。

4.Kubernetes 特点-服务发现

服务发现过程图
在这里插入图片描述
在开发应用服务时,Java 开发人员必须控制服务可用性(就应用是否可以提供服务而言),并确保服务 持续存在,以响应客户端的请求,而没有任何例外。
Kubernetes 的服务发现功能意味着开发人员不再需要自己管理这些东西。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值