Kubernetes 1.18功能服务器端应用Beta 2
作者: Antoine Pelisse(谷歌)
什么是服务器端应用?
服务器端应用是将“ kubectl应用”迁移到apiserver的重要工作。它由Apply工作组于2018年启动。
使用kubectl声明性地应用资源面临以下挑战:
一个需要使用kubectl go代码,或者他们必须掏出外壳来使用kubectl。
战略性合并补丁程序是kubectl使用的补丁程序格式,有机地增长了,并且在保持与各种api服务器版本的兼容性的同时,挑战性的修复。
某些功能很难直接在客户端上实现,例如,联合。
服务器端Apply是在Kubernetes api服务器上运行的一种新的合并算法,以及对字段所有权的跟踪。服务器端应用程序启用了诸如冲突检测之类的新功能,因此系统知道两个参与者何时尝试编辑同一字段。
它是如何工作的,什么是ManagedFields?
服务器端Apply通过跟踪系统的哪个actor更改了对象的每个字段来工作。它通过将所有更新散布到对象,并记录所有已更改的字段以及操作时间来实现。所有这些信息都存储在对象元数据中的managedFields中。由于对象可以具有许多字段,因此该字段可能会很大。
当有人提出申请时,我们可以使用存储在managedFields中的信息来报告相关的冲突,并帮助合并算法做正确的事。
在1.18之前已经不是Beta吗?
是的,服务器端Apply从1.16开始是Beta版,但是它没有跟踪与尚未应用的对象相关联的字段的所有者。这意味着大多数对象都没有存储managedFields元数据,并且这些对象的冲突无法解决。在Kubernetes 1.18中,所有新对象都将附加有ManagedFields,并提供有关冲突的准确信息。
如何使用?
The most common way to use this is through kubectl: kubectl apply --server-side
. This is likely to show conflicts with other actors, including client-side apply. When that happens, conflicts can be forced by using the --force-conflicts
flag, which will grab the ownership for the fields that have changed.
当前限制
目前,我们有两个重要限制,尤其是子资源。首先是,如果您申请一个身份,该身份将被忽略。我们仍将尝试获取字段,这可能会导致无效冲突。另一个是我们不更新某些子资源(包括比例)上的managedField,因此您可能看不到有关水平容器自动缩放器更改副本数量的信息。
下一步是什么?
我们正在努力改善在kubectl中使用服务器端应用的体验,并且正在努力使其成为默认设置。作为其中的一部分,我们希望改善从客户端到服务器端的迁移。
我能提供帮助吗?
当然!通过#wg-apply,工作组apply可以通过 邮件列表 而且我们每隔一个星期二在太平洋时间9.30 PT见面。我们有许多令人兴奋的功能可以构建,并可以使用各种帮助。
我们还想借此机会感谢所有参与使新Beta版成为可能的贡献者的辛勤工作:
- 丹尼尔·史密斯
- 珍妮·巴克利
- 乔·贝茨
- 朱利安·莫德斯托(Julian Modesto)
- 凯文·维斯穆勒
- 玛丽亚·恩塔拉(Maria Ntalla)