Kubernetes(k8s)最大启动时长研究

javalover123
• 阅读 361

一、前言

应用部署在 Kubernetes(k8s)上,有些应用启动慢一些,没启动好 就又被 k8s 重启了

二、处理过程

1. 看日志

[2023-05-23 14:38:52.249]|-INFO |-[background-preinit]|-o.h.v.i.u.Version[0]|-[TID: N/A]|-HV000001: Hibernate Validator 6.1.7.Final
[2023-05-23 14:40:11.817]|-INFO |-...

2023-05-23 14:40:22 登录主机: aaaa失败!
原因:Failed to upgrade to websocket: Unexpected HTTP Response Status Code: 500 Internal Server Error

2. 看探针配置

      livenessProbe:
        failureThreshold: 3
        initialDelaySeconds: 30
        periodSeconds: 10
        successThreshold: 1
        tcpSocket:
          port: 60001
        timeoutSeconds: 1

3. 分析

  • 刚开始以为 80秒左右(14:38:52.249 到 14:40:11.817),应用被重启了
  • 发现和 探针配置的不一样,initialDelaySeconds + periodSeconds * failureThreshold = 60秒
  • 然后发现最终结束时间应该是 14:40:22 登录主机: aaaa失败,就是 90秒左右
  • 最后发现还有个 terminationGracePeriodSeconds: 30,加上探针 60秒,刚好 90秒左右。至此终于 水落石出
  • 建议运维把 initialDelaySeconds 改为 60 以后,成功启动

三、总结

  • 最长重启时间:initialDelaySeconds + (periodSeconds + timeoutSeconds) * failureThreshold + terminationGracePeriodSeconds(默认30秒)
  • 建议 适当调大 initialDelaySeconds(如 60)、failureThreshold(如 6)、periodSeconds(如 20),总之根据上面的公式计算的时长 要大于 实际启动时长(如 本地测试)
  • 配置存活、就绪和启动探针 | Kubernetes

本文首先发布于 https://www.890808.xyz/ ,其他平台需要审核更新慢一些。

Kubernetes(k8s)最大启动时长研究

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
01:k8s 安装部署
k8s官网详解:https://www.kubernetes.org.cn/k8s准备环境:三台centos7服务器192.168.6.129k8smaster(主)192.168.6.130k8snode1(节点)192.168.6.131k8snode2(节点)kubernetes(
Stella981 Stella981
3年前
Kubernetes(三):k8s集群部署之kubeadm
k8s部署环境公有云环境:AWS、腾讯云、阿里云等等私有云:OpenStack、vSphere等Baremetal环境:物理服务器或独立虚拟机(底层没有云环境)。k8s部署方式Minikube:Kubernetes官网提供的微型分布式环境(ht
Stella981 Stella981
3年前
K8S即将弃用Docker?慌不?
长久以来,在K8S环境中,都是将docker作为K8S默认的容器运行时,docker和k8s的结合也一直挺顺手的。然而在2020年末,Kubernetes正式发布了1.20版本,其中最重要的一个更新就是将要弃用dockershim(不是docker)dockershim是K8S为了按照CRI协议对接docker而实现的。这
Stella981 Stella981
3年前
K8s
kubernetes(简称 K8s)是一个开源的,用于管理云平台中多个主机上的容器化的应用。在之前的文章中,我介绍如何通过 Docker 为我们提供的实验网站 PlaywithKubernetes(PWK)来搭建 Kubernetes 集群(点击查看)。    但如果每次学习时都需要重新搭建一个 K8s 集群还是很麻烦。好在 Kubernetes 
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Stella981 Stella981
3年前
Kubernetes集群详细介绍及部署
kubernetes的介绍:kubernetes是谷歌在2014年6月的一个开源集群项目,使用go语言开发,因为除了ks后只有8个字母又被称为k8s。k8s的主要作用:
javalover123
javalover123
Lv1
10年Java经验,多个开源项目贡献者。https://github.com/javalover123
文章
16
粉丝
2
获赞
5