发生了什么?
我们有一个控制器,它管理集群上的对象,并使用服务器端应用。对于这个特定的例子,我们对部署对象感兴趣,在下面的示例中,部署恰好是gatekeeper部署。
步骤1:控制器创建带有pod反亲和性字段设置的部署资源。
- 创建的部署:create.txt
步骤2:控制器修改部署对象,删除Pod亲和性字段,并在部署资源上执行SSA dry run Patch
。dry run没有检测到差异。忽略差异并应用补丁也不会导致pod反亲和性字段被删除。
- 更新的部署+显示仍然未删除的反亲和性字段:
- 步骤1和步骤2使用相同的fieldOwner,因此这里不应该有任何冲突(并且dry run和apply都没有显示任何冲突)。步骤1有managed-field操作
Update
,步骤2有managed-field操作Apply
。 - 控制器在应用补丁时也会设置force ownership。
**注意:**如果我们在创建部署时不设置亲和性字段,那么我们可以使用Patch轻松地设置/删除它。问题似乎只发生在创建了带有亲和性字段的部署,然后我们尝试使用补丁将其删除的情况下。
其他注意事项:
- 这似乎与kubectl --server-side apply一起工作。在这种情况下,唯一的managed-field操作是
Apply
。请参阅日志:
kubectl_ssa.txt
在pod容忍度上也可以看到相同的行为。
我们期望发生什么?
期望在更新部署对象时,通过SSA删除亲和性字段的live对象中的pod反亲和性字段被删除。
我们如何尽可能精确地重现它?
- 使用带有pod反亲和性字段设置的部署创建。
- 使用SSA Patch删除反亲和性字段。
- 将Apply设置为使用SSA
- 将客户端选项FieldOwner设置为与用于创建和ForceOwnership相同的field owner。
我们需要了解的其他信息吗?
- 无响应*
Kubernetes版本
云提供商
GKE
OS版本
# On Linux:
$ cat /etc/os-release
# paste output here
$ uname -a
# paste output here
# On Windows:
C:\> wmic os get Caption, Version, BuildNumber, OSArchitecture
# paste output here
8条答案
按热度按时间cdmah0mi1#
/sig api-machinery
for SSA
客户端版本:version.Info{Major:"1", Minor:"24", GitVersion:"v1.24.0", GitCommit:"4ce5a8954017644c5420bae81d72b09b735c21f0", GitTreeState:"clean", BuildDate:"2022-05-03T13:46:05Z", GoVersion:"go1.18.1", 编译器:"gc", 平台:"linux/amd64"}
Kustomize版本: v4.5.4
服务器版本:version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.3-gke.100", GitCommit:"6466b51b762a5c49ae3fb6c2c7233ffe1c96e48c", GitTreeState:"clean", BuildDate:"2023-06-23T09:27:28Z", GoVersion:"go1.20.5 X:boringcrypto", 编译器:"gc", 平台:"linux/amd64"}
注意,这不是受支持的客户端/服务器偏差
https://kubernetes.io/releases/version-skew-policy/#kubectl
ijnw1ujt2#
客户端版本:version.Info{Major:"1", Minor:"24", GitVersion:"v1.24.0", GitCommit:"4ce5a8954017644c5420bae81d72b09b735c21f0", GitTreeState:"clean", BuildDate:"2022-05-03T13:46:05Z", GoVersion:"go1.18.1", Compiler:"gc", Platform:"linux/amd64"}
Kustomize版本: v4.5.4
服务器版本:version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.3-gke.100", GitCommit:"6466b51b762a5c49ae3fb6c2c7233ffe1c96e48c", GitTreeState:"clean", BuildDate:"2023-06-23T09:27:28Z", GoVersion:"go1.20.5 X:boringcrypto", Compiler:"gc", Platform:"linux/amd64"}
注意,这不是受支持的客户端/服务器偏差 https://kubernetes.io/releases/version-skew-policy/#kubectl
上述问题在使用Kubernetes Go客户端时出现。kubectl版本无关紧要。
amrnrhlw3#
ccrfmcuu4#
6rqinv9w5#
@apelisse,这是否仍然可以接受?为什么不可以?
ruoxqz4g6#
我无法永远解决这些bug:-(我现在正在处理一些稍微不同的事情,我可以帮忙,但我没有计划专门修复这个问题,抱歉。
oyt4ldly7#
我永远无法解决这些bug:-(我现在正在处理一些稍微不同的事情,我可以帮忙,但我没有计划专门修复这个问题,抱歉。
完全公平!所以我们需要找到另一个所有者。暂时将问题推迟到下一次扫描。
vxf3dgd48#
如果是这样,可以让@Jefftree看一下吗?