Kubernetes生态 之 Kubernetes 1.25 版本重要特性

Kubernetes 1.25 版本重要特性

Posted by 董江 on Wednesday, August 24, 2022

Kubernetes 1.25 版本 release

Kubernetes 1.25 正式发布了,包含了 40 项目增强更新。 ReleaseNote: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md

cgroup v2 支持达到 GA

V2 版本层级结构的优化支持线程模式, 为 DiskDevice的 bps和 ipos。 提供可能

PodSecurity 特性达到 GA

PodSecurity 是自 Kubernetes v1.22 引入的 alpha 特性,作为 PodSecurityPolicy 的一个替代。在 v1.23 达到 beta 级别,通过上述 PR,在 v1.25 正式 GA ,并且默认启用,可以看到 整个发展过程还是很快的。

PodSecurity 定义了 3 种级别:

  1. Enforce:如果 Pod 违反策略,则不会被创建;
  2. Audit:如果 Pod 违反策略,则在审计日志中会被记录,但是 Pod 仍将正常创建;
  3. Warn:如果 Pod 违反策略,则会在 console 中打印 warning 信息,Pod 仍将正常创建; 使用起来也很简单,只需要给 namespace 添加 pod-security.kubernetes.io/<mode>=<standard> 标签即可。

只要你的 Kubernetes 集群版本先升级到 v1.22 以上,并且开启 PodSecurity 特性,那么就可以按照 Migrate from PodSecurityPolicy to the Built-In PodSecurity Admission Controller 进行迁移了。

支持 user namespaces

支持使用 user namespaces 的好处在于,可以在与主机有不同 UID/GID 的 Pod 中运行进程,这样在 Pod 内的特权进程 实际是作为主机中的普通进程运行的。这样,假设 Pod 内的特权进程由于安全漏洞被攻破,对主机的影响也可以降到比较低。

直接相关的漏洞,比如 CVE-2019-5736 ,我也曾在 2019 年的文章 《runc 1.0-rc7 发布之际》 专门介绍过, 感兴趣的小伙伴可以到该文章中了解详情。

该实现是在 Pod 的 Spec 中添加了布尔类型的 HostUsers 字段,以决定是否启用主机的 user namespaces,默认是 true

此外,目前可预见的情况是,如果 Kubernetes 集群使用的 Linux 内核版本在 v5.19 以下的话,那么使用该特性可能会导致 Pod 的启动时间增加。

引入特性 ContainerCheckpoint

ContainerCheckpoint 的新特性是自 v1.25 开始作为 alpha 特性加入的,默认是关闭的。利用此特性可以通过 kubelet 提供的 API,为 container 创建一个有状态的快照,然后将其移动到另一个节点上进行调试,或者其他类似的需求。

此处需要注意的是,创建 checkpoint 可能会产生一些安全隐患,比如 checkpoint 实际上是对当前运行中 container 的内存快照,所以如果在 container 的内存中包含了某些隐私数据,那么有可能在迁移到其他机器上也可以访问到。

另一方面,创建 checkpoint 会产生一些文件,这些文件是需要占用磁盘的。如果频繁的创建 checkpoint 则可能导致磁盘压力过大。checkpoint 的存档,默认情况下会放在 /var/lib/kubelet/checkpoints 目录下,并且以 checkpoint-<podFullName>-<containerName>-<timestamp>.tar 进行命名。

引入 kuberc 配置文件

类似于 vimrc 自定义配置, 添加自定义配置。 与kubeconfig 配置分离,让 kubeconfig 更加的专注,仅仅需要保留和集群、用户凭证相关的信息

core CSI Migration 达到 Stable

CSI Migration ,这个方案是将 in-tree API 转换为等效 CSI API,并将操作委托给 CSI 驱动程序的功能。目前该功能达到 GA,in-tree 的迁移也有很多进展。废弃了 in-tree 的 GlusterFSStorageOSQuobyte 的 plugin。

KUBECACHEDIR cache 目录支持

引入了一个新的 KUBECACHEDIR 环境变量,来替代默认的 ~/.kube/cache 缓存目录。通过这个 PR 就有可能会导致用户在使用 kubectl 的时候,可以通过这个环境变量来跳过 缓存。

「如果这篇文章对你有用,请随意打赏」

Kubeservice博客

如果这篇文章对你有用,请随意打赏

使用微信扫描二维码完成支付