博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kubernetes 新概念 “Initializers”解析(上):能让你为集群编写插件的新模型
阅读量:6926 次
发布时间:2019-06-27

本文共 1249 字,大约阅读时间需要 4 分钟。

Kubernetes 如今能大展拳脚的原因有二:一是,因为他社区的无限优势;二是,源于 Kubernetes API 的灵活性,以及能轻而易举地在其上编写自定义扩展或者插件。而在本文中,我将深入剖析一个新的概念:Initalizers,它能在实际创建之前修改 Kubernetes 动态资源和可插拔方式。

Initializers 已经在 中作为 Alpha 功能。举个例子来说,我们可以在 Google Container Engine 中使用 Intializers 来扩展 Kubernetes 的基础功能,也可以根据需求实现新的 initializers 设置。

到目前为止,Kubernetes 只有在 plug-in 创建之前用准入控制插件来拦截资源。例如,你可以使用一个准入插件来强制让所有容器镜像来自特定的注册表,并组织其他镜像被部署在 pod 中。有相当多的准入控制器提供的功能,如执行限制、应用创建检查,并为缺少的字段设置默认值。

但准入控制器也存在如下问题:

  1. 他们被编译在 Kubernetes:如果你寻找的目标缺失,你需要 fork Kubernetes,并且写一个准入插件,并自己保持 fork。
  2. 您需要通过将其名称传递给 kube-apiserver 的 –admission-control 标志来启用每个准入插件 。在很多情况下,这意味着重新部署集群。
  3. 某些托管集群的供应商可能不允许自定义 API 服务器标志,因此可能无法启用源代码中可用的所有准入控制器。

于是便提出了动态/外部准入控制器来解决这些问题。目前有两种类型的插件: Initializers 和 web 钩子。Initializers 类似于准入控制器 plug-ins, 你可以在创建资源之前截取它。但它们也与准入控制器 plug-ins 不同, 因为它们不是 Kubernetes 源代码的一部分, 也不是编译而成的。你需要自己写一个控制器。

你能用 Initializers 做什么?

当你在创建 Kubernetes 对象之前截取它们时, 存在着无穷的变数: 你可以以任何方式来变换对象, 或防止对象被创建。

以下是对 Initializers 的一些想法,每个都在你的集群中实施一个特定的策略:

  • 如果该容器开放 80 端口或具有特定的注释, 则向该 pod 注入一个代理 sidecar 容器。
  • 将带有测试证书的卷自动插入测试命名空间中的所有 pod。
  • 如果一个隐藏密令少于 20 个字符(有可能是密码),则阻止其创建。

如果您不打算修改对象并拦截只读对象, web 钩子可能会是一个更快和更精简的选择来获取有关对象的通知。

上面列出的一些功能,例如注入 sidecar 容器或卷,也可以使用 Pod Presets 以牺牲灵活性来进行实现。

下期导读:将为你具体解析 Initializers,并指出其优势和缺陷,同时手把手教你开发你自己的 Initializers。

本文转自中文社区-

转载地址:http://bnujl.baihongyu.com/

你可能感兴趣的文章
模式识别之预测---一元线性回归
查看>>
响应式ie8兼容问题
查看>>
[16]CSS3 边框图片效果
查看>>
mysql group_concat方法用法
查看>>
[六省联考2017]摧毁“树状图”
查看>>
利用自然数的标准分解证明可数集合的所有有限子集形成的集合是可数集
查看>>
Excel中SEARCH和FIND函数的区别
查看>>
js继承综合
查看>>
[转译]5种方法提高你网站的登录体验
查看>>
关于Grunt
查看>>
linux基础名词
查看>>
(通用)Android App代码混淆终极解决方案【转】
查看>>
《平凡的世界》
查看>>
Mvc Filter
查看>>
数据绑定流程分析
查看>>
hibernate 实现多表连接查询(转载)
查看>>
对一个新知识领域的学习路径
查看>>
ios 获取当前时间
查看>>
算法之求质数(Java语言)
查看>>
Python之旅.第三章.函数
查看>>