文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

K8s 长什么样?一文道清它的整体架构

2024-12-13 22:33

关注

所以尝试重新组织语言、文章段落,把 K8s 的这些知识写的更有层次些,让大家更容易读懂,更有温度,不再是觉得对文档的翻译和概念的堆砌。

K8s基础入门和实践--大纲

前三篇理论,后两篇实践,理论篇也会有一些例子,不会让文章内容太枯燥。其实之前已经写过一篇 Docker 与 K8s 的关系,算是进入K8s学习之前的预热,先分清两者的关系。

本篇文章聚焦K8s的整体架构,给大家描绘出K8s的大致模样。

K8s 是什么

Kubernetes(单词太长,后面用 K8s 代替 )是一个基于容器技术的分布式架构方案,它源自Google内部大规模集群管理系统——Borg,自2015年开源后得到开源社群的全力支援,IBM、惠普、微软、RedHat等业界巨头纷纷加入,成为后来的 CNCF 组织(Cloud Native Computing Foundation,云原生计算基金会)首个毕业的项目。

K8s 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和线上扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。

总结一句话:是一套结合了容器编排和集群调度管理的大规模分布式系统解决方案。

K8s 长什么样子

K8s 不是我们现实可以看到摸到的一个东西,所以初学者看完 K8s 是什么的描述后,可能也是觉得云里雾里。那么这里我就尝试描绘一下 K8s 它到底长什么样子。描述一个解决方案的样貌,其实直白点说就是它的整体架构是什么样的,由哪些核心部分组成,每个部分相互怎么交互这些。

我们先来看一下K8s的整体的结构。

K8s 的整体结构

K8s 采用Master / Work Node(最初称为Minion,后改名Node) 的结构,Master Node(主节点)控制整个集群,Work Node(从节点)为集群提供计算能力。使用者可以通过命令行或者 Web 控制台页面的方式来操作集群。

下图可以清楚地表示出 K8s 的整体架构

K8s 的整体架构图

了解到 K8s 由主节点、工作节点两大部分组成后,接下来我们逐一展开,看看主节点和工作节点分别由哪些组件构成。

主节点

Master 节点是 K8s 集群的大脑,负责向外开放集群的 API,调度和管理整个集群。集群至少要有一个Master节点,如果在生产环境中要达到高可用,还需要配置 Master 集群。

下面这张图,描绘出了主节点内部的结构。

K8s主节点内部结构

Master主要包含 API Server、Scheduler、Controllers​ 三个组成部分, 以及用作存储的 etcd,它用来储存整个集群的状态。

我们能接触到的控制器有,下面这些:

具体干什么的,放到下篇文章—K8s面向对象再详细介绍,没错想用K8s,你也得面向对象,可怕不。到时候会结合着例子一块看。

我们继续看K8s 的工作节点的内部结构。

工作节点

K8s 集群的工作节点,可以是物理机也可以是虚拟机器。Node 上运行的主要 K8s 组件有kubelet、kube-proxy、Container Runtime 、Pod 等。

K8s 工作节点的内部结构

kubelet

K8s 集群的每个工作节点上都会运行一个 kubelet 程序 维护容器的生命周期,它接收并执行Master 节点发来的指令,管理节点上的 Pod 及 Pod 中的容器。同时也负责Volume(CVI)和网络(CNI)的管理。

每个 kubelet 程序会在 API Server 上注册节点自身的信息,定期向Master节点汇报自身节点的资源使用情况,并通过cAdvisor监控节点和容器的资源。

通过运行 kubelet,节点将自身的 CPU,RAM 和存储等计算机资源变成集群的一部分,相当于是放进了集群统一的资源管理池中,交由 Master 统一调配。

Container Runtime

容器运行时负责与容器实现进行通信,完成像容器镜像库中拉取镜像,然后启动和停止容器等操作, 引入容器运行时另外一个原因是让 K8s 的架构与具体的某一个容器实现解耦,不光是 Docker 能运行在 K8s 之上,同样也让K8s 的发展按自己的节奏进行。

想要运行在我的生态里的容器,请实现我的CRI (Container Runtime Interface),Container Runtime 只负责调用CRI 里定义的方法完成容器管理,不单独执行 docker run 之类的操作。这个也是K8s 发现Docker 制约了它的发展在 1.5 后引入的。

Pod

Pod 是 K8s 中的最小调度单元。我们的应用程序运行在容器里,而容器又被分装在 Pod 里。一个 Pod 里可以有多个容器,也可以有多个容器。没有统一的标准,是单个还是多个,看要运行的应用程序的性质。不过一个 Pod 里只有一个主容器,剩下的都是辅助主容器工作的。

比如做服务网格 Istio 的 Envoy 网关,就是放在Pod的辅助容器运行来实现流量控制的。 这就是 K8s 的容器设计模式里最常用的一种模式:sidecar。顾名思义,sidecar 指的就是我们可以在一个Pod中,启动一个辅助容器,来完成一些独立于主进程(主容器)之外的工作。

kube-proxy

为集群提供内部的服务发现和负载均衡,监听 API Server 中 Service 控制器和它后面挂的 endpoint 的变化情况,并通过 iptables 等方式来为 Service 的虚拟IP、访问规则、负载均衡。

总结

本篇文章聚焦K8s的整体架构,给大家描绘出K8s的大致模样。下一节我们来说说 K8s 的面向对象,以及我们能接触到的常用控制器对象。此刻看到这句话你的心情可能是:"纳尼,这厮也是面向对象?面向对象,怎么老是你?"

是的,K8s 也是面向对象的,而且面向的还很彻底,就跟某语言说的一切皆对象一样彻底。不过正因为它是面向对象的,那么以面向对象的方式来思考这些东西,反而会很好理解,毕竟我们每天都要面向"对象",不是么:)。

来源:网管叨bi叨内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯