Kubernetes pod/container recovery



我是Kubernetes的新手,想问两个听起来很基础的问题。

  1. 我理解节点控制器将监视和响应节点的状态。他们会从不健康的节点上驱逐豆荚。但是,Kubernetes集群会主动尝试恢复不健康的节点吗?还是只会等待人工手动恢复节点?
  2. 如果集群中的一个容器出现故障,集群是否会主动尝试恢复它?我做了一些实验,我故意使用命令"docker stop";停止一些容器(nginx-proxy, kube-controller-manager, kube-proxy)。我停掉的那些容器似乎不会自动回来。结果是否表明,在人类开始干预之前,集群中出现故障的容器不会再次返回?

提前谢谢你。

  1. 基本上答案是否定的。Kubernetes集群无法主动尝试恢复不健康的节点。节点是物理机或虚拟机,现在管理员负责重新启动节点或在节点不健康时修复节点。

    • kubectl cluster-info dump:获取集群整体运行状况的完整信息
    • kubectl get nodes:要查看可用节点,您可以验证您期望看到的所有节点都存在,并且它们都处于就绪状态。
  2. 当i容器失败时,它也会导致pod失败。当一个pod失败时,kubernetes会立即重启这个pod。如果您通过kubectl get pods <pod_name> -o yaml这个命令看到pod yaml,您将看到这里有一个名为ownerReferences的部分,这里将指定pod的所有者,基本上它们可以是ReplicaSetStatefulSet等,它们基本上在pod失败时重新启动pod(以维持所需的pod数量)。当pod重新启动时,容器也会重新启动,因此kubernetes会尝试修复容器故障。

  1. Kubernetes不支持自动修复节点。然而,它也因云提供商而异。例如,GKE具有节点自动修复功能,该功能将监视节点的健康状态并触发自动修复事件(目前是NotReady节点的节点重建)。

  2. Kubernetes是一个容器编排器工具,如果pod是作为K8s对象(Deployments,Statefulsets等)的一部分创建的,它将尝试启动pod,如果由于某种原因失败,它提供了自动启动策略。如果您创建了一个独立的Pod资源,则完成后不会重新启动pod。此外,由于您使用docker来运行容器,因此没有与之关联的Kubernetes对象来处理其生命周期,因此它也不会像您观察到的那样启动。

相关内容

  • 没有找到相关文章

最新更新