Kubernetes 1.23发布:双栈IPv4/IPv6、CronJobs和临时卷
作者:Jack Wallen 编译:沈建苗
在云原生开发界,一眨眼工夫,你就会错过某些东西。发展速度就是这么快,快到仿佛昨天(实际上是8月22日)刚发布了Kubernetes 1.22,今天就迎来了Kubernetes 1.23 GA(正式版)。这个新版本功能丰富,增强之处超过45项(其中11项已升级到稳定版,15项已改进,19项是全新的)。虽然这些新功能可能不会全部跻身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
有了CronJobs功能,就可以在Kubernetes集群中运行周期性任务。Kubernetes CronJobs与Linux cron系统非常相似。CronJobs在Kubernetes 1.4问世后就已存在了,自从它在版本1.5中获得CRI支持以来就在生产环境被广泛接受。
CronJob在YAML文件中定义如下:
kind: CronJob
每10分钟输出一次“Hello Newstack”的示例CronJob清单文件可能如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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驱动程序提供。
•通用临时卷—由所有存储驱动程序提供(支持持久存储)
使用临时存储的示例清单文件可能如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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 v2
Horizontal Pod Autoscaleer API对Kubernetes来说并不陌生。实际上,它在2016年就首次引入了。该功能负责自动扩展复制控制器、部署、副本集或状态集中的Pod数量。基于以下类型的指标来加以扩展:
•资源使用情况—当Pod超过内存或CPU使用情况的阈值时。这可以表示为原始值或百分比。
•自定义指标—这基于Kubernetes报告的指标(即每秒客户端请求率)。
•外部指标—这基于外部应用程序或服务提供的指标。
Autosaclers使用控制循环来运行,周期则由–horizontal-pod-autoscaler-sync-period标志来控制。默认值是15秒。在控制循环期间,控制器根据HorizontalPodAutoscaler定义中配置的指标来查询Pod的资源使用情况。
弃用的功能和升级为Beta版的功能
Kubernetes 1.23也有三项值得注意的弃用功能。这包括:
•HPA v2beta2 API
•FlexVolume
•针对klog的标志
两项功能也升级为Beta版,包括:
•PodSecurity—取代了PodSecurityPolicy准入控制器。
•结构化日志—来自kubelet和kube-scheduler的大多数日志消息已经过转换,建议用户尝试JSON输出。
处于Alpha版的新功能
Kubernetes 1.23还包括几项现处于alpha版的新功能。这包括:
•CRD的表达式语言验证—如果启用CustomResourceValidationExpressions,自定义资源将由使用通用表达式语言(CEL)的规则进行验证。
•服务器端字段验证—如果启用ServerSideFieldValidation,检测到请求中未知或重复的字段时,用户将收到来自服务器的警告。
•OpenAPI v3—如果启用OpenAPIV,用户将能够为所有Kubernetes类型请求OpenAPI v3规范。
想了解新版本的更多信息,请查阅完整的发布说明:https://www.kubernetes.dev/resources/release/。
文章来源:https://thenewstack.io/kubernetes-1-23-dual-stack-ipv4-ipv6-cronjobs-ephemeral-volumes/
登录后评论
立即登录 注册