延长Kubernetes

改变Kubernetes集群行为的不同方式。

Kubernetes是高度可配置和可扩展的。因此,很少需要叉子或向Kubernetes项目代码提交修补程序。

本指南介绍了自定义Kubernetes集群的选项。它的目标是集群运营商谁想了解如何使他们的Kubernetes集群适应他们的工作环境的需要。开发人员是潜在的平台开发人员或kubernetes项目贡献者还将发现它有用作为存在的扩展点和模式的介绍以及他们的权衡和局限性。

概述

定制方法可以广泛分为配置,它只涉及更改标志、本地配置文件或API资源;和延期,涉及运行其他程序或服务。本文档主要是关于扩展。

配置

配置文件旗帜在在线文档的参考部分中记录在每个二进制文件下:乐动体育是干嘛的

标志和配置文件可能并不总是在托管的Kubernetes服务中可更改或具有托管安装的分发。当它们是可变的,它们通常只能由群集管理员变化。此外,它们可能会在未来的Kubernetes版本中的变化,并将它们设置可能需要重新启动进程。出于这些原因,只有在没有其他选择时才应该使用它们。

内置策略api, 如ResourceQuotapodsecuritypoliciesNetworkPolicy.和基于角色的访问控制(RBAC.),内置Kubernetes API。API通常与托管的Kubernetes服务和托管Kubernetes安装一起使用。它们是声明性的,并使用与其他kubernetes资源相同的约定,如pods,因此新的群集配置可以是可重复的,并将与应用程序相同的方式管理。而且,他们稳定在哪里,他们喜欢定义的支持政策像其他Kubernetes API。由于这些原因,他们是首选的配置文件旗帜适合的地方。

延期

扩展是扩展和深度集成Kubernetes的软件组件。他们采用它来支持新类型和新类型的硬件。

大多数群集管理员将使用Kubernetes的托管或分发实例。因此,大多数kubernetes用户不需要安装扩展,而且需要更少的需要。

扩展模式

Kubernetes旨在通过编写客户程序来自动化。任何读取和/或写入Kubernetes API的程序都可以提供有用的自动化。自动化可以在群集中运行或关闭它。按照此文档的指导,您可以编写高可用性和强大的自动化。自动化通常与任何Kubernetes集群合作,包括托管群集和托管安装。

有一种特定的模式,用于编写与名为Kubernetes良好的客户程序的客户程序控制器模式。控制器通常读取对象的.spec.,可能做事,然后更新对象。地位

控制器是Kubernetes的客户端。当Kubernetes是客户端并呼叫远程服务时,它被称为aWebhook..远程服务被称为aWebhook后端.像控制器一样,Webhooks确实添加了一个失败点。

在webhook模型中,Kubernetes向远程服务发出网络请求。在二进制插件模型,Kubernetes执行二进制(程序)。kubelet使用二进制插件(例如Flex卷插件网络插件通过kubectl。

下面是一个图,示出了扩展点如何与Kubernetes控制平面交互。

扩展点和控制平面

扩展点

此图显示了Kubernetes系统中的扩展点。

扩展点

  1. 用户经常使用Kubernetes API进行交互kubectl.kubectl插件扩展kubectl二进制文件。它们仅影响单个用户的本地环境,因此无法强制执行站点范围的策略。
  2. Apiserver处理所有请求。APIServer中的几种类型的扩展点允许验证请求,或基于其内容,编辑内容和处理删除来阻止它们。这些描述于API访问扩展名部分。
  3. Apiserver提供各种各样的资源内置资源, 喜欢豆荚,由Kubernetes项目定义,无法更改。您还可以添加您定义的资源,或者其他项目已定义,调用自定义资源,如自定义资源部分。自定义资源通常与API访问扩展一起使用。
  4. Kubernetes调度器决定在哪个节点上放置吊舱。有几种方法可以扩展日程安排。这些描述于调度程序扩展名部分。
  5. Kubernetes的大部分行为由称为控制器的程序来实现,该程序是API-Server的客户端。控制器通常与自定义资源一起使用。
  6. Kubelet在服务器上运行,并帮助Pods在群集网络上具有自己的IPS等虚拟服务器。网络插件允许不同的POD网络实现。
  7. Kubelet也安装并卸载容器的卷。可以通过新类型的存储来支持存储插件

如果您不确定启动,则此流程图可以帮助。注意,一些解决方案可能涉及几种类型的扩展。

对扩展流程图

API扩展

用户定义的类型

如果要定义新的控制器,应用程序配置对象或其他声明性API,请考虑向Kubernetes添加自定义资源,并使用Kubernetes工具管理它们,例如kubectl.

请勿使用自定义资源作为应用程序,用户或监视数据的数据存储。

有关自定义资源的更多信息,请参阅自定义资源概念指南

将新API与自动化结合起来

自定义资源API和控制循环的组合称为操作员模式.Operator模式用于管理特定的(通常是有状态的)应用程序。这些自定义api和控制循环还可以用于控制其他资源,如存储或策略。

更改内置资源

通过添加自定义资源扩展Kubernetes API时,添加的资源始终属于新API组。您无法替换或更改现有API组。添加API并不直接允许您影响现有API的行为(例如PODS),但API访问扩展程序执行。

API访问扩展名

当请求到达Kubernetes API服务器时,首先经过身份验证,然后授权,然后经过各种类型的准入控制。看控制访问Kubernetes API有关此流程的更多信息。

这些步骤中的每一个都提供扩展点。

Kubernetes有几种支持的内置身份验证方法。它还可以坐在验证代理后面,它可以从授权标题向远程服务发送令牌以进行验证(Webhook)。所有这些方法都被覆盖验证文档乐动体育是干嘛的

身份验证

身份验证将所有请求中的头或证书映射到发出请求的客户机的用户名。

Kubernetes提供了几种内置的身份验证方法,以及身份验证Webhook.方法如果这些方法不符合您的需求。

授权

授权确定特定用户是否可以读取,写入和对API资源执行其他操作。它适用于整个资源的级别 - 它不会根据任意对象字段歧视。如果内置授权选项不符合您的需求,以及授权Webhook.允许向用户提供的代码呼叫以进行授权决策。

动态录取控制

请求授权后,如果是写操作,它也会通过允许控制脚步。除了内置步骤外,还有几个扩展:

  • 图像策略webhook.限制在容器中可以运行的图像。
  • 为了做出武断的准入控制决策,将军录取Webhook.可以使用。录取Webhook可以拒绝创造或更新。

基础设施扩展

存储插件

Flex卷允许用户通过kubelet调用二进制插件来安装卷而无需内置支持,允许用户安装卷类型。

装置的插件

设备插件允许一个节点发现新的节点资源(除了内置的资源,如cpu和内存)设备插件

网络插件

可以通过节点级支持不同的网络结构网络插件

调度程序扩展名

调度程序是一种特殊类型的控制器,其观看POD,并将POD分配给节点。默认调度程序可以完全替换,同时继续使用其他Kubernetes组件,或多个调度员可以同时运行。

这是一项重要的事业,几乎所有Kubernetes用户都发现它们不需要修改调度程序。

调度程序也支持一个Webhook.这允许Webhook后端(调度程序扩展)过滤并优先考虑所选择的POD的节点。

下一步是什么

最后修改4月7日,2021年PM PST 7:54:修改扩展Kubernetes(A7175D4D3)