首页 > 其他分享 >困扰多年的 Kubernetes 健康检查问题终于解决了

困扰多年的 Kubernetes 健康检查问题终于解决了

时间:2023-02-28 09:03:08浏览次数:45  
标签:困扰 Kubernetes probe 192.168 nas 挂载 健康检查 pod

我们有一个部署在 k8s 上的应用被一个健康检查问题困扰多年,每次发布时由于健康检查(readiness probe)失败,pod 要被重启很多次,快的话要等半小时到1小时 pod 才能启动成功,慢的话要等几小时甚至十几个小时,最近一次最夸张,pod 重启了2天才启动成功,重启了300多次。

NAME                             READY   STATUS    RESTARTS          AGE     IP
i-web-2.1.374-75d745d9f-8l4zm    1/2     Running   328 (84s ago)     35h     192.168.39.73

pod 重启是因为健康检查时出现 connection refused 错误

Liveness probe failed: Get "http://192.168.242.152:80/alive": dial tcp 192.168.242.152:80: connect: connection refused
Container i-web failed liveness probe, will be restarted
Readiness probe failed: Get "http://192.168.242.152:80/alive": dial tcp 192.168.242.152:80: connect: connection refused

昨天终于找到了原因,是 deployment 中 volumeMounts 挂载了 2 个 nas 路径引起的

volumeMounts
- name: nas
  mountPath: /app/logs
  subPath: logs/i/web/
- name: nas
  mountPath: /app/App_Data
  subPath: appdata/i/backup

2个 nas 挂载对应的是同一个 volume,PersistentVolume 使用的是阿里云文件存储 nas

volumes:
- name: nas
  persistentVolumeClaim:
    claimName: pvc-nas-production

去掉其中一个挂载,问题就解决了。

之前这 2 个挂载对应的是 2 个不同的阿里云 nas,后来排查 pod 重启问题时以为是同一个 pod 挂载 2 个不同 nas 引起的,于是改为使用同一个 nas volume 挂载2个路径,但问题依旧,于是就没有继续从 nas 角度排查问题,原来一个 pod 不仅不能同时挂载 2 个 nas,而且不能挂载同一个 nas 的 2 个 不同路径。

标签:困扰,Kubernetes,probe,192.168,nas,挂载,健康检查,pod
From: https://www.cnblogs.com/dudu/p/17162589.html

相关文章

  • 【LeeCode】2024. 考试的最大困扰度
    【题目描述】一位老师正在出一场由 ​​n​​​ 道判断题构成的考试,每道题的答案为true(用 ​​'T'​​​ 表示)或者false(用 ​​'F'​​ 表示)。老师想增加学生对自......
  • 10. Kubernetes - DNS
    服务发现通过Service知道了后端的Pod服务可以通过ClusterIP代理出来让其他服务能够访问到。但也存在一个问题,Service可能会被更新或者重建,下一次的IP可能就变了......
  • K8s学习(二)Kubernetest的资源管理及五大资源介绍
    前言本文是k8s学习系列文章,前后串起来是一个完整的课程(学习笔记),本文记录k8s的资源管理方式及五大类资源的具体管理命令,看完本文基本上就能实现k8s的基本操作,可以独立部署小......
  • 09. Kubernetes - Service
    labelSelector在某些特殊的使用场景中,可能会遇到某些服务只能部署在某些特定的机器上面的情况。为了将这一部分机器逻辑上隔离出来,就需要用户给这批机器打上特定的标签。......
  • kubernetes之Ingress发布Dashboard(二)
    1.什么是DashboardDashboard是基于网页的Kubernetes用户界面。你可以使用Dashboard将容器应用部署到Kubernetes集群中,也可以对容器应用排错,还能管理集群资源。你......
  • 安装Kubernetes
    2、安装Kubernetes1、系统初始化初始化关闭防火墙:systemctlstopfirewalldsystemctldisablefirewalld关闭selinux:sed-i's/enforcing/disabled/'/etc/s......
  • 09. Kubernetes - 可变信息配置管理(ConfigMap)
    ConfigMap前面的资源对象并不能满足日常工作中的所有需求,一个最重要的需求就是应用的配置管理,特别是可变配置。比如,在开发过程中程序需要配置MySQL或者Redis的连接地......
  • 08. Kubernetes - HPA(Metrics Server)
    HPA使用Deployment的时候知道了可以通过kubectlscale的方式调整集群中Pod的副本数以满足业务的需求。在生产环境中,应用的资源使用率通常都有高峰和低谷的时候,如何......
  • kubernetes集群pod中的pause容器作用
    kubernetes集群pod中的pause容器作用我们搭建完集群了以后,可以使用最简单的方式创建一个pod,随意你建立什么pod,去访问相应node上执行​​dockerps​​就会看到有一种pause......
  • 07. Kubernetes - 控制器
    控制器在实际应用中,一般不会直接使用Pod,而是会使用各种Pod的上层封装控制器来满足使用需求。Kubernetes中运行了一系列控制器来确保集群的当前状态与期望状态保持一......