gpt4 book ai didi

kubernetes - kubectl排水和滚动更新,停机

转载 作者:行者123 更新时间:2023-12-02 11:31:22 31 4
gpt4 key购买 nike

kubectl drain首先是否确保带有replicas=1的Pod在其他某个节点上是健康的?
假设Pod由部署控制,并且Pod确实可以移动到其他节点。
目前,如我所见,它仅从节点逐出(删除Pod),而无需先调度它们。

最佳答案

除了Suresh Vishnoi答案:

如果未指定PodDisruptionBudget且您具有一个副本的部署,则该pod将终止,然后然后新pod将被安排在新节点上。

为了确保您的应用程序在节点耗尽过程中可用,您必须指定PodDisruptionBudget并创建更多副本。如果您有1个带有minAvailable: 30%的 pods ,它将拒绝排水,并出现以下错误:

error when evicting pod "pod01" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.

简而言之,这就是排水过程的工作方式:

如文档 kubectl drain命令中所述,“在对该节点执行维护之前,先安全地从该节点撤出所有pod,并允许pod的容器正常终止并遵守您指定的 PodDisruptionBudgets

排水管有两件事:
  • 封锁了该节点-这意味着该节点被标记为不可调度,因此无法在该节点上调度新的Pod。很有道理-如果我们知道该节点将处于维护状态,则没有必要在该节点上调度Pod,然后由于维护而将其重新调度到另一个节点上。从Kubernetes的角度来看,它向节点添加了污点:node.kubernetes.io/unschedulable:NoSchedule
  • evicts/删除pods-在节点被标记为不可调度之后,它将尝试逐出该节点上正在运行的pods。它使用Eviction API,它考虑了PodDisruptionBudgets(如果不支持,则会删除pod)。它调用K8S的DELETE方法,但是考虑使用GracePeriodSeconds,因此它可以使Pod完成其处理。
  • 关于kubernetes - kubectl排水和滚动更新,停机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59343262/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com