Kubernetes

✍ dations ◷ 2024-12-23 09:41:09 #虚拟化软件,云端运算,自由软件,使用Apache许可证的软件,Linux容器化,用Go编程的自由软件

Kubernetes(常简称为K8s)是用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。该系统由Google设计并捐赠给Cloud Native Computing Foundation(今属Linux基金会)来使用。

它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。 它支持一系列容器工具, 包括Docker等。CNCF于2017年宣布首批Kubernetes认证服务提供商(KCSPs),包含IBM、华为、MIRANTIS等服务商。

Kubernetes(在希腊语意为“舵手”或“驾驶员”)由Joe Beda、Brendan Burns和Craig McLuckie创立,并由其他谷歌工程师,包括Brian Grant和Tim Hockin等进行加盟创作,并由谷歌在2014年首次对外宣布 。 该系统的开发和设计都深受谷歌的Borg系统的影响,其许多顶级贡献者之前也是Borg系统的开发者。在谷歌内部,Kubernetes的原始代号曾经是Seven,即星际迷航中的Borg(博格人)。Kubernetes标识中舵轮有七个轮辐就是对该项目代号的致意。

Kubernetes v1.0于2015年7月21日发布。 随着v1.0版本发布,谷歌与Linux 基金会合作组建了Cloud Native Computing Foundation(CNCF)并将Kubernetes作为种子技术来提供。

Rancher Labs在其Rancher容器管理平台中包含了Kubernetes的发布版。Kubernetes也在很多其他公司的产品中被使用,例如Red Hat的OpenShift, CoreOS的Tectonic, IBM的IBM私有云产品,,精灵云的EcOS,以及 VMware的PKS等等。

Kubernetes在设计结构上定义了一系列的构建模块,其目的是为了提供一个可以共同提供部署、维护和扩展应用程序的机制。组成Kubernetes的组件设计概念为松耦合和可扩展的,这样可以使之满足多种不同的工作负载。可扩展性在很大程度上由Kubernetes API提供,此API主要被作为扩展的内部组件以及Kubernetes上运行的容器来使用。

Kubernetes的基本调度单元称为“pod”。通过该种抽象类别可以把更高级别的抽象内容增加到容器化组件。一个pod一般包含一个或多个容器,这样可以保证它们一直位于主机上,并且可以共享资源。Kubernetes中的每个pod都被分配一个唯一的(在集群内的)IP地址这样就可以允许应用程序使用同一端口,而避免了发生冲突的问题。 Pod可以定义一个卷,例如本地磁盘目录或网络磁盘,并将其暴露在pod中的一个容器之中。。pod可以通过Kubernetes API手动管理,也可以委托给控制器来实现自动管理。

Kubernetes使客户端(用户或内部组件)将称为“标签”的键值对附加到系统中的任何API对象,如pod和节点。相应地,“标签选择器”是针对匹配对象的标签的查询方法。

标签和选择器是Kubernetes中的主要分组机制,用于确定操作适用的组件。

例如,如果应用程序的Pods具有系统的标签 tier (比如"front-end"、"back-end") 和一个 release_track (比如"canary"、"production"),那么对所有"back-end" 和 "canary" 节点的操作可以使用如下所示的标签选择器:

tier=back-end AND release_track=canary

控制器是通过管理一组pod来实现来将实际集群状态转移到所需集群状态的对帐循环机制。一种控制器指的是一组具有相同特征的“复制控制器”,控制器通过在集群中运行指定数量的pod副本来处理复制和缩放。在基础节点出现故障的情况下,它还可以用于处理创建替换pod。其它控制器也是核心Kubernetes系统的一部分,包括“DaemonSet控制器”为每台机器(或机器的一些子集)上运行的单个pod,和用于运行pod的“作业控制器”。 控制器管理的pod组由作为控制器定义的部分的标签选择器来确定。

Kubernetes服务本质是一组协同工作的pod,类同多层架构应用中的一层。构成服务的pod组通过标签选择器来定义。Kubernetes通过给服务分配静态IP地址和域名来提供服务发现机制,并且以轮循调度(英语:Round-robin DNS)的方式将流量负载均衡到能与选择器匹配的pod的IP地址的网络连接上(即使是故障导致pod从一台机器移动到另一台机器)。 默认情况下,服务任务会暴露在集群中(例如,多个后端pod可能被分组成一个服务,前端pod的请求在它们之间负载平衡);除此以外,服务任务也可以暴露在集群外部(例如,从客户端访问前端pod)。

Kubernetes遵循主从式架构设计。Kubernetes的组件可以分为管理单个的 node 组件和控制平面部分的组件。

Kubernetes Master是集群的主要控制单元,其用于管理其工作负载并指导整个系统的通信。Kubernetes控制平面由各自的进程组成,每个组件都可以在单个主节点上运行,也可以在支持high-availability clusters的多个主节点上运行。是Kubernetes控制平面的各种组件如下:

etcd 是由CoreOS开发,用于可靠地存储集群的配置数据的一种持久性,轻量型的,分布式的键-值数据存储组件。该组件可表示在任何给定时间点处的集群的整体状态。其他组件在注意到存储的变化之后,会变成相应的状态。

API服务器是一个关键组件 并使用 Kubernetes API 和 JSON over HTTP来提供了Kubernetes的内部和外部接口。 API服务器处理和验证 REST请求并更新 API 对象的状态etcd,从而允许客户端在Worker节点之间配置工作负载和容器。

T调度程序是可插拔式组件,其基于资源可用性来选择未调度的pod(由调度程序管理的基本实体)应该运行哪个节点。调度程序跟踪每个节点上的资源利用率,以确保工作负载不会超过可用资源。为此,调度程序必须知道资源需求,资源可用性以及各种其他用户提供的约束和策略指令,例如服务质量,亲和力/反关联性要求,数据位置等。实质上,调度程序的作用是将资源“供应”与工作负载“需求”相匹配以维持系统的稳定和可靠。

控制器管理器是核心Kubernetes控制器,其包括DaemonSet控制器和复制控制器等。该控制器可与API服务器进行通信以在需要时创建,更新和删除他们管理的资源(pod,服务端点等)

Node也称为Worker或Minion,是部署容器(工作负载)的单机器(或虚拟机)。集群中的每个节点都必须具备容器的运行环境(runtime) ——比如 Docker,以及下面提到的其他组件,以便与这些容器的网络配置进行通信。

Kubelet负责每个节点的运行状态(即确保节点上的所有容器都正常运行)。它按照控制面板的指示来处理启动,停止和维护应用程序容器(按组织到pod中)。

Kubelet会监视pod的状态,如果不处于所需状态,则pod将被重新部署到同一个节点。节点状态每隔几秒就会传递消息至中继主机。主控器检测到节点故障后,复制控制器将观察此状态更改,并在其他健康节点上启动pod。

容器从属于pod。在运行应用、库及其依赖的微服务中,容器是最低层级的。通过绑定一个外部IP,容器可以被外网访问。

Kube代理是网络代理和负载均衡的实现,支持服务抽象以及其他网络操作。根据传入请求的IP和端口,该组件会将流量转发到指定的合适的容器中。

cAdvisor 是监视和收集例如每个节点上的容器的CPU,内存,文件和网络使用情况等的资源使用情况和性能指标的代理组件。

相关

  • 吞咽痛吞咽痛 (odynophagia、/oʊ-dɪnˈə-feɪˈjəˌ-jiː-ə/;由 odyno "痛" + -phagō "吞咽") 指当吞咽时所产生的痛感。 可能在口腔或咽喉部感觉到疼痛,而且吞咽障碍可能会或
  • 马立克病毒属马立克病毒属(学名:Mardivirus)是疱疹病毒科甲型疱疹病毒亚科(英语:Alphaherpesvirinae)的一个属,共包含六种感染鸟类的病毒,其中模式种第二型鸡疹病毒(Gallid herpesvirus 2)可造成鸡
  • 路德维希·密斯·凡德罗路德维希·密斯·凡德罗(Ludwig Mies van der Rohe,1886年3月27日-1969年8月17日)生于德国亚琛,过世于美国芝加哥,原名为玛丽亚·路德维希·密夏埃尔·密斯(Maria Ludwig Michael
  • 身体抽蓄惊厥(英语:Convulsion),亦称惊风,在医学上指肌肉突然紧张、松弛而导致身体失控颤抖的状况。因为症状与癫痫发作相似而被混淆,但并不是所有的癫痫发作都会导致惊厥。和西医所指的广
  • 中国森林面积中国森林面积208万平方公里,森林覆盖率21.63%,低于全球31%的平均水准。由于人口众多,人均森林面积只有世界平均的1/4,人均森林蓄积只有世界平均的1/7,资源少、分布不均。由于中国
  • 东莞会馆东莞会馆,位于中国广东省深圳市南山区南头古城内,为深圳市的一个市级文物保护单位,类型为古建筑,公布时间为1984年9月6日。东莞会馆的历史年代为清代。
  • 洛特卡-沃尔泰拉方程洛特卡-沃尔泰拉方程(Lotka-Volterra equation)别称掠食者—猎物方程。是一个二元一阶非线性微分方程组成。经常用来描述生物系统中,掠食者与猎物进行互动时的动态模型,也就是两
  • 广范试剂广用试剂,又名通用指示剂或广范试剂。一般用来指示溶液的酸碱性,并可以指示酸性和碱性范围内的各种pH值,其变色之 pH 范围如下表:   pH值<4,颜色皆为红色pH值>10,颜色皆为紫色
  • SPEED (韩国音乐团体)SPEED(朝鲜语:스피드 )为MBK娱乐旗下已解散的男子团体。原为韩国混声音乐团体男女共学的男性子团,后为独立团体。SPEED的官方粉丝名称为“DEEPS”,意思为被SPEED深深吸引的人们
  • 月光花 (Linn.) House 月光花(学名:),又名嫦娥奔月(云南)、天茄儿、天茄子、夜颜(日本)、夕颜(日本),是旋花科番薯属植物,原产于新大陆热带及温带地区,包括南美洲全境、中美洲、墨西哥和美国