广告

Kubernetes 1.23:双栈IPv4/IPv6、CronJobs、Ephemeral卷

  • 浏览(71)
  • 评论(0)
  • 译者:k8s

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: 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

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/

  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头