繁体   English   中英

Kubernetes 吊舱/容器回收

[英]Kubernetes pod/container recovery

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

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

先感谢您。

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

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

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

    • kubectl cluster-info dump :获取集群整体健康的完整信息
    • kubectl get nodes :要查看可用节点,您可以验证您希望看到的所有节点都存在并且它们都在 Ready state 中。
  2. 当 i 容器失败时,它也会导致 pod 失败。 当 pod 失败时,kubernetes 将立即重新启动 pod。 如果你看到 pod yaml by kubectl get pods <pod_name> -o yaml这个命令,你会看到这里有一个名为ownerReferences的部分会指定 pod 的所有者,基本上可以ReplicaSet或者StatefulSet等pod 失败时的 pod(以保持所需的 pod 数量)。 随着 pod 重新启动,容器也重新启动,因此 kubernetes 尝试修复容器故障。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM