孤儿和重新加入宠物到Kubernetes PetSet

时间:2016-08-11 19:13:04

标签: kubernetes

PetSet documentation说:

  

更新现有宠物套装目前是一个手动过程,这意味着您需要使用新的图像版本部署新的宠物套装,或者逐个孤立宠物,更新其图像,然后将它们连接回群集。 / p>

但我没有看到任何关于如何实际操作的文档。一个宠物如何孤儿并让它重新加入?

另外,假设我逐个选择我的宠物,然后将它们重新加入群集。 PetSet显示本身没有改变,所以如果一个pod崩溃会发生什么? petSet会用之前的旧图像重新启动吗?

2 个答案:

答案 0 :(得分:2)

抱歉,目前尚不清楚。如上所述,更新petset的最简单方法是部署另一个。

" orphan"在这种情况下是误导性的,因为它在别处用于表示变更标签/选择器。 PetSet在身份的概念上工作,如果有N个具有给定身份的pod(即网络+存储+序数),它将不再创建。出于显而易见的原因,您不能拥有2只具有相同身份的宠物,这意味着如果您是孤儿" pet-1,petset控制器不会创建另一个pet-1,因为这意味着2个pod获得相同的DNS名称。

要在不丢失法定人数的情况下执行就地升级,您必须从群集而不是petset中孤立每只宠物。即如果您有5个成员的zookeeper集群,请更新4个成员的配置,认为他们现在只有4个成员,升级1,然后更新4个成员以包含新成员。

  

另外,假设我逐个选择我的宠物,然后将它们重新加入群集。 PetSet显示本身没有改变,所以如果一个pod崩溃会发生什么? petSet会用之前的旧图像重新启动吗?

您可以使用新图像重新创建petset。删除它不会删除宠物(http://kubernetes.io/docs/user-guide/petset/#alpha-limitations),只要预期的身份存在,创建它就不会重新创建。

petset的kubectl滚动更新计划在下一个版本中发布(https://github.com/kubernetes/kubernetes/issues/28706)。

答案 1 :(得分:0)

我只是面对同样的问题,我不得不说我不同意所选择的答案。

首先,删除一个petset 删除所有相关的pod 根据文档,它只是删除pv / pvcs。

  

删除和/或缩放PetSet不会删除与PetSet关联的卷。这样做是为了确保安全第一,您的数据比自动清除所有相关的PetSet资源更有价值。删除持久卷声明将导致删除关联的卷。

要更新PetSet,您需要先使用--cascade=false删除旧的 这将删除PetSet,但保留其他所有内容,包括正在运行的pod

您现在可以重新部署更新后的PetSet并开始一次删除一个pod 将使用新的PetSet模板重新创建窗格。