当前,apiservers创建了一个名为"Endpoints
"的对象和一个名为"EndpointSlice
"的对象,并确保这些对象与实际运行的apiservers保持同步。
特别是,它只查看名为"EndpointSlice
"的"kubernetes
",而不是任何其他"EndpointSlice
"。这可能会在尝试为apiserver引入双栈支持时导致问题:
- 用户创建了一个双栈1.21集群; "
kubernetes
"服务是单栈的,仅在Endpoints
和EndpointSlice
中广告IPv4端点。 - 用户发起升级到版本1.22,其中(假设)双栈apiserver得到支持。
- 第一个1.21 apiserver停止,从"
kubernetes
"Endpoints
和EndpointSlice
中删除其IPv4地址。 - 第一个apiserver再次以版本1.22启动,将其IPv4地址添加回"
kubernetes
"Endpoints
和EndpointSlice
,并创建一个新的"kubernetes-ipv6
"EndpointSlice
(或其他内容),其中包含其IPv6地址。 - apiserver随后因错误而崩溃。升级停滞,用户决定中止并降级回1.21。
- apiserver再次以版本1.21启动,发现其IP已在"
kubernetes
"Endpoints
和EndpointSlice
中,因此不执行其他操作。
此时,有一个无人拥有的"kubernetes-ipv6
"EndpointSlice
对象,指向一个可能或不可能实际使用的IPv6地址(即使现在可用,它也绝对不会永久保持可用)。
似乎apiserver EndpointSlice协调代码应该更智能,并将自己视为所有指向apiserverService
的"OwnerReference
"的所有"EndpointSlice
"的所有者。(不过请注意,它目前没有设置"OwnerReference
")。然后在上面的第6步中,第一个版本为1.22的apiserver将删除由其创建的被其版本为1.22的自己创建的流浪的"kubernetes-ipv6
"EndpointSlice
。(这种方法在升级过程中会导致摆动,旧的apiservers会不断删除新apiservers创建的IPv6 EndpointSlice,但这只是升级进行过程中的一个暂时性问题,最终会在集群稳定在一个版本时正确解决(或反过来解决))。
7条答案
按热度按时间izj3ouym1#
@danwinship: 此问题目前正在等待分类。
如果SIG或子项目确定这是一个相关的问题,他们将通过应用
triage/accepted
标签并提供进一步指导来接受它。组织成员可以通过在评论中写入
/triage accepted
来添加triage/accepted
标签。有关使用PR评论与我互动的说明,请查看here。如果您对我的行为有任何疑问或建议,请针对kubernetes/test-infra仓库提出问题。
vi4fp9gy2#
related kubernetes/enhancements#2622
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请将反馈发送至sig-contributor-experience@kubernetes/community。
/lifecycle stale
mkshixfv4#
/remove-lifecycle stale
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请将反馈发送至sig-contributor-experience@kubernetes/community。
/lifecycle stale
webghufk6#
Kubernetes项目目前缺乏足够的活跃贡献者来充分响应所有问题和PR。
此机器人根据以下规则对问题和PR进行分级处理:
lifecycle/stale
被应用后的90天内,如果没有活动,则应用lifecycle/stale
lifecycle/stale
被应用后的30天内没有活动,则应用lifecycle/rotten
lifecycle/rotten
被应用后的30天内没有活动,则关闭该问题或PR您可以:
/remove-lifecycle rotten
将此问题或PR标记为新鲜/close
关闭此问题或PR请将反馈发送至sig-contributor-experience@kubernetes/community。
/lifecycle rotten
goucqfw67#