攻城狮鼓励师 2022-05-07 09:22 采纳率: 100%
浏览 160
已结题

k8s 监听节点宕机的时间设置

环境: 1个master , 2个node,
操作:master 通过 "kubectl sacle --replicas=10 deployment/mynginx-dep" 命令创建了10pod。我将其中一个node节点关机, master 过了很久很久才在另外一个node中创建新的pod(感觉差不多有67分钟)。 我想问下, 如何设置master发现node节点宕机,然后重新再另外一个node上拉起 pod 的时间?(不是配置原因, 三台都是4核8G的)。

不知道我有没有描述清楚,我觉得67分钟太久了, 想设置短一些,因为再学习测试, 等待的时间太久了。有没有清楚的, 麻烦告知一下, 谢谢。

  • 写回答

2条回答 默认 最新

  • hyh123a 全栈领域新星创作者 2022-05-07 10:08
    关注

    我觉得可能不是配置的问题,可能是node节点数目或者node服务器本身资源的问题。
    一般按照官方的说法,
    最基本的k8s集群需要三台服务器,1个master 2个node
    如果你一个node宕机了,另外只剩下一个master或者node可能达不到k8s的默认配置要求,所以导致会有点慢。

    你可以这样操作试下:
    1、再加一个node节点,这样就有1master+3node
    2、宕机其中一个node节点,查看其中的被关闭的node节点上的pod数目,在其他的node节点上创建出来大概有多长时间,理论上基本都是几分钟就可以了。
    我在之前的一个集群环境中(大概6个node节点)测试过这种情况,一个node宕机,其他的pod资源自动在其他的node上创建。

    另外,你需要先确保正常环境下一个pod重新创建拉取需要多长时间,
    (比如网络问题:镜像的拉取和其他配置),确保正常大概是多长时间,这样做个对比比较。
    如果你的deployment比较耗资源,可以用简单的nginx或者busybox来测试,

    至于Node宕机时间的设置
    默认一般是300s,如果想更短,
    可以自行设置,
    这个现象与 Kubelet 的状态更新机制密切相关,下面我们来分析下 Kubelet 状态更新的基本流程。

    • 1、kubelet

    kubelet 自身会定期更新状态到 apiserver,通过参数 --node-status-update-frequency 配置上报频率,默认 10s 上报一次。

    • 2、kube-controller-manager

    kube-controller-manager 会定时去检查 kubelet 的状态,可通过 --node-monitor-period 自定义这个时间 ,默认是 5s。
    当 node 失联一段时间后,kubernetes 判定 node 为 notready 状态,这段时长可通过 --node-monitor-grace-period 参数配置,默认 40s。
    当 node 状态为 notready 一段时间后,kubernetes 判定 node 为 unhealthy 状态,这段时长可通过 --node-startup-grace-period 参数配置,默认 1m0s。
    当 node 状态为 unhealthy 一段时间后,kubernetes 开始删除原 node 上的 Pod,这段时长可通过 --pod-eviction-timeout 参数配置,默认 5m0s。

    具体设置参数参考:

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月15日
  • 已采纳回答 5月7日
  • 赞助了问题酬金5元 5月7日
  • 创建了问题 5月7日

悬赏问题

  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者
  • ¥15 CST2023安装报错
  • ¥15 使用diffusionbert生成文字 结果是PAD和UNK怎么办
  • ¥15 有人懂怎么做大模型的客服系统吗?卡住了卡住了
  • ¥20 firefly-rk3399上启动卡住了
  • ¥15 如何删除这个虚拟音频