Kubernetes 1.23发布:双栈IPv4/IPv6、CronJobs和临时卷

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: samplestorageapp
spec:
  containers:
    name: storagefrontend
      image: busybox
      volumeMounts:
      mountPath: “/storage”
        name: samplestorageappvol
      command: [ “sleep”, “1000000” ]
  volumes:
    name: samplestorageappvol
      csi:
        driver: inline.storage.kubernetes.io
        volumeAttributes:

HPA API v2

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

•资源使用情况—当Pod超过内存或CPU使用情况的阈值时。这可以表示为原始值或百分比。

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

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

Autosaclers使用控制循环来运行,周期则由–horizo​​ntal-pod-autoscaler-sync-period标志来控制。默认值是15秒。在控制循环期间,控制器根据Horizo​​ntalPodAutoscaler定义中配置的指标来查询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/

 

K8S中文社区微信公众号

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址