Kubernetes 1.23发布:下一个前沿

我们很高兴地宣布发布 Kubernetes 1.23,因为这是 2021 年K8s 的最后一个版本!

https://cloudnative.cc/uploads/article/20211209/3dd207133850fee5c6ea5084898ff205.jpeg

下一个前沿的主题代表了 1.23 中新的功能和渐进的增强、Kubernetes 的星际迷航参考历史以及发布团队中社区成员的成长。


Kubernetes 有星际迷航参考的历史。谷歌内 Kubernetes 的原始代号是 Project 7,参考了《Seven of Nine from Star Trek Voyager》。当然,Borg 是 Kubernetes 前身的名称。“下一个前沿”的主题延续了《星际迷航》的参考资料。“The Next Frontier”是两个星际迷航游戏的融合,《Star Trek V: The Final Frontier and Star Trek the Next Generation》。


“下一个前沿”代表了 SIG 发布章程中的一条线,“确保有一个一致的社区成员小组来支持跨时间的发布过程。” ,对于每个发布团队,我们都会与新的发布团队成员一起发展社区,对于许多人来说,这是他们在开源领域的第一个贡献。




此版本包含 47 项增强功能:11 项增强功能已升级到稳定版,17 项增强功能正在进入测试版,19 项增强功能正在进入 Alpha 版。此外,1 个功能已被弃用。


Kubernetes 1.23主要变化:

  • API 服务器请求的优先级和公平性


Kubernetes 1.23已升级到稳定版的功能:

  • IPv4/IPv6 双栈支持

  • 跳过卷所有权更改

  • 完成控制器后的TTL

  • 在 CSI 驱动程序对象中配置 FSGroup 策略

  • 通用临时内联卷

  • 通过静态分析防御记录Secret

  • 命名空间范围的入口类参数

  • 减少 Kubernetes 构建维护

  • 从 HPA API 到 GA


Kubernetes 1.23有三项值得注意的弃用功能

  • HPA v2beta2 API

  • FlexVolume

  • 针对klog的标志


Kubernetes 1.23两项功能也升级为Beta版

  • PodSecurity—取代了PodSecurityPolicy准入控制器。

  • 结构化日志—来自kubelet和kube-scheduler的大多数日志消息已经过转换,建议用户尝试JSON输出。


Kubernetes 1.23处于Alpha版的新功能

  • Kubernetes 1.23还包括几项现处于alpha版的新功能。这包括:

  • CRD的表达式语言验证—如果启用CustomResourceValidationExpressions,自定义资源将由使用通用表达式语言(CEL)的规则进行验证。

  • 服务器端字段验证—如果启用ServerSideFieldValidation,检测到请求中未知或重复的字段时,用户将收到来自服务器的警告。

  • OpenAPI v3—如果启用OpenAPIV,用户将能够为所有Kubernetes类型请求OpenAPI v3规范。



新版本功能丰富,增强之处超过45项,虽然这些新功能可能不会全部跻身Top 10,但一些功能对使用Kubernetes的人而言可能大有帮助。然而,真正的焦点在于1.23中已升级到正式版(即稳定版)的四个核心功能IPv4/IPv6双栈支持CronJobs(计划任务)临时卷HPA API



IPv4/IPv6双栈支持


有了IPv6/IPv6双栈支持,Kubernetes现在可以在集群中直接支持双栈模式。这意味着你可以将IPv4地址和IPv6地址分配给任何特定的pod或服务。这是使用.spec.ipFamilyPolicy字段来配置的,该字段可设置为以下值之一:


  • SingleStack

  • PreferDualStack

  • RequireDualStack


要使用双栈支持,你需要将.spec.ipFamilyPolicy设置为PreferDualStack或RequireDualStack。该功能在Kubernetes中默认启用,还包括通过IPv4和IPv6地址进行的pod集群外出站路由。



有了CronJobs功能,就可以在Kubernetes集群中运行周期性任务。Kubernetes CronJobs与Linux cron系统非常相似。CronJobs在Kubernetes 1.4问世后就已存在了,自从它在版本1.5中获得CRI支持以来就在生产环境被广泛接受。


CronJob在YAML文件中定义如下:

kind: CronJob


每10分钟输出一次“Hello Newstack”的示例CronJob清单文件可能如下所示:

apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: “*/10 * * * *”
jobTemplate:
spec:
template:
spec:
containers:
– name: hello
image: busybox
imagePullPolicy: IfNotPresent
command:
– /bin/sh
– -c
– date; echo Hello Newstack
restartPolicy: OnFailure




对于那些不知道cron语法的人来说,它就像这样:MINUTE(分钟) HOUR(小时) DAY OF MONTH(月日) MONTH(月) DAY OF WEEK(星期几)如果你不确定如何创建 cronjob,强烈建议从Crontab Guru(https://crontab.guru/)开始入手,该编辑器让你可以将值插入到cronjob,看看它们到底生成了什么。


临时卷


自Kubernetes 1.19以来,临时卷就已存在,让你可以为特定的pod创建卷,pod终止后删除临时卷。换句话说,这些是临时卷。


Kubernetes支持四种类型的临时卷,它们是:


  • emptyDir—Pod启动时可用的空卷,使用来自kubelet基本目录或内存中的存储空间。

  • configMap、downdownAPI、secret—将不同类别的Kubernetes数据注入到指定的Pod中。

  • CSI临时卷—类似其他类型的卷,但由特殊的CSI驱动程序提供。

  • 通用临时卷—由所有存储驱动程序提供(支持持久存储)


使用临时存储的示例清单文件可能如下所示:

kind: Pod
apiVersion: v1
metadata:
name: sample-storage-app
spec:
containers:
– name: storage-frontend
image: busybox
volumeMounts:
– mountPath: “/storage”
name: sample-storage-app-vol
command: [ “sleep”, “1000000” ]
volumes:
– name: sample-storage-app-vol
csi:
driver: inline.storage.kubernetes.io
volumeAttributes:





HPA API


Horizontal Pod Autoscaleer API对Kubernetes来说并不陌生。实际上,它在2016年就首次引入了。该功能负责自动扩展复制控制器、部署、副本集或状态集中的Pod数量。基于以下类型的指标来加以扩展:


  • 资源使用情况—当Pod超过内存或CPU使用情况的阈值时。

    这可以表示为原始值或百分比。

  • 自定义指标—这基于Kubernetes报告的指标(即每秒客户端请求率)。

  • 外部指标—这基于外部应用程序或服务提供的指标。


Autosaclers使用控制循环来运行,周期则由–horizontal-pod-autoscaler-sync-period标志来控制。默认值是15秒。在控制循环期间,控制器根据HorizontalPodAutoscaler定义中配置的指标来查询Pod的资源使用情况。




有关kubernetes1.23版本更新的更多细节,请查阅完整的发布说明:

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md
https://kubernetes.io/blog/2021/12/07/kubernetes-1-23-release-announcement/



0 个评论

要回复文章请先登录注册

咨询在线客服

1156141327

服务热线

13720071711

咨询时间 9:00 - 18:00

扫一扫联系我们

扫一扫联系我们