Kubernetes,希腊语,意舵手。有时简写为“K8s”,其中“8”代表“K”和“s”之间的 8 个字母,是一个开源系统,支持在任何地方部署、扩缩和管理容器化应用。

1 Kubernetes架构

1.1 k8s架构

Kubernetes的这种架构为服务发现提供了一种灵活的,低耦合的机制。与大多数分布式计算平台架构一样,Kubernetes集群至少包含一个主节点和多个计算节点。主服务器负责公开应用程序接口(API),安排部署并管理整个集群。
每个节点都运行一个运行时容器,例如Docker或rkt,以及一个与主机通信的代理。该节点还运行用于日志记录,监视,服务发现和可选附件的其他组件。节点是Kubernetes集群的主力军。它们向应用程序公开计算,网络和存储资源。节点可以是在云中运行的虚拟机(VM)或在数据中心内运行的裸机服务器。

分布式集群架构的系统都是类似的,只不过在 k8s 中:

  • manager即k8s Master
  • worker即Node x节点

Master会对外暴露很多接口供我们操作 k8s 集群,如查看节点状态、将应用部署到k8s集群。

  • Kubernetes 集群(Cluster)

1.2 Master 节点

Kubernetes 对象的定义,例如 pod、副本集和服务,被提交给 master。根据定义的需求和资源可用性,master 将 pod 调度到特定节点上。该节点从容器镜像注册表中拉取镜像,并与本地容器运行时协调以启动容器。

etcd是来自 CoreOS 的开源分布式键值数据库,它充当Kubernetes 集群所有组件的单一真实来源 ( SSOT )。master 查询 etcd 以检索节点、pod 和容器状态的各种参数。

核心组件

etcd

分布式的 KV 存储,保存了整个k8s集群的状态和配置。

API Server

暴露给外界访问,可以通过 CLI 或 UI 操作通过 API Server 最终和整个集群交互,提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制。

  1. 提供 Kubernetes API,包括 CRUD(创建、读取、更新、删除)操作。kubectl 和其他客户端都通过 API Server 与 Kubernetes 集群进行交互
  2. 验证和确认请求,识别恶意或非法请求。API Server 使用 ServiceAccount 对象来鉴权用户,确保只有被授权的用户才能访问相应的 API
  3. 查询元数据并决定将请求路由到哪个节点。API Server 发送请求到 etcd 集群,查询与请求相关的元数据和资源信息,然后确定将请求转发到哪个节点
  4. 持久化对象编辑。当对象创建或更新时,API Server 会将对象编辑持久化到 etcd 集群
  5. 记录审计日志。API Server 会记录所有请求及其详细信息,为审计提供数据支持
  6. TLS 认证和 RBAC 授权。API Server 使用证书对所有请求进行 TLS 认证和 RBAC 授权,保证集群安全
  7. 汇总监控数据。API Server 可以从各个节点和控制平面组件收集监控数据,为外部监控系统提供统一数据接口
  8. 服务发现。API Server 暴露了服务发现的 API,此 API 用于查找任何 Kubernetes 服务的 endpoints

所以,总体来说,API Server 提供了 Kubernetes 系统的统一入口,承担了认证授权、查询请求解析、对象持久化等非常重要的功能,是 Kubernetes 集群的控制中心和连接点。

controller manager

负责维护集群的状态,如负载均衡、故障检测、自动扩展、滚动更新、副本数量设置等。

Scheduler

负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上。比如我通过API 要下达一个命令,要求部署一个应用,而该应用需要两个容器,那这俩容器又该运行在哪个 Node 呢?这就是Scheduler干的好事。

1.3 Node 节点

1.3.1 核心组件

① Pod

k8s中容器里调度的最小单位,具有相同 namespace的一些 container 组合。吊舱是一个或多个容器的集合。吊舱是Kubernetes的管理核心单元。容器充当共享相同上下文和资源的容器的逻辑边界。 Pod的分组机制通过使多个依赖进程一起运行而弥补了容器化和虚拟化之间的差异。在运行时,可以通过创建副本集来扩展Pod,以确保部署始终运行所需数量的Pod。

② Docker

每个 Node 都需要执行一个运行时容器,例如Docker或rkt。

③ kubelet

Node 节点受 Master 控制,那 master 是如何去控制 Node 的呢?那就需要一个代理在 Node 中做这些事。负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理。

④ Container runtime

负责镜像管理以及Pod和容器的真正运行(CRI)

⑤ kube-proxy

负责为Service提供集群内部的服务发现和负载均衡。

⑥ Fluentd

日志采集和查询。

参考

  • https://thenewstack.io/kubernetes-an-overview

这样的设计太妙了!K8S 神秘架构终于揭开面纱!相关推荐

  1. 李艳芳北京应用物理与计算机,太赫兹量子级联激光器有源区增益分析和设计-太赫兹科学与电子信息.PDF...

    太赫兹量子级联激光器有源区增益分析和设计-太赫兹科学与电子信息 第 11 卷 第 1 期 太赫兹科学与电子信息学报 Vo1.11,No.1 2013 年 2 月 Journal of Terahert ...

  2. java实现楼梯式效果_复式楼终于完工,效果很漂亮,楼梯这样设计太抢眼了,忍不住晒晒...

    很开心能给大家分享朋友家这套复式楼,可能很多人都对复式楼感兴趣,所以给大家详细介绍吧,喜欢的话可以做参考,也希望这样的装修能给大家带来一些装修灵感.朋友家复式楼花了大半年的时间现在终于完工,家具都已经 ...

  3. 【星蕴图】这个设计太棒了!

    目录 一.背景 二.代码实现 1.星空背景+动物轮廓图案直接使用图片: 2.星星 3.优化 4.鼠标悬浮算法 三.总结 一.背景 游戏作为第九艺术越来越炫酷了,各种花样引领行业进步. 第一次看到某游戏 ...

  4. java t9 字母组合_太赞了!美团T9终于整理出Java架构之完美设计实战开源文档

    软件架构师是每个程序员职业生涯中内功心法修炼的终极目标.要达到这个目标需要具备"十八般武艺,八十种技巧",本书正是继<Java代码与架构之完美优化--实战经典>< ...

  5. rabbitmq实战指南_太香了这份架构解密:从分布式到微服务(第二版),神仙进阶指南...

    有这样一本神奇的架构书读者可以在字里行间见证微服务的发展脉络大到分布式.微服务.云原生.K8s.Service Mesh小到网络.分布式系统.RPC.分布式存储.分布式计算.全文检索与消息队列中间件等 ...

  6. 设计撑百万并发的数据库架构

    设计撑百万并发的数据库架构 https://www.toutiao.com/a6742034135486824973/ 前言 作为一个全球人数最多的国家,一个再怎么凄惨的行业,都能找出很多的人为之付出 ...

  7. 插件式架构设计实践:插件式系统架构设计简介

    本系列博文将使用微软RIA技术解决方案Silverlight以及扩展性管理框架Managed Extensibility Framework(MEF),以插件式架构设计为导线,分享本人在从事基于微软S ...

  8. 架构设计实践思路:什么是架构,怎么画架构图?

    点击蓝色字体"肉眼品世界",关注公众号 改变,从一点一滴积累开始 作者丨胡斌 策划丨小智 本文是架构设计实践五部曲系列文章的第一篇,架构与架构图.本文将对架构作深入的阐释,并教你什 ...

  9. 【企业架构设计实战】5 大数据架构设计

    数据架构概述 什么是数据? 一个企业的数字化核心是数据,数据化的价值依赖于数据的标准和质量,数据对一个企业来说至关重要,它也是整个信息化建设及企业架构的核心.数据具有多样性,有结构化的.非结构化的,与 ...

最新文章

  1. golang微服务框架对比_微服务里程碑,Golang与Spring Cloud Alibaba完美结合
  2. CountDownLatch——常用并发工具类
  3. findHomography(src_points, dst_points, CV_RANSAC)
  4. 获取站点某一目录下某些文件
  5. iOS-UICollectionView
  6. Linux crond 每分钟,每小时,每天,每周,每月,每年 的表达式写法
  7. Honey Tree(超好用的样板代码管理工具)
  8.  ̄□ ̄他咬了蜘蛛一口,从此蜘蛛精通C语言
  9. Java学习之JDBC(1)
  10. 2017-2018-2 1723《程序设计与数据结构》第三周作业 实验一 总结
  11. 4 4c语言表格的画法_别再用Vlookup函数了,查找4个表格它更简单
  12. 从零开始写高性能的人脸识别服务器(一)
  13. joda-time 使用详解
  14. xshell起图形界面后,鼠标点击不了
  15. htmldd隐藏,如何在隐藏“dd”后隐藏“dd”
  16. latex并排显示多个图片
  17. 《猫和老鼠》里的魔术艺术(四)——夸张与对比
  18. asp 打开服务器文件夹,什么是ASP?如何打开ASP文件
  19. 用nethogs监控上网流量
  20. 爱数科技python开发岗面试

热门文章

  1. CSS实现聊天气泡(三角形)
  2. 你的人生看起来很长,每一秒都无法挽回。
  3. csdn各种积分规则
  4. LCD LVDS BT656 SDI
  5. 智能照明控制系统助力某商业综合体实现“双碳”
  6. 可编程逻辑控制器(PLC) : 基础、类型和应用
  7. PHP之微信头像加水印
  8. 浅谈ArcGIS中的容差和分辨率
  9. python 图片拼接成数字_用Python语言对任意图像进行m*n的均匀分块并拼接还原(思路非常清晰,步骤简单)...
  10. Python 计算EMA(指数移动平均线)