作者 | 倪朋飞

来源 | 漫谈云原生

头图 | 下载于视觉中国

Kubernetes v1.21 下个月就要发布了(v1.21.0 将于 4 月 8 日发布),本文梳理该版本带来的新特性,以便你为下个月的升级做好准备。

  PodSecurityPolicy 弃用

PodSecurityPolicy(PSP)是 Kubernetes 1.8 开始就支持的 Beta 特性,大量应用于容器的安全策略控制。但由于其 API 不够灵活、认证模型不够完善且配置更新繁琐等缺陷,PodSecurityPolicy 将在 v1.21 正式弃用[1],并将在 v1.25 中从代码库中删除。已经使用 PodSecurityPolicy 的用户建议迁移到 Gatekeeper[2]。

  不可变 ConfigMap/Secret 进入稳定版

当集群包含大量 ConfigMap 和 Secret 时,大量的 watch 事件会急剧增加 kube-apiserver 的负载,并会导致错误配置过快传播到整个集群。在这种情况中,给不需要经常修改的 ConfigMap 和 Secret 设置 immutable: true 就可以避免类似的问题。

注意,设置 immutable: true 之后,ConfigMap 和 Secret 内容更新时需要删除并重新创建,且使用它们的 Pod 也需要删除重建。

  IPv4/IPv6 双栈支持 Beta

IPv4/IPv6 双栈支持在 v1.20 的时候进行了重构,并将于 v1.21 中进入 Beta 版本(默认开启),kubeadm 也已经支持创建 IPv4/IPv6 双栈集群。该特性开启后,Kubernetes Service 和 Pod 会同时分配 IPv4 和 IPv6 两个地址。

注意,如果使用了 CNI 插件和云服务商扩展(Cloud Provider),CNI 插件和云服务商扩展也需要支持 IPv4/IPv6 双栈。

  CSIVolumeHealth Alpha 和 CSIStorageCapacity Beta

从 v1.21 开始,Kubernetes 支持 CSI 存储插件的 Volume 健康检查(Alpha 版),CSI 插件需要实现外部健康监控控制器。当 Volume 或者 Node 出现异常时,该控制器会向 Volume 所属的 PVC 以及使用该 PVC 的 Pod 发送一个异常事件。

CSIStorageCapacity 用于跟踪 CSI 存储容量并确保 Pod 调度到足够存储容量的节点上。该特性从 v1.21 开始进入 Beta 阶段,并默认开启。注意,使用该特性需要 CSI 驱动程序实现对应的接口。

  TTL 控制器 Beta

TTL 控制器用来自动清理已经结束的 Pod,如处于 Complete 或 Failed 状态的 Job。Pod 停止之后的 TTL 可以通过 .spec.ttlSecondsAfterFinished 来设置。

注意,该特性要求集群中各节点(包括控制节点)的时间一致,比如在所有节点中运行 NTP 服务。

  GenericEphemeralVolume Beta

通用临时卷(GenericEphemeralVolume)类似于 emptyDir 卷,但它更加灵活:

  • 存储可以是本地的,也可以是网络存储。

  • 卷可以有固定的大小,Pod 不能超量使用。

  • 卷可能有一些初始数据,这取决于驱动程序和参数。

  • 当驱动程序支持,卷上的典型操作(如快照、克隆、扩展等)也被支持。

  Kubelet 内存控制策略 Alpha

内存控制策略是 Kubelet 在 v1.21 中新增的一个 Alpha 特性,用于为 Pod 提供 NUMA 内存。Kubelet 新增了 --memory-manager-policy 用于配置内存控制策略,它支持两个策略:

  • 默认策略是 none,等同于内存控制策略未开启;

  • static 策略:为 Pod 分配 NUMA 内存并确保 Guaranteed Pod 预留足够的内存(Kubelet 状态保存在 /var/lib/kubelet/memory_manager_state 文件中)。

  ServiceLoadBalancerClass Alpha

以前 LoadBalancer 类型的服务都需要云服务商扩展(Cloud Provider)去配置云上负载均衡器,并且整个集群中只能运行一个 Cloud Provider。Kubernetes v1.21 新增的 ServiceLoadBalancerClass 特性允许一个集群中运行多个负载均衡器的实现,而 Service 可以通过 spec.loadBalancerClass 指定使用哪个具体实现(类似于 Ingress Controller)。

  PodDeletionCost Alpha

以前从 ReplicaSet 删除 Pod 时只能设置副本数量而不能指定要删除的 Pod,而 Kubernetes v1.21 新增的 PodDeletionCost 特性允许用户设置哪些 Pod 优先删除。使用该特性时需要给 Pod 增加一个 annotation controller.kubernetes.io/pod-deletion-cost,其值表示删除一个 Pod 的成本,值越小代表越优先删除。当 annotation 不存在时,表示其删除成本为 0。

  Indexed Jobs Alpha

通常,当使用 Job 来运行分布式任务时,用户需要一个单独的系统来在 Job 的不同 worker Pod 之间分配任务。比如,设置一个工作队列,逐一给每个 Pod 分配任务。Kubernetes v1.21 新增的 Indexed Job 会给每个任务分配一个数值索引,并通过 annotation batch.kubernetes.io/job-completion-index 暴露给每个 Pod。使用方法为在 Job spec 中设置 completionMode: Indexed。

  TopologyAwareHints Alpha

服务拓扑(Service Topology)在 Kubernetes v1.21 中已弃用,并将在 v1.22 中删除。Kubernetes v1.21 新增的拓扑感知提示提供了类似的功能。该特性开启后,EndpointSlice 控制器将填充 EndpointSlice 中每个 Endpoint 上的提示字段,以将其分配到一个区域。然后,诸如 kube-proxy 这样的组件在配置请求路由时就可以使用这些提示。

  其他需要留意的新特性

  • CronJob 进入稳定版本,已有用户注意切换 API 版本到 apiVersion: batch/v1。

  • Sysctls 进入稳定版本,用户终于有一个稳定的 API 来配置 Sysctl 了。

  • Pod disruption budgets(PDB)进入稳定版本,已有用户注意切换 API 版本到 apiVersion: policy/v1。

  • RootCAConfigMap 进入稳定版本,kube-controller-manager 将会在每个 namespace 发布一个名为 kube-root-ca.crt 的 ConfigMap,内容是 ca.crt,可用来验证 Kubernetes API 连接。

  • EndpointSlice 进入稳定版本,已有用户注意切换 API 版本到 apiVersion: discovery.k8s.io/v1。

  • ServiceAccountIssuerDiscovery 进入稳定版本,该特性使得用户能够用联邦的方式结合使用 Kubernetes 集群(_Identity Provider_,标识提供者)与外部系统(_relying parties_, 依赖方)所分发的服务账号令牌。

  • CRIContainerLogRotation 进入稳定版本,kubelet 将会自动为 containerd 等 CRI 容器运行时轮换日志。

  • 结构化日志(Structured Logging)进入 Beta,很多组件的日志都改成以 JSON 格式记录,这样第三方日志处理系统就可以方便地从日志中解析出日志所对应的资源对象和资源属性。

  • EfficientWatchResumption 进入 Beta,kube-apiserver 重启后 watch 缓存将更高效的恢复,更好的支持大规模集群。

  • CSIServiceAccountToken 进入 Beta,使得 CSI 驱动程序可以获取 Pod 的 service account token。

  • GracefulNodeShutdown 进入 Beta,Kubelet 将会检测 Node 的状态并在 Node 关闭前终止其上运行的 Pod(使用前需要配置 ShutdownGracePeriod 和 ShutdownGracePeriodCriticalPods)。

  • Network Policy 支持设置端口范围(port 和 endPort),大量端口时不再需要每个端口单独列出。

参考链接:

https://github.com/kubernetes/kubernetes/pull/97171

https://github.com/open-policy-agent/gatekeeper

你觉得这些特性怎么样?

欢迎来评论区聊聊~


CSDN协同行业大佬
打造13长热门知识图谱及IT成长路线
助力千万IT人成长,快速实现职场进阶!
更多精彩推荐
☞Kubernetes 和 Docker,到底什么关系?☞PassMark 更新排行,苹果 M1 杀疯了☞干货!Redis集群工作原理解析
点分享点收藏点点赞点在看

抢先看!Kubernetes v1.21 新特性一览相关推荐

  1. Java8-19新特性一览 ,认识全新的前沿技术

    文章目录 Java8-19新特性一览 ,认识全新的前沿技术 前言 你的收获 Java发展趋势 准备工作 新特性 1.接口private 1).说明 2).案例 3).注意 2.类型推断 1).说明 2 ...

  2. k8s v1.17 新特性预告: 拓扑感知服务路由

    大家好,我是 roc,来自腾讯云容器服务(TKE)团队,今天给大家介绍下我参与开发的一个 k8s v1.17 新特性: 拓扑感知服务路由. 01 名词解释 拓扑域: 表示在集群中的某一类 " ...

  3. Kinect SDK v1.7 新特性、交互框架与新概念

    Kinect SDK v1.7 新特性.交互框架与新概念 zouxy09@qq.com http://blog.csdn.net/zouxy09 2013年3月18日,微软Kinect for Win ...

  4. 深入解析 | Oracle Database 20c 十大新特性一览

    在2020年2月14日,Oracle 正式宣布在 Oracle Cloud 发布 Database 20c 的预览版,同时发布了所有的官方文档. 为了和大家及时分享关于 Oracle 20c 引人瞩目 ...

  5. Kubernetes 1.6新特性系列 | 动态配置和存储类

    导读: Dynamic Provisioning的目标是完全自动化存储资源的生命周期管理,让用户无需过多的关注存储的管理,可以按需求自动动态创建和调整存储资源.StorageClass本质上是底层存储 ...

  6. Java11新特性一览

    Java 11是自Java 8以来的又一个LTS版本,是目前全球使用最多的LTS版本之一.下边我们看一下JAVA11的新特性 字符串API增强 在Java 11中,针对String的操作进一步得到加强 ...

  7. JDK 13 新特性一览

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:木九天 my.oschina.net/mdxlcj/blog ...

  8. 【机器学习】scikit-learn 1.0 版本重要新特性一览

    1 简介 就在几天前,著名的机器学习框架scikit-learn在pypi上释放了其1.0rc1版本,这里给大家科普一下,版本号中的rc是Release Candidate的简称,代表当前的版本是一个 ...

  9. [转]ES6、ES7、ES8、ES9、ES10新特性一览 (个人整理,学习笔记)

    目录 1.ES6新特性(2015) 1.1模块化(Module) 1.1.1导出(export) 1.1.2导入(import) 1.2箭头(Arrow)函数 1.2.1箭头函数的结构 1.3默认参数 ...

最新文章

  1. 界面怎么使用pip_从零开始学Python——10Pyinstaller的使用
  2. OpenCV(项目)车牌识别3 -- 模板匹配
  3. python学习手册翻译很差吗-为什么要翻译?值得坚持下去么?
  4. EOS开发基础之五:使用cleos命令行客户端操作EOS——智能合约之Exchange
  5. Spark:获取dataframe某列最大值
  6. 3d button - where is OS type and version detected
  7. 【FLink】Flink exactly once 每次都是产生一个新的生产者吗?
  8. 算法:找出存在子字符串的最先位置28. Implement strStr()
  9. (七)linux操作系统-linux韩顺平2021笔记
  10. 计算某天是星期几-泽勒算法
  11. python 声音指纹识别,Python-samp中的Dejavu音频指纹识别
  12. 微信小程序中下载app的方法
  13. 使用两种方式,Android 发送文件到指定邮箱(带多个附件)
  14. IO流-节点流和处理流(涵盖底层调用关系)
  15. 迷你英雄无限服务器没了吗,迷你英雄:无限无法连接服务器是什么原因
  16. python读取excel数据并进行数据可视化_用Python处理Excel的数据,并将之可视化
  17. 加密网络空间安全厂商“观成科技”获数千万A轮融资,方广资本领投
  18. Instant Client Light:unsupported server character set ZHS16GBK
  19. Keystone详解
  20. Keil错误 error: #5: cannot open source input file XXX / XXX.h:

热门文章

  1. c语言 单词变复数_【热点】浅谈 :怎样学好C语言?
  2. spring.profiles.active配置了没生效_微服务架构之「 配置中心 」
  3. 震撼!7月12日山东滨州,中科院向起电的雷暴云发射拖带金属导线专用火箭人工引雷!...
  4. 【首次开放】京东商城AI项目实战学习
  5. 张平文当选美国工业与应用数学学会会士
  6. 华为5G英国首秀,BBC主持人震惊了!到底网速有多快?
  7. 深度学习-计算机视觉--图像增广
  8. mysql 8.0 手动安装教程_mysql 8.0.13手动安装教程
  9. hbase常见处理方式
  10. node.js util全局变量和事件驱动events