• 广州拟增38家长护险机构 白云海珠分布最多 2019-07-17
  • 高考评卷0分或满分须100%复核 数学想得满分需过二十几道关 2019-06-29
  • 无论谁说自己的理论是马克思主义理论都不算数,只有他的理论符合客观事实及其规律才是真理,否则便是谬误。 2019-06-29
  • 6月15日有回复:陕西省教育厅等单位回复22条网友留言 2019-06-21
  • 社评:香格里拉对话,美国难控制亚洲人心 2019-05-31
  • 南宁·东盟人才交流月高技能人才系列活动启动 2019-05-09
  • 怎么偷梁换柱?请具体说明[微笑] 2019-05-09
  • 第22届古镇灯博会开启金秋灯饰原创盛典,预登记系统现已上线 2019-05-02
  • 公车改革 整治“车轮上的腐败” 2019-05-02
  • 儿童掉进冰窟 小伙用双手砸出“生命通道” 2019-04-24
  • 特朗普向朝鲜大将敬了个礼,遭美国媒体猛批 2019-04-24
  • 在最平凡的岗位践行初心和使命 2019-04-19
  • 新疆维吾尔自治区交通运输厅 2019-04-03
  • 紫光阁中共中央国家机关工作委员会 2019-04-03
  • 北京百子湾车祸致2死3伤 小客车女司机系无证驾驶 2019-03-25
  • Kubernetes 已足够成熟?详细解读 1.15 新版本的多项关键特性

    浙江6十1开奖号码查询 www.2k34.net 为促进社区发展,运维派寻求战略合作、赞助、投资,请联系微信:helloywp

    作者 | 华为云原生团队
    2019 年 6 月 20 日,Kubernetes 重磅发布了 1.15 版本,不管你是 Kubernetes 用户,还是 IT 从业者都不能错过这个版本。

    1.15 版本主要围绕可扩展性展开,北向 API 接口方面 API Machinery SIG 致力于催熟 CRD 以提升 API 可扩展性,南向插件集成方面,Storage SIG 和 Node SIG 则分别对 CSI 和设备监控插件可扩展性进行了优化。另外 Kubeadm 对 HA 集群配置也达到 Beta 可用,并发优化了证书管理相关功能。

    本文我们先从宏观上了解一下近期版本的变化趋势,然后再开始 1.15 版本的重点特性解读。

    Kubernetes 持续热情高涨

    在展开解读 1.15 的关键新特性之前,让我们先来回顾下社区过去几个版本的特性发布情况。值得一提的是:无论从新特性数量,还是特性的成熟度分布来看,Kubernetes 依旧保持着相当的活力,社区开发者用实际行动回应了业界盛传“Kubernetes 已经足够成熟,项目正在变得无聊 (Boring)”的说法。

    各版本新特性数量基本持平 ?

    从新特性数量上看,Kubernetes 过去一个版本发布的特性数量并无明显趋势性变化。由于特性颗粒度的差异,每个版本发布的新特性数量存在小幅波动,属于正常现象。

    看特性成熟度分布,Alpha 特性比例依旧可观 ?

    对比分析过去几个版本的特性成熟度,不难发现 Alpha 新特性的占比稳定在 20%~40% 之间。按照社区惯例,当一项全新的功能被添加时,会在特性说明中打上 Alpha 标记。持续稳定甚至小幅上涨的 Alpha 特性占比说明社区仍然在大量开发全新的特性,而不是满足于既有功能的加固。

    Kubernetes 重点特性解读

    经过分析 Kubernetes 近几个版本的变化,我们发现特性主要集中在 Storage、Node、API-Machinery、Network、Scheduling 等 SIG,而这些 SIG 大都致力于可护展性增强,以便于下游用户在享受稳定核心的同时,轻松扩展定制自己的插件。

    从最新发布的 1.15 版本来看,以下几个变化需要重点关注。

    API 聚焦可扩展性增强 ?

    Kubernetes API 的扩展能力主要由 CRD(Custom Resource Definition)以及 Admission Webhook 提供。1.15 版本在这两方面都有重要的更新。

    CRD,大步迈向 GA

    CRD 的新开发主题一直都围绕着数据一致性以及提供更加接近 Kubernetes 原生 API 的能力。用户不应该感知到到底是以 CR(Custom Resource)还是以原生的资源对象形式与 Kube APIServer 进行交互。社区目前正迈着大步,计划将在接下来的某个版本中将 CRD 以及 Admission Webhook GA(升级为稳定版本)。

    朝着这个方向,社区重新思考了基于 OpenAPI 的 CRD 验证模式,从 1.15 开始,根据结构模式(Structural Schema)的限制检查每个字段。这基本保证了能够像原生的 API 对象一样提供完整的 CR 校验能力。在 v1beta1 API 中,非结构模式(non-Structural Schema)仍然保持工作状态。但是任何严格的 CRD 应用程序都应该在可预见的将来迁移到结构模式。

    1) CRD 多版本之间通过 Webhook 转换特性 [Beta]

    从 1.15 版本开始,支持运行时不同版本之间的转换,长期目标是让用户像原生 API 资源一样使用 CRD 的多版本。这一特性是 CRD 在 GA 道路上一步重大的飞跃。

    2) CRD OpenAPI 发布特性 [Beta]

    CRD 的 OpenAPI 发布特性将会在 Kubernetes 1.15 中 Beta,当然只是针对结构模式的 CRD。次特性对于用户自定义 API,提供了与 Kubernetes 原生 API 一样的文档说明。

    3) CRD 未知字段裁剪(Prune)[Beta]

    CRD 未知字段裁剪特性是针对发送到 Kube APIServer 的对象中未知的字段进行移除,并且不会持久化存储。用户可以通过在 CRD 对象设置 spec.preserveUnknownFields: false 使用此未知字段裁剪特性。此特性对于数据一致性及安全都有一定的帮助。

    4) CRD 默认值设置 [Alpha]

    Kubernetes 1.15 结构模式的 CRD 默认值设置特性作为 Alpha 特性可用。用户可以通过 OpenAPI 校验模式的 default 关键词指定默认值。避免了用户原来只能通过 Admission Webhook 方式设置 CRD 对象的默认值带来的额外开发消耗。

    Admission Webhook 重新调用(Reinvocation)与增强

    1) Mutating 和 Validating Admission Webhook 已经成为扩展 API 的主流选择。在 1.15 以前,所有的 webhook 只会按照字母表顺序调用一次,这样就会导致一个问题一个更早的 webhook 不能应对后面的 webhook 的更新,这可能会导致未知的问题,例如前面的 webhook 设置某个 pod 的启动参数,而随后的 webhook 将其更改或者移除了。

    1.15 版本引入 Reinvocation 特性允许用户通过 MutatingWebhook 配置 reinvocationPolicy: IfNeeded 指定 Mutating Webhook 重新调用。

    2) Admission Webhook 引入了 objectSelector 来控制通过标签选择特定的对象进行准入控制。

    3)允许 Admission Webhook Server 使用任意的端口(不限制只能是 443)。

    Node SIG 提供监控插件框架用于异构硬件监控 ?

    新版本很好的解决了异构硬件设备监控难题,现在不需要修改 Kubelet 代码就可以实现各种指标(如 GPU、显存利用率等)监控。

    新版本通过新的监控插件框架将 Kubelet 与设备监控处理逻辑解耦,很好的解决了以往 Kubelet 代码管理和 K8s 集群运维之间的痛点。

    由图可见本框架主要包含 Kubelet 和 Device Monitoring Agent 两大部分:

    1、Kubelet

    Kubelet 增加了一个 GRPC 服务,监听在 /var/lib/kubelet/pod-resources/kubelet.sock,提供 pod resources 的 list 查询接口。

    2、Device Monitoring Agent

    a. Device Monitoring Agent 提供 metric 接口对外提供设备监控指标查询功能。

    b. Device Monitoring Agent 向 Kubelet 的上述 GRPC 服务发送 List 请求,取得所有 pod resources(包含节点上所有 pod 的所有 container 分配的 device 类型和 device id)。

    c. Device Monitoring Agent 根据设备类型过滤获取容器的设备 ID,通过设备驱动接口获取容器使用的设备的监控指标,并把二者关联到 container 、pod 上。

    新的框架将会带来诸多便利:

    1、设备监控功能与 Kubelet 接口解耦

    a. Kubelet 不需要提供设备的监控指标;

    b. 设备的新增监控指标不需要升级 Kubelet,而是更新设备监控代理版本即可;

    c. 新增设备不需要升级 Kubelet,而是增加部署设备监控代理的 DaemonSet 即可;

    d. 未解耦前,Kubelet 会检测所有支持的设备是否存在,即使节点并没有安装该设备。

    2、设备供应商负责发布和维护设备监控代理,设备供应商在如何运行和监控它们方面拥有深厚的专业知识,可以提供权威的设备监控代理。

    3、K8s 集群的管理员只需要安装需要的设备监控代理即可。

    Scheduling SIG 发布 Scheduler Framework 加强调度器扩展定制能力 ?

    Scheduler Framework 终于在 1.15 迎来了 Alpha 版本。Scheduler Framework 最早在 2018 年初提出,主要是为了解决日益增加的定制化调度需求。Scheduler Framework 在原有的 Priority/Predicates 接口的基础上增加了 reserve, pre-bind 等十几个接口用于相应前处理及后处理。在 1.15 中,Scheduler Framework 实现 QueueSort, Prebind, Postbind, Reserve, Unreserve 和 Permit 接口,这些接口为后继更多的调度策略提供了基础,比如 gang-scheduling。

    然而,出于设计上的延续性考虑,目前 Scheduler Framework 仍以 Pod 为单位进行调度,而计算类(离线)任务调度往往需要考虑工作负载中相关的 Pod 按组进行调度,例如 faire-share。现在的 Scheduler Framework 还不能有效的解决。所幸针对这一能力缺失,社区已经有相应的项目在 Kubernetes 上支持计算类(离线)任务,例如 Volcano (//github.com/volcano-sh/volcano)。

    Storage SIG 持续改善 CSI ?

    在 Kubernetes v1.15 中,SIG Storage 继续工作,以支持将 in-tree 插件迁移到 CSI(Container Storage Interface,容器存储接口)。SIG Storage 致力于使 CSI 具有与 in-tree 功能相同的特性,包括调整大小、内联卷等功能。SIG Storage 在 CSI 中引入了一些新的 Alpha 功能,这些功能在 Kubernetes 存储子系统中还不存在,如卷克?。╲olume cloning)等。

    卷克隆允许用户在提供新卷时将另一个 PVC 指定为“数据源(Data Source)”。如果底层存储系统支持此功能并在其 CSI 驱动程序中实现“CLONE_VOLUME”功能,则新卷将成为源卷的克隆。

    Kubeadm 的 HA 集群配置达到 Beta 可用 ?

    作为社区内置安装工具的 Kubeadm,何时支持部署 HA 集群一直是个热门话题。在本次发布的 1.15 版本中,Kubeadm 对 HA 集群配置的支持终于达到 beta——用户可以直接使用 init 和 join 两个 Kubeadm 命令来部署 HA 集群。乐于折腾的用户可以参考社区文档在小范围生产环境中使用。https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/

    Kubeadm 的证书管理功能在 1.15 中也得到了改进,用户可以在证书失效前通过 kubeadm alpha certs renew 平滑地刷新它们。https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-alpha/#cmd-certs-renew

    Kubeadm 的 configuration(API) 在 1.15 版本中引入了 v1beta2 版本,主要是增加了一组证书加解密密钥的配置字段 CertificateKey,便于用户在使用 Kubeadm 部署 HA 控制面时,直接使用被加密保存在集群 Secret 中的证书。此外,用户可以通过 kubeadm alpha certs certificate-key 命令来直接生成这对密钥。

    关于跟多 Kubeadm 当前相关的 Alpha 特性,可以查看相关官方文档:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-alpha

    随着 Kubernetes 越来越多地被用在多云、混合云部署场景,集群生命周期管理的标准化一直是众人期待的一大方向。自 v1.13 版本 GA 之后,Kubeadm 的改动主要聚焦在优化使用体验上。而集群生命周期整体流程的打通,特别是实现跨平台的集群管理,配合日渐活跃的 ComponentConfig 以及 Cluster API 两个新项目,相信很快会有实质性的进展。

    附图:集群生命周期 SIG 相关项目成熟度

    小结

    经过 5 年的发展,Kubernetes 核心的基本功能已相对稳定,具备大规模生产可用水平。但是客户需求往往是多种多样的,社区从很早就意识到这个问题,因而提供了各种接口(CRD、CRI、CSI、CNI 等),希望在保持 Kubernetes 独立的条件下,尽量满足用户差异化的需求,这从 1.15 发布的主要特性也可以看出来。

    华为云原生团队坚定的认为,Kubernetes 社区未来会继续着重围绕可扩展性、易用性以及稳定性规划发展路标,丰富平台面向各种应用场景的功能接口,以稳定、健壮、高可扩展的平台推动云原生应用生态百花齐放。

    网友评论comments

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    暂无评论

    Copyright ? 2012-2019 www.2k34.net - 运维派 - 粤ICP备14090526号-3
    扫二维码
    扫二维码
    返回顶部
  • 广州拟增38家长护险机构 白云海珠分布最多 2019-07-17
  • 高考评卷0分或满分须100%复核 数学想得满分需过二十几道关 2019-06-29
  • 无论谁说自己的理论是马克思主义理论都不算数,只有他的理论符合客观事实及其规律才是真理,否则便是谬误。 2019-06-29
  • 6月15日有回复:陕西省教育厅等单位回复22条网友留言 2019-06-21
  • 社评:香格里拉对话,美国难控制亚洲人心 2019-05-31
  • 南宁·东盟人才交流月高技能人才系列活动启动 2019-05-09
  • 怎么偷梁换柱?请具体说明[微笑] 2019-05-09
  • 第22届古镇灯博会开启金秋灯饰原创盛典,预登记系统现已上线 2019-05-02
  • 公车改革 整治“车轮上的腐败” 2019-05-02
  • 儿童掉进冰窟 小伙用双手砸出“生命通道” 2019-04-24
  • 特朗普向朝鲜大将敬了个礼,遭美国媒体猛批 2019-04-24
  • 在最平凡的岗位践行初心和使命 2019-04-19
  • 新疆维吾尔自治区交通运输厅 2019-04-03
  • 紫光阁中共中央国家机关工作委员会 2019-04-03
  • 北京百子湾车祸致2死3伤 小客车女司机系无证驾驶 2019-03-25
  • 江苏快三专家计划 天天炫斗下载 拳皇98ol攒钻 庆南fcvs柔佛新山 搜集印度现金投注 快乐12前三直遗漏数据 功夫时时彩计划王免费版 龙珠激斗最新版破解版 北京pk10官网与黑彩 捕鱼王游戏机 多特蒙德足球战术 霍芬海姆队徽含义 摩纳哥国际大学留学 真人街机捕鱼大圣捕鱼破解版 时时彩计划群发器 河南11选5基本走势图