写点什么

Kubernetes Release Note 解读(1.15, 1.16)

  • 2020-03-13
  • 本文字数:3405 字

    阅读完需:约 11 分钟

Kubernetes Release Note 解读(1.15, 1.16)

本文作者 | 张晓宇、黄珂、鲁金达、李传云、陈俊、高相林

前言

  • Kubernetes v1.15 由 25 个增强功能组成:2 个进入稳定,13 个进入 Beta,10 个进入 Alpha。

  • Kubernetes v1.16 由 31 个增强功能组成:8 个进入稳定,8 个进入 Beta,15 个进入 Alpha。


因此从 1.14 尽快升级至 1.16 非常必要,以下将一一进行解读。

Node

1.15

  • 已废弃的 kubelet 安全控制参数 AllowPrivileged、HostNetworkSources、HostPIDSources 和 HostIPCSources 已被移除。取而代之的是一些准入控制(例如 PodSecurityPolicy)来增强这些限制;

  • 已弃用的 kubelet 启动参数 --allow-privileged 已被删除,相关 kubelet 脚本需要同步进行清理;

  • kubelet 仅收集节点、container runtime、kubelet、Pod 和容器的 cgroups metrics。

1.16

Node 的 labels beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready 和 beta.kubernetes.io/kube-proxy-ds-ready 将不再打给新的 Node,而被以下 label 替换:


* beta.kubernetes.io/masq-agent-ds-ready -> node.kubernetes.io/masq-agent-ds-ready* beta.kubernetes.io/kube-proxy-ds-ready -> node.kubernetes.io/kube-proxy-ds-ready* beta.kubernetes.io/metadata-proxy-ready -> cloud.google.com/metadata-proxy-ready
复制代码


  • kubelet 的功能启动参数 HugePages, VolumeScheduling, CustomPodDNSPodReadinessGates 已经被移除。

  • --containerized 在 1.14 被废弃,在 1.16 正式被移除。

  • Node 的 label beta.kubernetes.io/osbeta.kubernetes.io/arch 在 1.14 被废弃,在 v1.18 将正式被移除。

  • cadvisor metric 的 pod_name 字段 container_name 被 pod 和 container 替代,所有 Prometheus 相关的查询需要做相关更新升级。

scheduler

1.15

  • 当 QOS 为 Best effort 的 Pod 的 Tolerations 出现冲突时,即它的 key 和 effect 均相同,则用使用最后一个 Toleration 作为最终调度的依据。

  • PodAffinity 的性能优化,提升了约两倍。

1.16

  • 调度器使用 v1beta1 Event API。涉及改 API 的相关的工具需要同步更新。

  • Pod 打散限制已经进入 alpha 阶段。用户可以通过这些限制在整个集群对 Pod 进行打散部署。

CRD

1.16

  • Custom resources:CRD 作为对 Kubernetes 的扩展,被广泛运用。自 v1.7 版本起,CRD 已经在 Beta 版中可用。在 1.16 版本中,CRD 正式步入 GA 阶段(稳定阶段)。

  • Admission webhook:Admission webhooks 作为 Kubernetes 扩展机制被广泛使用。自 v1.9 版本以来已经在 Beta 版中可用。在 1.16 版本中,Admission webhook 也正式步入 GA 阶段(稳定阶段)。

  • Overhauled metrics:Kubernetes 广泛使用一个全局 metrics registry 来注册要公开的 metrics。通过实现 metrics registry,metrics 可以以更透明的方式注册。而在这之前,Kubernetes metrics 被排除在任何稳定性需求之外。

  • Volume Extension:新版本有大量和 Volume 及 Volume 修改相关的增强。CSI 规范中对 Volume 调整的支持正在转向 Beta 版,它允许任何 CSI spec Volume plugin 都可以调整大小。

API Server

1.16

  • PodPriority 默认为 true,相关 featuregate 将在 1.18 被废除。

  • WatchBookmark 特性进入 beta 阶段,并默认开启。该功能修复了长时间没有获得 event 的 Watch 请求在下一次 Watch 请求时需要重新 List 资源的问题。

API changes

  1. extensions/v1beta1, apps/v1beta1, and apps/v1beta2 APIs 均不再被默认支持


  • 所有 apps/v1beta1 和 apps/v1beta1 下的资源,使用 apps/v1 替代。

  • 位于 extensions/v1beta1 下的资源 daemonsets, deployments, replicasets, etc. 使用 apps/v1 替代。

  • 位于 extensions/v1beta1 下的资源 networkpolicies,使用 http://networking.k8s.io/v1 替代。

  • 位于 extensions/v1beta1 下的资源 podsecuritypolicies,使用 policy/v1beta1 替代。


使用 --runtime-config 标志可以临时启用这些资源(不建议使用,建议切换到更稳定的 Scheme 版本):


apps/v1beta1=trueapps/v1beta2=trueextensions/v1beta1/daemonsets=true,extensions/v1beta1/deployments=true,extensions/v1beta1/replicasets=true,extensions/v1beta1/networkpolicies=true,extensions/v1beta1/podsecuritypolicies=true
复制代码


这些资源的 API 将在 1.18 中被完全删除。


  1. Aggregated discovery requests 现在会 timeout. Aggregated API servers 必须在 5 秒内完成 discovery calls。(其他请求可以长一些)


使用启动参数 EnableAggregatedDiscoveryTimeout=false 可以将超时时间延长至之前的 30 秒。但是 EnableAggregatedDiscoveryTimeout 将会在 1.17 时被移除。

storage

1.15


之前要想使用 CSI,只能通过 PV 和 PVC 组合的方式。有了 Inline CSI volume 这个能力,可以在定义 Pod 的时候,声明一个与其密切相关的 CSI Volume。Volume 随着 Pod 的创建而创建,Pod 的销毁而销毁。



在新建 PVC 时,可以克隆已经存在的一个 PVC,包括卷的规格以及卷的数据。可用于数据迁移,构建模拟线上环境等场景。需要注意的是该能力只会支持 CSI,In-tree 插件和 FlexVolume 不会有支持。



过去 kubelet 通过定期扫描文件方式采集 ephemeral-storage 空间使用情况。在 1.15 中引入了 project quotas。project quota 相比定期扫描方式,拥有更快的速度和准确性。如果文件被打开,后来删除了,扫描的方式是无法追踪到它,实际文件还占着空间,点击了解更多


未来,还可以利用 project quotas 的能力,来强制限制每个 Volume 可使用的空间(拒绝达到空间后的 IO 写操作)。这样可以避免因为某个不重要的容器的存储写满,导致整个 Pod 被驱逐的情况,也更加贴近 “isolation” 的语义。

Feature 稳定性变化

  • PVs 在线容量调整进入 Beta 阶段。


在线容量调整,可以在 Pod 不进行重建的情况下,完成容量的扩容。


  • SubPath 支持使用环境变量进入 Beta 阶段。


利用 subPath 可以实现多个 Pod 使用同一 Volume 的子路径。使用 subPathExpr 参数,可以使用 Downward API 环境变量来为每个 Pod 构建独特的子路径。比如以每个 Pod 的 Name(subPathExpr: $(POD_NAME) 将 Volume 的子路径绑定到 Pod 的同一个挂载点,实现 Pod 间数据的隔离。

1.16

  • CSI 支持 Windows。Windows 用户福音,从 1.16 开始,CSI 也支持 Windows node 了。

  • 克隆 PVC 进入 Beta 阶段。

  • Ephemeral Inline CSI volumes 支持进入 Beta 阶段。

  • CSI Volume resizing 支持进入 Beta 阶段。

Network

1.15

  • kube-proxy 允许在使用 ipvs 时无感重启、切换模式时不再自动清理规则、禁用 UDP 平滑终止。

  • service.spec.externalName 允许结尾有个 dot。

  • 其它一些小的 bugfix

1.16

IPv4/IPv6双栈(alpha)

可以将 IPv4 和 IPv6 地址分配给 Pods 和 Services,为 IPv6 化进程迈出重要的一步,在 Kubernetes 集群上启用 IPv4/IPv6 双协议栈可提供下面的功能:


  • 每个 pod 分配一个 IPv4 和 IPv6 地址;

  • 可使用支持 IPv4 or IPv6 的 Service;

  • Pod 的出站流量可通过 IPv4 和 IPv6 路由。

EndpointSlice API(alpha)

当前的一个 Service 对象在实现上对应了一个 K8s Endpoints 对象,该对象包含了所有的 backend Pods 信息,随着 backend Pods 的规模的增大,单个 backend Pod 的 Add/Update/Delete 对管控组件 (apiserver, etcd, endpoints-controller, kube-proxy) 会造成很大的压力。


通过引入 EndpointSlice API,将 backend Pods 信息分片放入不同 EndpointSlice (一个 Service 包含多个 EndpointSlice 对象,一个 EndpointSlice 包含多个 Endpoint <一个 Endpoint 对应一个 backend 实例信息> - 默认最多 100 个) 解决性能问题的同时也为提供其他网络特性保留了高度的扩展性,如在 Endpoint 中包含了 backend 服务实例的拓扑位置信息 (region, zone,hostname 等) 可以用来帮助就近路由访问 Service 的请求。


对于 Service LoadBalancers 的 Finalizer Protection 进入 beta 阶段


这个功能确保 Service 资源对象不会被彻底删除直到相关的 load balancer 被删除。


API Changes


  • NetworkPolicy: extensions/v1beta1 弃用,用 networking.k8s.io/v1 API 替代;

  • Ingress: extensions/v1beta1 弃用,用 networking.k8s.io/v1beta1 API 替代。


本文转载自云栖社区。


原文链接


https://yq.aliyun.com/articles/748085


2020-03-13 10:001709

评论

发布
暂无评论
发现更多内容

Ready to go: IPQ4029/IPQ4019 with IPQ8072- Connect more and enjoy faster

wifi6-yiyi

wifi IPQ4019 IPQ8072 ipq4029

介绍SDK(C++版)使用方法

矩视智能

深度学习 机器视觉

用友BIP,为打造世界一流光伏数智灯塔工厂聚势蓄能

用友BIP

光伏产业

数智化浪潮中,广电行业收入管理流程该如何重构?

用友BIP

广电行业

LLM在text2sql上的应用 | 京东云技术团队

京东科技开发者

人工智能 LLM 企业号10月PK榜 text2sql

第10期 | GPTSecurity周报

云起无垠

SpringBoot自动配置原理解析 | 京东物流技术团队

京东科技开发者

spring-boot 自动配置 企业号10月PK榜

实测亚马逊 AI 编程助手 Amazon CodeWhisperer

全栈若城

HarmonyOS SDK,赋能开发者实现更具象、个性化开发诉求

HarmonyOS SDK

鸿蒙 HarmonyOS

1024 特别企划|揭秘 StarRocks 社区背后的神秘力量(内涵福利)

StarRocks

开源社区 StarRocks

Mac电脑图像处理AI软件 Topaz Photo AI最新激活版

mac大玩家j

Mac软件 图像处理软件 图像编辑处理

开放原子开源基金会理事长孙文龙一行赴拓维信息参观交流

开放原子开源基金会

开源

支付宝权限问题大全|一文搞定,持续更新

盐焗代码虾

支付宝 经验分享 支付宝权限

ConceptDraw MINDMAP for mac(思维导图软件) 15.0.0.296中文激活版

mac

苹果mac Windows软件 ConceptDraw MINDMAP 思维导图绘制软件

万能音视频转换器Permute 3最新中文版

胖墩儿不胖y

Mac软件 音频处理工具 音频格式转换器

开放原子开源基金会联合主办的2023 CCF中国开源大会正式开幕

开放原子开源基金会

开源 CCF

语音识别技术在医疗健康领域的应用与挑战

来自四九城儿

语雀服务宕机带来的稳定性思考

老张

高可用 SRE 稳定性保障

2023 CCF中国开源大会「开放科学——引领未来科学研究发展的新范式分论坛」成功举办

开放原子开源基金会

利用观测云的 RUM 追踪和分析一个 VIP 用户的旅程

观测云

可观测性 用户体验分析

零代码开发、可视化界面!飞桨AI Studio星河社区带你玩转Prompt应用

飞桨PaddlePaddle

程序员 开发者 插件开发 Prompt

Java类加载机制详解 | 京东云技术团队

京东科技开发者

Java spi 类加载机制 企业号10月PK榜

生成式 AI 如何释放开发者的生产力?

LigaAI

人工智能 程序员 技术管理 AIGC 研发效能管理

ETL工具与数据处理的关系

RestCloud

数据处理 ETL

英特尔以创新边缘AI技术赋能未来智慧城市建设

E科讯

实况窗功能上线,即时掌握活动最新进展

HarmonyOS SDK

HarmonyOS

装备修理行业数智化转型之道

用友BIP

装备修理行业

用友BIP智能分析资产包正式发布,助力企业智能化决策!

用友BIP

智能分析

ConceptDraw PROJECT for Mac(项目管理软件) 14.0.0.302完整激活版

mac

项目管理工具 苹果mac Windows软件 ConceptDraw PROJECT

用友全球司库十问(五)| 企业如何主动管理资金流动性?

用友BIP

全球司库 流动性管理

Kubernetes Release Note 解读(1.15, 1.16)_安全_阿里云容器平台_InfoQ精选文章