当前位置: 首页 > news >正文

k8s_探针专题

关于探针

生产环境中一定要给pod设置探针,不然pod内的应用发生异常时,K8s将不会重启pod。
需要遵循以下几个原则(本人自己总结,仅供参考):

  1. 探针尽量简单,不要消耗过多资源。因为探针较为频繁的定期执行,过于复杂和消耗资源的探针对k8s和生产环境是不利的。
  2. 探针返回的结果尽量代表pod的健康状态,而不是简单的返回。可以适当做一些pod健康性检查。特别要避免探针返回了健康状态,但实际pod处于异常状态。
  3. 探针返回的状态需要代表的是本pod的健康状态,不要受外部组件影响。比如pod连接了一个数据服务,如果数据服务异常,此时探针不要返回异常。不然k8s认为pod处于异常,不停重启pod,但这种操作对于修复异常没有任何帮助,反而不停拖累k8s。
    在 Kubernetes 中,探针(Probe)用于检查 Pod 内容器的健康状况和可用性。

常用的探针有三种:

  1. 存活探针(Liveness Probe):用于检查容器是否存活。如果探测失败,Kubernetes 将杀死容器并根据策略重启。
  2. 就绪探针(Readiness Probe):用于检查容器是否准备好接受流量。如果探测失败,Pod 将从服务的端点列表中移除。
  3. 启动探针(Startup Probe):用于检查容器是否已成功启动。如果探测失败,Kubernetes 将根据策略重启容器。启动探针的优先级高于存活探针,在启动探针成功之前,存活探针不会生效。

每种探针都有多个可配置的参数,可以帮助我们在生产环境中更细致地监控和管理 Pod。以下是一个详细的 Pod 配置示例,其中包含了所有三种探针及其常用参数:

apiVersion: v1
kind: Pod
metadata:name: example-pod
spec:containers:- name: example-containerimage: example-image:latestports:- containerPort: 8080# 存活探针(Liveness Probe)配置livenessProbe:httpGet:path: /healthzport: 8080httpHeaders:- name: Custom-Headervalue: AwesomeinitialDelaySeconds: 30periodSeconds: 10timeoutSeconds: 5successThreshold: 1failureThreshold: 3# 就绪探针(Readiness Probe)配置readinessProbe:httpGet:path: /readyport: 8080initialDelaySeconds: 5periodSeconds: 10timeoutSeconds: 5successThreshold: 1failureThreshold: 3# 启动探针(Startup Probe)配置startupProbe:httpGet:path: /startupport: 8080initialDelaySeconds: 0periodSeconds: 10timeoutSeconds: 5successThreshold: 1failureThreshold: 30# 其他探针类型(如TCP和命令执行)示例livenessProbe:tcpSocket:port: 8080initialDelaySeconds: 30periodSeconds: 10timeoutSeconds: 5successThreshold: 1failureThreshold: 3readinessProbe:exec:command: ["sh", "-c", "echo 'hello'"]initialDelaySeconds: 5periodSeconds: 10timeoutSeconds: 5successThreshold: 1failureThreshold: 3

探针参数说明

  • initialDelaySeconds: 探针首次启动前的延迟时间。
  • periodSeconds: 探针的执行周期。
  • timeoutSeconds: 探针执行的超时时间。
  • successThreshold: 成功阈值。连续成功的次数达到该值时,认为探针检查通过。
  • failureThreshold: 失败阈值。连续失败的次数达到该值时,认为探针检查失败。

通过合理配置探针及其参数,可以有效地监控和管理 Pod 的状态,确保应用在生产环境中的高可用性和可靠性。

http://www.lryc.cn/news/374658.html

相关文章:

  • MySQL触发器基本结构
  • 前缀和(一维前缀和+二维前缀和)
  • web前端五行属性:深入探索与实战解析
  • 白酒:茅台镇白酒的酒厂社会责任与可持续发展
  • 音视频开发_SDL音频播放器的实现
  • C语言学习系列:初识C语言
  • 利用反向代理编写HTTP抓包工具——可视化界面
  • 下拉框数据被遮挡 且 后续数据无法下拉的 解决方法
  • 课设--学生成绩管理系统(二)
  • STM32CubeMX配置-外部中断配置
  • 基于Vue的日程排班表 - common-schedule
  • SmartEDA、Multisim、Proteus大比拼:电路设计王者之争?
  • 【教资科一传统文化】文化素养传统文化之神话传说、天文历法、古代称谓、中国传统节日、成语典故
  • Apache Pulsar 从入门到精通
  • [Bug]使用duckduckgo的duckduckgo_search API搜索图片出现了错误
  • 线程池若干问题
  • k8s+RabbitMQ单机部署
  • github.com/therecipe/qt windows中安装
  • LogicFlow 学习笔记——11. 对齐线 和 键盘快捷键
  • FastWeb - Lua开源跨平台网站开发服务
  • 原子阿波罗STM32F767程序的控制器改为STM32F407驱动LCD屏
  • 04-jQuery工具函数及 jQuery 插件
  • 基于Python的花卉识别分类系统【W9】
  • Visual Studio Code 配置教程,手把手教你如何配置
  • 教案:Horovod v0.2 介绍与使用
  • 深入探索Spring Boot:原理与实践
  • 基于SSM框架的电影院售票网站
  • oracle发送http请求
  • 软件回归测试:策略及案例分析
  • openstack搭建