Kubernetes 1.22:新特性总结(更新内容!)

首先

这篇文章是关于Kubernetes 1.22的CHANGELOG和每个变更点的总结页面的链接。有关详细信息,请参阅各总结页面。

链接到更改详情。

Metrics Changes と SIG Instrumentation @watawuwu

Known Issues, Urgent Upgrade Notes @uesyn

SIG Apps @yosshi_

SIG API Machinery @Ladicle

SIG Auth @hiyosi

SIG CLI @superbrothers

SIG Cluster Lifecycle @yuanying

SIG Storage @ysakashita

SIG Network @tkusumi

SIG Scheduling @everpeace

SIG Node @ryotarai

什么新鲜事!

删除一些beta版本的Kubernetes API

由於某些API不再提供特定的beta版本,請使用它們的GA版本API。所有現有的對象都可以通過GA的API進行操作。此刪除包括ValidatingWebhookConfiguration、MutatingWebhookConfiguration、CustomResourceDefinition、APIService、TokenReview、SubjectAccessReview、CertificateSigningRequest、Lease、Ingress和IngressClass API的beta版本。請查看Deprecated API Migration Guide和博客文章Kubernetes API and Feature Removals In 1.22: Here’s What You Need To Know以獲取所有列表。

どのバージョンでどのAPIが利用可能か確認したい場合は @tkusumi さんのこちらのまとめをご参照ください

Kubernetes发布频率的变更

我们都必须适应生活中的变化,而这一年尤为如此。Kubernetes的发布团队也受到COVID-19大流行的影响,他们倾听了用户对一年发布次数的意见。从2021年4月24日开始,Kubernetes的发布频率从每年4次减少到每年3次,这是官方公告的。请查阅官方博客文章《Kubernetes Release Cadence Change: Here’s What You Need To Know》以获取更多详细信息。

外部凭证提供者

Kubernetes v1.22稳定版中的credential插件在1.11版本以来一直处于测试阶段,现在已成为正式版。新版本中增加了对提供交互式登录流程的插件支持的改进。此发布还包括了许多错误修复。如果您想创建插件,请参考sample-exec-plugin。与此相关的是,Azure和GCP认证插件的in-tree实现已被弃用,推荐使用out-of-tree的实现方式。

服务器端应用(GA)

Server-side Apply是在Kubernetes API服务器上运行的一种新的对象合并算法,用于跟踪字段的所有者。 Server-side Apply对于用户和控制器通过声明性配置来管理资源非常有帮助。通过这种方式,您可以完全按照意图指定并发送配置以进行声明性地创建和修改。经过数个Beta版本的发布后,Server-side Apply已成为GA。

簇存储接口毕业典礼

Windows节点的CSI支持将在1.22版本中正式发布。在Kubernetes v1.22中,仅支持Windows特权容器的Alpha功能。要在Windows节点上使用CSI存储,需要启用CSIProxy,并将CSI节点插件部署为非特权Pod。通过使用这个代理,可以执行节点上的特权存储操作。

在v1.22中,另一个将进行GA的功能是CSI服务帐户令牌支持。这个功能允许CSI驱动程序使用Pod绑定的服务帐户令牌来取代具有特权的ID。此外,它还提供了控制重新发放这些卷的能力,因此可以更新短时令牌。

SIG Windows开发工具

随着开发者社区的成长,SIG Windows已经发布了多个工具。这些工具支持多个CNI提供者(如Antrea、Calico),并可在多个平台(如Hyper-V、VirtualBox、vSphere等vagrant兼容的提供者)上运行。
此外,还可以通过编译Windows版kubelet和kube-proxy,以实现在Windows上运行最先进的功能的全新方法,同时可以与其他Kubernetes组件的每日构建一起使用。

使用kubeadm来构建更安全的控制平面。

通过新的alpha功能,kubeadm的控制平面现在可以在非root用户下运行。这是kubeadm长期以来所需的安全措施。如果要尝试,请启用kubeadm特有的RootlessControlPlane FeatureGate。通过使用这个alpha功能来部署集群,控制平面将以较低权限运行。

新しいv1beta3的设置API基于v1beta2并添加了长期以来一直被要求的功能,并将一些功能设置为不推荐使用。因此,v1beta3是当前推荐的API版本,但v1beta2API仍然可以使用,并不是不推荐的API。

etcd版本升级至3.5.0。

Kubernetes的默认后端存储etcd已经发布了新的3.5.0版本,并被社区所接受。这个新版本包含了安全性、性能、监控和开发者体验的改进。修复了许多错误,包括租赁对象导致内存泄露、在压缩操作时导致死锁等。引入了多个新功能,包括过渡到结构化日志和日志轮转等。此版本还包含了解决过负载流量的解决方案的详细未来路线图。有关更详细的变更列表,请参阅3.5.0发布公告。

支持Kubernetes节点的系统交换

所有的系统管理员或Kubernetes用户都可以使用Kubernetes来禁用swap空间。在Kubernetes v1.22的发布中,支持以alpha方式执行启用swap内存的节点。
此更改允许管理员设置Linux节点的swap,并选择将部分块存储用作额外的虚拟内存。

默认的集群范围seccomp设置

新的alpha版FeatureGate “SeccompDefault” 已经被添加到kubelet中,并与相应的 –seccomp-default 标志和kubelet配置一起添加。
当两者都启用时,kubelet对于没有明确设置seccomp profile的Pod的行为将发生变化。
通过使用集群范围的seccomp默认配置,kubelet将使用RuntimeDefault作为seccomp配置的默认值,而不是Unconfined。
这样可以增强Kubernetes部署的默认集群级工作负载安全性。

对于内存资源的服务质量

原本,Kubernetes在v1版本中使用cgroup的API。根据这个设计,Pod的QoS类仅适用于CPU(例如cpu_shareds)。Kubernetes的cgroup管理器使用v1 cgroups的memory.limit_in_bytes来限制容器的内存容量,并且在发生内存不足事件时,使用oom_scores来确定要杀死的容器进程的优先级。这种实现存在缺点,Guaranteed的Pod无法完全预留内存,存在页面缓存被回收的风险。对于Burstable的Pod,如果进行了内存超额分配(将request设置小于limit),当Linux内核检测到内存不足时,容器被强制终止的风险较高。

作为alpha功能,Kubernetes v1.22可以使用cgroups v2的API来控制和隔离内存分配。该功能旨在提高工作负载和节点的可用性,以应对内存资源竞争的情况。

为了临时容器的API的变更和改进。

在v1.22版本中,用于创建临时容器的API已经发生了变化。由于临时容器功能目前仍处于alpha阶段,默认情况下是被禁用的,而新的API在旧API上的客户端是无法使用的。
为了确保功能的稳定性,kubectl工具将遵循Kubernetes的版本不一致策略。
然而,早于v1.21的kubectl版本不支持新的临时容器。
使用kubectl debug尝试创建临时容器的用户应注意以下事项。

    • kubectl v1.22は古いAPIへフォールバックしようとします。

 

    v1.22より前のkubectlではKubernetes v1.22以降のKubernetesクラスタでは動作しません

若要在多个集群版本上使用kubectl debug,请将kubectl更新至v1.22。

广告
将在 10 秒后关闭
bannerAds