Horizontal Pod Autoscaleer API在云原生开发的世界中,你可能一眨眼,就错过了一些东西。8月22日,Kubernetes 1.22才出现,现在是Kubernetes 1.23 GA。
这个新版本有超过45个增强功能(其中11个升级到稳定,15个已经改进,19个是全新的)。其中一些可能非常有用。然而,最引人注目的是1.23中已经升级到GA(稳定性)的功能,因此它们已经生产就绪。
首先来看看已经逐渐稳定的功能,然后看一看其他改进。
已经稳定
四个非常令人兴奋的功能:IPv4/IPv6双栈支持、CronJobs、Ephemeral卷和HPA API。
IPv4/IPv6双栈支持
有了IPv6/IPv6双栈支持,Kubernetes现在可以在集群中原生支持双栈模式。这意味着你可以将IPv4和IPv6地址分配给任何给定的pod或服务。这是用spec.ipFamilyPolicy字段配置的,可设置为以下选项之一:
-
SingleStack
-
PreferDualStack
-
RequireDualStack
要使用双堆栈支持,你需要设置.spec.ipFamilyPolicy为PreferredDualStack或RequiredDualStack。此功能在Kubernetes中默认启用,还包括通过IPv4和IPv6地址的脱离集群出口路由。
CronJobs
CronJobs功能使在Kubernetes集群中运行周期任务成为可能。Kubernetes CronJobs与Linux cron系统非常相似。CronJobs从Kubernetes 1.4开始就已经存在,并且自从它在迭代1.5中达到CRI支持以来,已经在生产中被广泛接受。
在YAML文件中,CronJob定义为:
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开始,它允许你将值插入到cronjob中,并查看它们将生成什么。
Ephemeral卷
Ephemeral卷自Kubernetes 1.19以来一直存在,允许你为特定的pod创建卷,然后在pod终止时删除这些卷。换句话说,这些是临时卷。
Kubernetes支持四种类型的临时卷,它们是:
emptyDir——pod启动时可用的空卷,它使用kubelet基本目录或RAM中的存储。
configMap、downwardAPI、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 v2
Horizontal Pod Autoscaleer API对于Kubernetes来说并不新鲜。事实上,它是在2016年首次推出的。此功能负责自动扩展复制控制器、部署、副本集或有状态集中的pod数量。缩放基于以下类型的指标:
资源使用率——当pod超过内存或CPU使用率阈值时。这可以表示为原始值或百分比。
自定义指标——这基于Kubernetes报告的指标(即每秒客户端请求的速率)。
外部指标——这基于外部应用程序或服务提供的指标。
Autoscaler使用控制循环运行,周期由--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,则将使用Common Expression Language通过规则验证自定义资源。
Server Side Field Validation ——如果启用了ServerSideFieldValidation,则当在请求中检测到未知或重复字段时,用户将收到来自服务器的警告。
OpenAPIV3——启用OpenAPIV后,用户将能够为所有Kubernetes类型请求OpenAPIV3规范。
原文链接:
https://thenewstack.io/kubernetes-1-23-dual-stack-ipv4-ipv6-cronjobs-ephemeral-volumes/