文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

你需要知道的有关Kubernetes 1.23版的更新都在这里

2024-12-02 11:48

关注

【51CTO.com快译】近期即将发布的Kubernetes圣诞版共带有45项针对成熟性、安全性、以及可扩展性方面的增强功能。在本文中,我将重点关注Kubernetes API、容器与基础设施、存储、网络和安全性等方面的关键性更新。

Kubernetes API

让我们首先来看看具有可扩展性的Kubernetes API。api-machineryCLIautoscaling SIG这三大变更将作为1.23版的一部分被发布。

Kubectl事件命令

一直以来,您可能会受到kubectl get命令的选项和数据收集方法的限制。对此,1.23的alpha版将首发一个新的命令--kubectl event。使用kubectl的get events,您可以更便捷地观察到集群的整体状态,并解决相关问题。具体而言,其主要特点包括:

除了上述特点,您也可以通过查看设计文档,以了解在后续版本中即将推出的新功能。值得一提的是,您可以在安装了新的kubectl版本后,立即开始使用kubectl events命令。

将HPA API升级为一般可用性

Horizontal Pod Autoscaler(HPA)是Kubernetes的核心组件,可以根据各项指标自动扩展Pod的数量。HPA可以扩展或缩减的资源包括:副本集、部署、以及CPU利用率等众所周知的指标状态集。自2015年以来,它一直是Kubernetes API中的一部分。如今,它最终走向了一般可用性(General Availability,GA)。

如果您已经在客户端和控制器中使用到了HPA,那么您可以直接使用v2,而非v2beta1。从这次发布,我们可以看到HPA已经作为了Kubernetes API的核心组件,并为加入最终产品做好了准备。因此,您可以放心地使用HPA了。

CRD验证表达式语言

作为一个强大的抽象层,Custom Resource Definition(CRD)扩展了Kubernetes,并使其与所有可自定义的资源协同工作。不过,如果用户定义了新的自定义资源、及其相关规范,那么使用Webhooks、控制器和客户端工具进行验证时,则可能比较繁琐。不过庆幸的是,我们可以将诸如Common Expression Language之类的内联表达式语言,集成到CRD中进行验证

在1.23版本中,作为alpha功能被提供的验证规则,可以方便您添加x-kubernetes-validation-rules。您可以在Kubernetes文档中查看到如下类似的示例:

  1. ... 
  2.      openAPIV3Schema: 
  3.        type: object 
  4.        properties: 
  5.          spec: 
  6.            type: object 
  7.            x-kubernetes-validation-rules: 
  8.             - rule"self.minReplicas <= self.replicas" 
  9.               message: "replicas should be greater than or equal to minReplicas." 
  10.             - rule"self.replicas <= self.maxReplicas" 
  11.               message: "replicas should be smaller than or equal to maxReplicas." 
  12.            properties: 
  13.             ... 
  14.             minReplicas: 
  15.               type: integer 
  16.             replicas: 
  17.               type: integer 
  18.             maxReplicas: 
  19.                type: integer 
  20.            required: 
  21.             - minReplicas 
  22.             - replicas 
  23.             - maxReplicas   

假设您要创建如下违反了第二条规则的自定义资源实例:

  1. apiVersion: "stable.example.com/v1" 
  2. kind: CronTab 
  3. metadata: 
  4.    name: my-new-cron-object 
  5. spec: 
  6.    minReplicas: 0 
  7.    replicas: 20 
  8.    maxReplicas: 10 

那么Kubernetes API将会以如下错误消息作为响应:

  1. The CronTab "my-new-cron-object" is invalid: 
  2. * spec: Invalid value: map[string]interface {}{"maxReplicas":10, "minReplicas":0, "replicas":20}: replicas should be smaller than or equal to maxReplicas. 

可见,如果您在集群中准备使用CRD,那么就必须在Open API架构和控制器中使用相应的验证机制。而在这次新的版本中,您可以将它们迁移到x-kubernetes-validation-rules,让Kubernetes API为您完成繁琐的工作。

容器与基础设施

在新的版本中,我发现了Windowsnode SIG两个值得注意的功能。它们属于临时容器和Windows特权容器。

临时容器

临时容器可以起到观察其他Pod的状态、故障排除和调试等作用。这个新的功能还附带了一个CLI命令。用户可以使用kubectl debug,来轻松地进行排障。其实,该命令运行在pod的一个容器中,而kubectl exec命令则在该容器中运行一个进程。

使用1.23版本,您将能够在PodSpec.EphemeralContainer下添加临时容器,作为pod规范的一部分。虽然与容器规范类似,但是它们并不涉及到各种资源请求或端口,毕竟它们只是临时被添加到pod中的。例如,您将能够为my-service pod添加一个Debian的容器,并以交互的方式连接,从而让用户进行实时调试。具体请见如下代码段:

  1. $ kubectl debug -it -m debian my-service -- bash 
  2. root@debug:~# ps x 
  3.    PID TTY      STAT   TIME COMMAND 
  4.      1 ?        Ss     0:00 /pause 
  5.     11 ?        Ss     0:00 bash 
  6.    127 ?        R+     0:00 ps x 

其实,临时容器在1.22版本中已经处于alpha版状态了。这次,它们将在1.23版本中被升级为beta版。如果您尚未试用它的话,我建议您最好创建各种调试容器的镜像,并在自己的工具箱中包含kubectl debug命令。

Windows特权容器和主机网络模式

作为一种强大的容器实例,特权容器可以访问和使用主机资源。这和直接运行在主机上的进程非常类似。在Linux容器被广泛使用时,它们虽然在某种程度上构成了安全威胁,但是有利于管理主机的实例。

随着1.23版本的发布,Windows实例的特权容器和主机网络模式将升级为beta版。如果您的集群中有Windows节点,或计划在将来包含这些节点的话,那么请查看功能性和GA计划的设计文档

贮存

在1.23版本中,存储SIG变化主要体现在卷挂载期间,卷的所有权更改上。

目前,在卷绑定之前,卷的权限会递归地更新为pod规范中的fsGroup值。显然,当卷的体积过大时,所有权的更改可能会导致在创建Pod期间的等待时间过长。因此,我们往往需要添加一个新的字段--pod.Spec.SecurityContext.FSGroupChangePolicy,来允许用户指定该如何操控权限和所有权的更改。

而在1.23版中,此功能已升级到了GA,您可以使用以下两个选项去指定相关策略

如果您正在使用诸如数据库等,对于权限更改敏感的应用,那么请检查新的字段,并将其包含在您的pod规范中,以避免在pod创建的过程中,等待过长的时间。

联网

自从IPv6在Kubernetes 1.9版中作为alpha功能被添加以来,它已是用户对Kubernetes团队期待已久的功能。在最新版本中,双栈式的IPv4/IPv6网络终于具有了一般可用性。

该功能包括了对于各种Pod和服务的多个IPv4/IPv6地址的感知。同时,它还支持原生IPv4到IPv4的通信,以及与集群之间IPv6到IPv6的通信。

尽管Kubernetes提供了双栈式网络,但您可能会受到底层基础架构和云提供商的能力的限制。由于节点需要具有可路由的IPv4/IPv6网络接口,而pod需要具有双栈式网络连接,因此您还需要一个能够感知双栈式网络的插件,来为pod和服务分配IP地址。目前,诸如kubenet之类的CNI插件已经可以支持双栈式网络了,并且Kubeadm和kind也正在逐渐增加对于此类生态系统的支持。

安全性

23版本在auth SIG方面的增强主要体现在,将Pod安全标准升级到了beta版。

在之前的版本中,Pod安全标准是作为Alpha功能,用来替换PodSecurityPolicy的。在命名空间和标签的帮助下,他们创建了一种限制pod权限的方法,来执行相应的策略。在将其包含到部署之中后,您便可以提高pod和集群的安全性了。

小结

在2021年的最后一个版本中,Kubernetes带来了更具可扩展性和可靠性的API和基础设施的增强功能。此外,在存储、网络和安全性方面的改进,也使得Kubernetes成为了真正的、面向未来的、业界领先的容器编排平台。

最后,请通过Kubernetes的博客和其发行说明,来进一步了解更多最新的增强功能吧!

原文Kubernetes Version 1.23 Is Out: Everything You Should Know,作者: Amir Kaushansky

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯