2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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:001839

评论

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

探索PyTorch:介绍及常用工具包展示

霍格沃兹测试开发学社

图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制

NebulaGraph

图数据库 LDBC

充电桩组装行业生产管理MES系统解决方案

万界星空科技

制造业 生产管理系统 mes 充电桩 汽车充电桩

学编程前需要知道哪些编程语言呢?

小齐写代码

Vue3 - 表单的输入与绑定

霍格沃兹测试开发学社

新一代实时数据集成框架 Flink CDC 3.0 —— 核心技术架构解析

Apache Flink

2024 年 2 月 NFT 行业动态:加密货币飙升,NFT 市场调整

Footprint Analytics

blockchain NFT NFT链游

WebRTC构建点对点的即时通讯工具

鲸品堂

工具 企业号 3 月 PK 榜

火山引擎“数据飞轮”助力哪吒汽车智能创新

极客天地

一文让你知道,云计算环境下云管平台的重要性

行云管家

云计算 云服务 云管平台 云资源

机器人装行业MES/低代码平台免费使用/低代码MES

万界星空科技

低代码 低代码平台 mes 万界星空科技 机器人组装

为多渠道销售集成商品API接口

Noah

Python 初学者容易踩的 5 个坑

不在线第一只蜗牛

Java Python 开发语言

通过统一规划和团队整合,提升企业财务洞察

智达方通

全面预算管理 财务洞察

深度!10个头脑风暴必备的模板,让脑暴更高效和富有成效!

彭宏豪95

思维导图 头脑风暴 在线白板 在线协作 效率软件

软件测试学习笔记丨数据库基础知识

测试人

数据库 软件测试

印刷行业实施MES管理系统有哪些重要的意义

万界星空科技

工业互联网 制造业 mes 印刷行业 万界星空科技

实例带你了解GaussDB数据库的LOCK TABLE

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

RDS for MariaDB“智能DBA助手”,让运维效率嗖嗖地!

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟

深入理解位运算符及其在JavaScript中的应用

沉浸式趣谈

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