@alexzielenski@apelisse
众所周知,PodSpec嵌入在各种类型中,因此其中的任何新默认值都会改变所有其他类型。通常我们不希望这样,因此手写默认值有 SetDefaults_PodSpec()
(捕获现有值)和 SetDefaults_Pod()
(仅在实际Pod上触发,这是大多数新默认值应该去的地方)。
没有办法用 +default
表示这个。也许我们不想这样做,因为它对这种情况太具体了,但我想把它提出来让大家思考一下。
@alexzielenski@apelisse
众所周知,PodSpec嵌入在各种类型中,因此其中的任何新默认值都会改变所有其他类型。通常我们不希望这样,因此手写默认值有 SetDefaults_PodSpec()
(捕获现有值)和 SetDefaults_Pod()
(仅在实际Pod上触发,这是大多数新默认值应该去的地方)。
没有办法用 +default
表示这个。也许我们不想这样做,因为它对这种情况太具体了,但我想把它提出来让大家思考一下。
5条答案
按热度按时间zphenhs41#
是的,好的观点,Alex已经向我提到过。让我们看看我们能做些什么...
whitzsjs2#
/triage accepted
vmdwslir3#
使用不同类型的含义是什么?我认为现在我们不能改变这一点。另一方面,我们在kube-openapi中做了很多"复制类型"的工作,以提高序列化速度,当你将一个类型复制到另一个时,有很多编译时检查,所以现在我认为(并进行编译时检查以保持同步)这样做并非完全不可能。
cgyqldqp4#
我认为我们可以在很多地方明确表示 "这是相同的结构,但有不同的规则"。然而,对我来说,仅仅有两种类型并不总是有效。
有时候我们应该简单地对类型定义进行深拷贝或者甚至进行深度内联。我希望我们能花一些时间来解决这个问题。这真的是一个维护噩梦,长期拖累我们以安全的方式做新事情的能力。不管你喜不喜欢,PodSpec将继续获得新的字段:)
f8rj6qna5#
自从# #124220合并以来,我们将在未来的几个版本中(一旦最旧的kubelets都更新到1.30)能够设置pod默认值。