前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8s 节点断开连接后,本在运行的 Pod 会如何?

K8s 节点断开连接后,本在运行的 Pod 会如何?

作者头像
CNCF
发布2020-11-17 15:44:19
1.8K0
发布2020-11-17 15:44:19
举报
文章被收录于专栏:CNCFCNCF

在工作节点与主节点断开连接后,工作节点上的 Pod 是什么状态,是否在继续运行?Kubernetes 控制器又在做什么?本文对此进行了实例研究,一一解答。

作者:Bhargav Bhikkaji 翻译:Bach(才云) 校对:星空下的文仔(才云)、bot(才云)

由于各种原因,工作节点与主节点断开连接的情况会经常发生。在这种情况下,其实有很多问题,例如,主节点是否删除了在无法连接的节点上运行的 Pod?Kubernetes 控制器的行为如何?Pod 是否在工作节点上继续运行?简而言之,我们想知道当节点变得不可访问时,Kubernetes 系统行为是什么样子的?

定义:在 Kubernetes 中,无法连接的节点称为隔离节点(partitioned node)。

为了具体了解,让我们创建一个隔离节点案例并了解其行为。

K8sMeetup

示例集群

示例集群具有一个主节点(master node)和 3 个工作节点(worker node)。这里创建了具有 2 个副本的 Nginx Deployment。这些副本在不同的节点上运行:kind-worker2 和 kind-worker3。图 1 展示了示例集群的状态:

图1:示例集群的状态

K8sMeetup

创建一个隔离节点

创建一个隔离节点的简单方法是删除节点的 IP 地址,即 kind-worker2。图 2 展示了必要的步骤:

图2:创建一个隔离节点

K8sMeetup

Kubernetes 系统的表现如何?

工作节点(kind-worker2)被设置为 NotReady 状态,但 Pod 仍在继续运行,这是因为负责节点的 kube-controller-manager 的 node-controller 部分在等待 pod-eviction-timeout,这是确保在 Pod 删除之前该节点是无法访问的。

pod-eviction-timeout 默认设置为 5 分钟,可以在 kube-controller-manager 启动过程中进行修改。

在 pod-eviction-timeout(示例中为 5 分钟)之后,node-controller 将在隔离节点上运行的 pod 调度为 Termination 状态。kube-controller-manager 的 Deployment Controller 部分开始在不同的节点上创建新的副本和调度。在示例中,我们在 kind-worker 节点上创建了一个 Nginx 副本。图 3 展示了 Kubernetes 系统上的所有状态更改:

图 3:主节点上的情况

K8sMeetup

隔离工作节点上运行的 Pod 会如何?

进入隔离工作节点,让我们看看发生了什么。从图 4 中,我们可以观察到 Pod 还在继续运行,这是因为 API server 无法与隔离节点的 Kubelet 通信来删除 Pod。同样,Kubelet 也无法控制运行哪些 Pod。

图 4:Pod 继续在隔离工作节点上运行

一旦隔离节点加入集群,Pod 就能删除。

K8sMeetup

总结

当节点断开连接后,很多事情都在背后发生,以下是简单的总结:

  • 当节点变得不可访问时,主节点会将节点设置为“NotReady”状态。
  • 主节点在执行任何操作之前会等待 pod-eviction-timeout。作为 kube-controller-manager 引导过程的一部分,默认情况下,pod-eviction-timeout 参数设置为 5 分钟。
  • 在 pod-eviction-timeout 时间之后,主节点的隔离节点 Pod 处于“Terminating”状态,并会在不同节点上创建 Pod 新实例。
  • 这些 Pod 会继续在隔离节点上运行。

原文链接:https://medium.com/tailwinds-navigator/kubernetes-tip-what-happens-to-pods-running-on-node-that-become-unreachable-3d409f734e5d

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档