k8s(一)基础概念和理解

1.了解 Kubernetes

1.1简述功能

  • Kubernetes 是一个软件系统,它允许你在其上很容易地部署和管理容器化的应用。

  • 它依赖于 Linux容器的特性来运行异构应用, 而无须知道这些应用的内部详情, 也不需要手动将这些应用部署到每台机器.

  • 通过 Kubernetes 部署应用程序时,你的 集群包含多少节点都是 一样的 。集群规模不会造成什么差异性,额外的集群节点只是代表 一 些额外的可用来部署应用的资源

1.2核心功能

  • 开发者把 一个应用列表提 到主节点, Kubemetes 会将它们部署 到集群的工作节点。

  • 组件被部署在哪个节点对于开发者和系统管理员来说都不用 关心 。

image-20230217161122748.png
  • 开发者能指定一些应用必须一起运行, Kubemetes 将会在一个工作节点上部署它们 。

  • 其他的将被分散部署到集群中,但是不管部署在哪儿,它们都能以相同的方式互相通信

1.3友好人群

  • 帮助开发者聚焦核心应用功能

Kubemetes 可以被当作集群的一 个操作系统来看待。它降低了开发者不得不在他们的应用里实现一些和基础设施相关服务的心智负担。

他们现在依赖于 Kubemetes 来提供这些服务,包括服务发现、扩容、负载均衡、自恢复,甚至领导者的选举 。

应用程序开发者因此能 集中精力实现应用本身 的功能而不用浪费时间思 索怎样集成应用与基础设施 。

  • 帮助运维团队获取更高的资源利用率

Kubemetes 将你的容器化应用运行在集群的某个地方,井提供信息给应用组件来发现彼此并保证它们的运行 。

因为你的应用程序不关心它运行在哪个节点上,Kubemetes 能在任何时间迁移应用并通过混合和匹配应用来获得比手动调度高很多的资源利用率 。

2.Kubernetes 集群架构

2.1基础架构

在硬件级别, 一 个 Kubernetes 集群由很多节点组成, 这些节点被分成以下两种类型 :

  • 主节点 ,它承载着 Kubernetes控制和管理整个集群系统的控制面板

  • 工作节点,它们运行用户实际部署的应用

2.2 控制面板-主节点

控制面板用于控制集群并使它工作。它包含多个组件,组件可以运行在单个主节点上或者通过副本分别部署在多个主节点以确保高可用性。 这些组件是 :

  • Kubernetes API 服务器,你和其他控制面板组件都要和它通信

  • Scheculer,它调度你的应用(为应用的每个可部署组件分配一 个工作节点〕

  • Controller Manager,它执行集群级别的功能,如复制组件、持续跟踪工作节点、处理节点失败等

  • etcd,一个可靠的分布式数据存储,它能持久化存储集群配置


    image-20230217161949414.png

控制面板的组件持有并控制集群状态,但是它们不运行你的应用程序。这是由工作节点完成的 。

2.2工作节点

工作节点是运行容器化应用的机器。运行、监控和管理应用服务的任务是由以 下组件完成的 :

  • Docker、rtk或其他的容器类型

  • Kubelet,它与 API 服务器通信,并管理它所在节点的容器

  • Kubernetes Service Proxy (kube-proxy),它负责组件之间的负载均衡网络流量

3.运行应用

image-20230217171600012.png

3.1基础步骤和意义

  • 为了在 Kubernetes 中运行应用,首先需要将应用打包进一个或多个容器镜像, 再将那些镜像推送到镜像仓库

  • 然后将应用的描述发布到 Kubemetes API 服务器 。描述包括:

    • 诸如容器镜像或者包含应用程序组件的容器镜像、这些组件如何相互关联

    • 哪些组件需要同时运行在同一个节点上和哪些组件不需要同时运行等信息。

    • 此外该描述还包括哪些组件为内部或外部客户提供服务且应该通过单个IP地址暴露 ,并使其他组件可以发现 。

3.2描述信息怎么运行的容器

  • 当 API服务器处理应用的描述时,调度器调度指定组的容器到可用的工作节点上,

  • 调度是基于每组所需的计算资源,以及调度时每个节点未分配的资源。

  • 然后那些节点上的 Kubelet 指示容器运行时(例如 Docker)拉取所需的镜像并运行容器

3.3保持容器运行

  • 一旦应用程序运行起来, Kubernetes 就会不断地确认应用程序的部署状态始终与你提供的描述相匹配。

  • 如果你指出你需要运行五个 web 服务器实例,那么 Kubernetes 总是保持正好运行五个实例。

  • 如果实例之一停止了正常工作,比如当进 程崩溃或停止响应时, Kubernetes 将自动重启它 。

  • 如果整个工作节点死亡或无法访问, Kubernetes 将为在故障节点上运行的所有容器选择新节点,并在新选择的节点上运行它们 。

3.4扩展副本数量

  • 当应用程序运行时,可以决定要增加或减少副本量 ,而 Kubemetes将分别增加附加的或停止多余的副本。

  • 甚至可以把决定最佳副本数目的工作交给 Kubemetes。

  • 它可以根据实时指标(如 CPU 负载、内存消耗、每秒查询或应用程序公开的任何其他指标)自动调整副本数 。

3.5命中移动目标

  • Kubemetes 可能需要在集群中迁移你的容器。当它们运行的节点失败时,或者为了给其他容器腾出地方而从节点移除时就会发生

  • 如果容器向运行在集群中的其他容器或者外部客户端提供服务,那么当容器在集群内频繁调度时,它们该如何正确使用这个容器?

  • 当这些容器被复制并分布在整个集群中时,客户端如何连接到提供服务的容器呢?

  • 上述两条中的的其他容器外部客户端需要考虑寻找的容器是移动的,即移动目标!!

  • 为了让客户能够轻松地找到提供特定服务的容器,可以告诉 Kubemetes 哪些容器提供相同的服务,

  • 而 Kubemetes将通过一个静态IP地址暴露所有容器,并将该地址暴露给集群中运行的所有应用程序。

  • 这是通过环境变量完成的,但是客户端也可以通过良好的DNS查找服务IP。

  • kube-proxy 将确保到服务的连接可跨提供服务的容器实现负载均衡。服务的 IP 地址保持不变,

  • 因此客户端始终可以连接到它的容器,即使它们在集群中移动

4.使用 Kubernetes 的好处

4.1简化应用程序部署

  • k8s将其所有工作节点公开为一个部署平台,因此应用程序开发人员可以自己开始部署应用程序,不需要了解组成集群的服务器。

  • 现在所有节点都是一组等待应用程序使用它们的计算资源。开发人员通常不关心应用程序运行在哪个服务器上,只要服务器能够为应用程序提供足够的系统资源即可。

  • 如果开发人员因为节点异构原因确实想知道自己的程序跑到了那个节点,节点硬件符不符合自己的需求。

  • 那么可以直接告诉k8s你这个程序想跑那个节点即可

4.2更好地利用硬件

  • 通过在服务器上装配 K8s,并使用它运行应用程序而不是手动运行它们, 你己经将应用程序与基础设施分离开来。

  • 当你告诉 K8s运行你的应用程序时,你在让它根据应用程序的资源需求描述和每个节点上的可用资源选择最合适的节点来运行你的应用程序。

  • 通过使用容器,不再用把这个应用绑定到一个特定的集群节点,而允许应用程序在任何时候都在集群中自由迁移

  • 所以在集群上运行的不同应用程序组件可以被混合和匹配来紧密打包到集群节点。这将确保节点的硬件资源得到尽可能好的利用。

  • 可以随时在集群中移动应用程序的能力,使得 Kubemetes 可以比人工更好地利用基础设施

4.3健康检查和自修复

  • K8s 监控你的应用程序组件和它们运行的节点,并在节点出现故障时自动将它们重新调度到其他节点。

  • 运维不用去重新部署应用,专注修复节点本身,然后将其修好送回硬件资源池

4.4自动扩容

  • Kubemetes 监视每个应用程序使用 的资源,并不断调整每个应用程序 的运行实例数 量。

  • 如果 Kubemetes 运行在 云基础设施上,在这些基础设施中,添加额外的节点就 像通过云供应商的 API 请求它们一样简单

  • 那么 Kubemetes 甚至可以根据部署的应用程序的需要自动地将整个集群规模放大或缩小 。

5.小结

  • 单体应用程序更容易部署,但随着时间的推移更难维护,并且有时难以扩展。

  • 基于微服务的应用程序体系结构使每个组件的开发更容易,但是很难配置和部署它们作为单个系统工作。

  • Linux 容器提供的好处与虚拟机差不 多,但它们轻量许多 ,并且允许更好地利用硬件 。

  • 通过允许更简单快捷地将容器化应用和其操作系统环境 一起管理, Docker改进了现有的 Linux 容器技术 。

  • Kubernetes将整个数据中心暴露为用于运行应用程序的单个计算资源。

  • 开发人员可以通过Kubernetes部署应用程序,而无须系统管理员的帮助。

  • 通过让Kubernetes自动地处理故障节点, 系统管理员可以睡得更好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容