kubernetes API服务器端点切片协调器应该更智能地了解它拥有的切片,

mzaanser  于 5个月前  发布在  Kubernetes
关注(0)|答案(7)|浏览(46)

当前,apiservers创建了一个名为"Endpoints"的对象和一个名为"EndpointSlice"的对象,并确保这些对象与实际运行的apiservers保持同步。
特别是,它只查看名为"EndpointSlice"的"kubernetes",而不是任何其他"EndpointSlice"。这可能会在尝试为apiserver引入双栈支持时导致问题:

  1. 用户创建了一个双栈1.21集群; "kubernetes"服务是单栈的,仅在EndpointsEndpointSlice中广告IPv4端点。
  2. 用户发起升级到版本1.22,其中(假设)双栈apiserver得到支持。
  3. 第一个1.21 apiserver停止,从"kubernetes" EndpointsEndpointSlice中删除其IPv4地址。
  4. 第一个apiserver再次以版本1.22启动,将其IPv4地址添加回"kubernetes" EndpointsEndpointSlice,并创建一个新的"kubernetes-ipv6" EndpointSlice(或其他内容),其中包含其IPv6地址。
  5. apiserver随后因错误而崩溃。升级停滞,用户决定中止并降级回1.21。
  6. apiserver再次以版本1.21启动,发现其IP已在"kubernetes" EndpointsEndpointSlice中,因此不执行其他操作。
    此时,有一个无人拥有的"kubernetes-ipv6" EndpointSlice对象,指向一个可能或不可能实际使用的IPv6地址(即使现在可用,它也绝对不会永久保持可用)。
    似乎apiserver EndpointSlice协调代码应该更智能,并将自己视为所有指向apiserver Service的"OwnerReference"的所有"EndpointSlice"的所有者。(不过请注意,它目前没有设置"OwnerReference")。然后在上面的第6步中,第一个版本为1.22的apiserver将删除由其创建的被其版本为1.22的自己创建的流浪的"kubernetes-ipv6" EndpointSlice。(这种方法在升级过程中会导致摆动,旧的apiservers会不断删除新apiservers创建的IPv6 EndpointSlice,但这只是升级进行过程中的一个暂时性问题,最终会在集群稳定在一个版本时正确解决(或反过来解决))。
izj3ouym

izj3ouym1#

@danwinship: 此问题目前正在等待分类。
如果SIG或子项目确定这是一个相关的问题,他们将通过应用triage/accepted标签并提供进一步指导来接受它。
组织成员可以通过在评论中写入/triage accepted来添加triage/accepted标签。
有关使用PR评论与我互动的说明,请查看here。如果您对我的行为有任何疑问或建议,请针对kubernetes/test-infra仓库提出问题。

r55awzrz

r55awzrz3#

Kubernetes项目目前缺乏足够的贡献者来充分响应所有问题和PR。
此机器人根据以下规则对问题和PR进行分级处理:

  • lifecycle/stale被应用后的90天内无活动,将应用lifecycle/stale
  • lifecycle/stale被应用后的30天内无活动,将应用lifecycle/rotten
  • lifecycle/rotten被应用后的30天内无活动,将关闭此问题或PR

您可以:

  • 使用/remove-lifecycle stale将此问题或PR标记为新鲜
  • 使用/lifecycle rotten将此问题或PR标记为腐烂
  • 使用/close关闭此问题或PR
  • 使用Issue Triage提供帮助

请将反馈发送至sig-contributor-experience@kubernetes/community
/lifecycle stale

mkshixfv

mkshixfv4#

/remove-lifecycle stale

ibps3vxo

ibps3vxo5#

Kubernetes项目目前缺乏足够的贡献者来充分响应所有问题和PR。
此机器人根据以下规则对问题和PR进行分级处理:

  • lifecycle/stale被应用后的90天内无活动,将应用lifecycle/stale
  • lifecycle/stale被应用后的30天内无活动,将应用lifecycle/rotten
  • lifecycle/rotten被应用后的30天内无活动,将关闭此问题或PR

您可以:

  • 使用/remove-lifecycle stale将此问题或PR标记为新鲜
  • 使用/lifecycle rotten将此问题或PR标记为腐烂
  • 使用/close关闭此问题或PR
  • 使用Issue Triage提供帮助

请将反馈发送至sig-contributor-experience@kubernetes/community
/lifecycle stale

webghufk

webghufk6#

Kubernetes项目目前缺乏足够的活跃贡献者来充分响应所有问题和PR。
此机器人根据以下规则对问题和PR进行分级处理:

  • lifecycle/stale被应用后的90天内,如果没有活动,则应用lifecycle/stale
  • lifecycle/stale被应用后的30天内没有活动,则应用lifecycle/rotten
  • lifecycle/rotten被应用后的30天内没有活动,则关闭该问题或PR

您可以:

  • 使用/remove-lifecycle rotten将此问题或PR标记为新鲜
  • 使用/close关闭此问题或PR
  • 提供帮助,请使用Issue Triage

请将反馈发送至sig-contributor-experience@kubernetes/community
/lifecycle rotten

goucqfw6

goucqfw67#

/remove-lifecycle rotten
/lifecycle frozen
/assign
(将作为双栈API服务器工作的一部分最终修复此问题)

相关问题