新闻详情

新闻详情

首页 / 资讯中心 / 详情

KubeVela 应用健康探针(livenessProbe/readinessProbe)实战:用 Application 声明组件存活检测与自动重启

发布时间:2026/9/29 9:57:41来源:尧图网络
KubeVela 应用健康探针(livenessProbe/readinessProbe)实战:用 Application 声明组件存活检测与自动重启
云原生DevOps运维微服务【免费下载链接】kubevelaThe Modern Application Platform.项目地址https://gitcode.com/gh_mirrors/ku/kubevela点击查看免费下载本指南以 docs/examples/app-with-probe 示例为主线讲解如何在 KubeVela 的 Application 中通过properties.livenessProbe声明组件存活探针验证应用是否健康运行。读完本文你将掌握httpGet/exec/tcpSocket三种探针的写法、#HealthProbe全部参数的默认值与含义、kubectl部署与排查方法并从 CUE 组件模板与控制器测试源码层面理解 KubeVela 如何将探针声明渲染到 Kubernetes Pod 中。场景与前置条件探针Probe是 Kubernetes 保障在线服务可用性的核心机制kubelet 周期性对容器发起检查一旦 liveness 探针连续失败kubelet 就会按restartPolicy重启容器。KubeVela 作为应用交付平台把这一能力以声明式参数的形式暴露在 Application 的组件properties中用户无需直接编写 Deployment YAML 即可配置探针。开始前需要满足两个前提可以访问一个 Kubernetes 集群远程集群或本地kind、minikube均可已经安装 KubeVela安装方式可参考 charts/vela-core 及 references/cli/install.go 中的 CLI 安装流程。示例应用在 Application 中声明 livenessProbe仓库中的示例文件 app-with-probe.yaml 完整内容如下apiVersion: core.oam.dev/v1beta1 kind: Application metadata: name: my-website spec: components: - name: frontend type: webservice properties: image: oamdev/testapp:v1 cmd: [node, server.js] port: 8080 livenessProbe: httpGet: path: / port: 8080这是一个标准的core.oam.dev/v1beta1类型 Application包含一个名为frontend的webservice组件。其中与本文主题直接相关的关键字段是properties下的livenessProbepath健康检查路径对应你的 Web 服务器暴露的健康端点这里为根路径/port服务器监听的端口这里为8080。livenessProbe告诉 KubeVela请周期性地对frontend容器的http://:8080/发起 HTTP GET 请求只要请求成功返回即认为容器存活。三种探针方式与 #HealthProbe 参数全解示例使用的是httpGet方式这是 Web 服务最常用的探测方法。除此之外KubeVela 的webservice组件还支持exec与tcpSocket两种方式三者互斥必须且只能指定其一。从 webservice.cue 的定义可以看到完整的#HealthProbe结构该组件模板由 charts/vela-core/templates/defwithtemplate/webservice.yaml 打包下发到集群参数类型默认值说明exec对象无在容器内执行命令判断健康状态命令以空格分词组成数组退出码 0 视为成功其余视为失败httpGet对象无通过 HTTP GET 请求判断健康状态需指定path端点路径、port端口可选host、scheme默认HTTP、httpHeaderstcpSocket对象无通过探测 TCP 端口是否可连接判断健康状态需指定portinitialDelaySecondsint0容器启动后延迟多少秒才开始第一次探测periodSecondsint10每隔多少秒执行一次探测timeoutSecondsint1探测超时秒数超时视为失败successThresholdint1连续成功多少次才认为探针从失败转为成功failureThresholdint3连续失败多少次判定容器不存活liveness或未就绪readinessexec 方式示例对于无法暴露 HTTP 端口的进程可以用命令方式探测livenessProbe: exec: command: [cat, /tmp/healthy]tcpSocket 方式示例对纯 TCP 服务如数据库、消息队列用端口连通性探测livenessProbe: tcpSocket: port: 6379httpGet 高级用法httpGet还支持scheme、host、httpHeaders例如探测 HTTPS 端点readinessProbe: httpGet: path: /v1/health port: 8080 scheme: HTTPS httpHeaders: - name: Authorization value: Bearer xxx部署应用并检查状态将示例文件应用到集群kubectl apply -f app-with-probe.yamlKubeVela 控制器会把 Application 渲染为 Kubernetes 原生资源Deployment、Pod 等。查看 Pod 状态$ kubectl get pod NAME READY STATUS RESTARTS AGE frontend-86bc89d8f5-xgrnc 1/1 Running 0 18s再通过describe观察探针的实际配置$ kubectl describe pod frontend-86bc89d8f5-xgrnc ... Liveness: http-get http://:8080/ delay0s timeout1s period10s #success1 #failure3 ...(other information)输出中的关键信息与 Application 声明一一对应http-get http://:8080/对应httpGet.path/与httpGet.port8080delay0s对应initialDelaySeconds默认值 0timeout1s、period10s、#success1、#failure3分别对应timeoutSeconds、periodSeconds、successThreshold、failureThreshold的默认值见 webservice.cue。当探针连续 3 次failureThreshold探测失败时kubelet 会判定容器不再存活并自动重启它——这正是livenessProbe的自愈价值所在RESTARTS 列会随之增长。原理纵深探针参数如何渲染到 Pod从源码结构看探针能力的底层实现非常直观在 webservice.cue 中组件模板通过 CUE 条件渲染把参数透传到 Deployment 的容器字段if parameter[livenessProbe] ! _|_ { livenessProbe: parameter.livenessProbe } if parameter[readinessProbe] ! _|_ { readinessProbe: parameter.readinessProbe }也就是说webservice组件底层渲染为apps/v1Deployment见 webservice.cue将用户声明的livenessProbe/readinessProbe原样映射为 Pod 容器规格的对应字段随后由 KubeVela 资源调度器下发到集群最终由 kubelet 执行。整个链路为Application → 组件 CUE 模板渲染 → Deployment → Pod → kubelet 探针执行 → 失败自动重启。因此 app-with-probe.yaml 中 3 行探针声明等价于手写 Deployment 中数十行的livenessProbe配置且默认值由组件模板统一管理降低了用户心智负担。更多探针能力readinessProbe 与 startup-probe traitreadinessProbe就绪探针除 liveness 外webservice组件同样支持readinessProbe用于判断容器是否已准备好接收流量。它与 liveness 的参数结构完全相同同样基于#HealthProbe区别仅在语义readiness 失败不会重启容器只会把 Pod 从 Service 的 Endpoints 中摘除。startup-probe trait启动探针对于启动缓慢的应用如 JVM 应用KubeVela 还提供了独立的startup-probe内置 trait定义见 startup-probe.cue。它在#HealthProbe基础上额外支持containerName指定目标容器名不设置时默认为组件名terminationGracePeriodSeconds探针失败后优雅终止的宽限秒数grpc通过 gRPC HealthCheckRequest 探测probes为多容器场景批量指定探针。该 trait 通过podDisruptive: true与appliesToWorkloads: [deployments.apps, statefulsets.apps, daemonsets.apps, jobs.batch]声明适用负载类型见 startup-probe.cue可作为 trait 追加到组件上。其他支持探针的组件类型除webservice外仓库内置的 statefulset.cue、daemon.cue、cron-task.cue、task.cue、worker.cue 均定义了livenessProbe?: #HealthProbe与readinessProbe?: #HealthProbe参数使用方式与webservice完全一致。源码级验证控制器测试中的探针用例仓库控制器测试 application_controller_test.go 中构造了一个携带完整探针配置的 Application其livenessProbe包含failureThreshold: 3、httpGet.path: /v1/health、httpGet.port: 8080、httpGet.scheme: HTTP、initialDelaySeconds: 60、periodSeconds: 60、successThreshold: 1、timeoutSeconds: 5覆盖了#HealthProbe的全部字段同文件 application_controller_test.go 还有 test application with healthProbe which use https 用例验证 HTTPS 探针场景。这些用例证明探针参数从 Application 到 Pod 规格的完整渲染链路是经过端到端验证的读者可据此编写自己的探针配置。实践建议与注意事项三种探针各司其职启动慢的服务先用startup-probe放行再配livenessProbe兜底重启最后用readinessProbe控制流量接入不要用 liveness 承担 readiness 的职责避免因瞬时高负载误杀容器。合理设置阈值failureThreshold默认 3、timeoutSeconds默认 1s对延迟敏感的调用链可适当调大timeoutSeconds与periodSeconds避免误判。探测路径要轻量健康端点应只反映进程可用性避免在探针路径中执行重查询或依赖外部服务否则会放大抖动。通过kubectl describe pod校验部署后务必观察describe输出中的Liveness/Readiness/Startup行确认参数与声明一致参考上文示例输出。借助 KubeVela 的声明式探针能力你可以把容器健康管理收敛到 Application 这一个交付入口中让应用是否存活、何时自动重启成为可审计、可版本化的配置而非散落在裸 Deployment 中的零散字段。赞分享云原生DevOps运维微服务【免费下载链接】kubevelaThe Modern Application Platform.项目地址https://gitcode.com/gh_mirrors/ku/kubevela点击查看免费下载相关推荐为什么选择YPrompt5大优势助你生成高质量AI提示词为什么选择YPrompt5大优势助你生成高质量AI提示词 YPrompt是一款强大的AI提示词生成与优化工具通过对话挖掘用户需求自动生成专业提示词支持系eogee/any4any服务健康检查存活探针与就绪探针配置eogee/any4any服务健康检查存活探针与就绪探针配置 在微服务架构中服务的可靠性直接决定了系统的稳定性。any4any作为集成语音识别、文本转语音、人工智能大模型模型推理服务RAG语音数字人音视频后端MCP服务Sealos容器健康检查存活探针与就绪探针最佳配置Sealos容器健康检查存活探针与就绪探针最佳配置 容器健康检查的关键价值 在KubernetesK8s集群管理中容器健康检查是保障应用高可用性的核心机云原生后端前端微服务容器编排AI 应用上一篇jcalaBlog写作体验基于Editor.md的Markdown编辑器完整使用指南下一篇桌面效率革命GeekDesk极客启动器重塑你的工作方式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

在Python编程生态中,动态求值(Dynamic Evaluation)是一项赋予代码极高灵活性的核心特性 2026/9/29 9:57:37

在Python编程生态中,动态求值(Dynamic Evaluation)是一项赋予代码极高灵活性的核心特性

在Python编程生态中,动态求值(Dynamic Evaluation)是一项赋予代码极高灵活性的核心特性。它允许程序在运行时将字符串形式的代码或表达式解析并执行,从而打破了传统静态编译语言的刚性限制。这种机制使得开发者能够构建高度可配置…

阅读更多 →
高效自动化测试脚本的十大最佳实践:从能跑到可维护 2026/9/29 9:57:37

高效自动化测试脚本的十大最佳实践:从能跑到可维护

做自动化测试这些年,我见过太多脚本项目从雄心勃勃走向静默弃坑。最典型的剧本是:团队定了个自动化率目标,几个人加班加点写脚本,前两个月确实跑得欢,可只要业务一改版,脚本就开始成片变红,修脚…

阅读更多 →
从零搭建灌装监控系统(八):断线检测与自动重连 2026/9/29 9:57:37

从零搭建灌装监控系统(八):断线检测与自动重连

断线检测与自动重连这是「从零搭建灌装监控系统」系列第8篇。上一篇实现了 200ms 轮询循环,但 PLC 断线后只是检测到断线,不会自动恢复。这篇实现自动重连机制——3次超时阈值判定断线、串口和TCP分别重连策略、重连间隔递增、重连成功后恢复轮询。让系统…

阅读更多 →
大模型推理加速:TensorRT-LLM与vLLM协同优化实战 2026/9/29 9:57:30

大模型推理加速:TensorRT-LLM与vLLM协同优化实战

1. 项目概述:Model-Optimizer 不是工具名,而是工程范式的代号“Model-Optimizer”这个标题乍看像某个开源工具或商业软件的名称,但结合NVIDIA、TensorRT-LLM、vLLM、PT文件转换、Docker镜像部署等高频热词,它实际指向的是一整套面…

阅读更多 →
安稳顺利毕业:6款2026年高效AI论文平台深度横评与TaoToken统一Key接入实践 2026/9/29 9:57:30

安稳顺利毕业:6款2026年高效AI论文平台深度横评与TaoToken统一Key接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
大模型推理优化实战:从量化到连续批处理的Model-Optimizer指南 2026/9/29 9:57:30

大模型推理优化实战:从量化到连续批处理的Model-Optimizer指南

最近开源社区里“Model-Optimizer”这个名字被反复提起,我一开始以为又是个调参工具,后来真正把这样一套组件落到自己的服务里,才发现它覆盖的东西比名字听起来要宽得多。今天不打算写什么纯概念科普,就结合我实际部署、压测、掉坑…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉