k8s 探针 exec多个判断条件条件 多个检测条件
背景
1,之前我们的yaml文件里面有就绪探针。
2,探针是检测一个文件是否生成,生成了说明服务正常。
3,现在要加一个检测,也是一个文件是否存在并且不为空。
4,只有两个条件同时满足了 服务才算正常。然后就可以给外部提供服务了。
一、k8s的探针
1,K8s的探针,其实就是一种检测预设是否满足一种条件,然后做出相应的动作。
2,比如检测容器是否正常,服务是否正常,是一种提前做出反应的一种手段机制。
3,容器的启动和服务的状态是我们最关心的。
4, 存活探针:检测容器是否启动存活
就绪探针:检测服务是否正常,不正常之前是unready,不加入endport。
启动探针:设置了启动探针,则禁止所有的其他探针,知道他成功为止。
二、探针的探测方式
1,exec,命令式探测,命令或者脚本,返回非0为失败。
2,HTTP请求接口,任何大于或等于 200 并且小于 400 的返回代码标示成功,其它返回代码都标示失败。
3,TCP链接检测,建立连接则为正常。
三、exec command 多个检测条件
1,其实我们开发的需求还是非常的明确的,就是多加一个检测条件。
2,如果检测的文件存在且不为空,那么这个Pod就不让提供服务。
3.1 分析
1,不让pod提供服务,那么只有就绪探针满足。
2,我去检查了一下我们的yaml文件,里面的就绪探针是有东西的。
3,那么久只能在原先的基础上面加。
3.2 原始的探针
其实就是检测了一下这个文件存不存在。
readinessProbe: exec: command: - test - -f - /var/www/html/.env initialDelaySeconds: 2 periodSeconds: 2 timeoutSeconds: 2 failureThreshold: 15
3.3 加上另一个检测条件
1,那么只要这个命令执行最后的返回值为0,那么这个探针就是成功的
2,如果/tmp/database_migrate_error.log文件存在且不为空,那么就会执行ceshi命令,
这个命令根本就没有,所以肯定会失败。所以返回非0,所以这个容器就会一直处于unready状态。
3,这样就满足了开发的需求。容器不提供服务。
readinessProbe: exec: command: - /bin/sh - -c - test -f /var/www/html/.env && if [ -s /tmp/database_migrate_error.log ]; then ceshi; fi initialDelaySeconds: 2 periodSeconds: 2 timeoutSeconds: 2 failureThreshold: 15
四、总结
1,首先我这篇随笔只是记录了一个点,探针的exec 多个检测条件。
2,关于k8s整个探针的随笔我后期会写一篇单独的。
3,附上官网地址:https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes
写的不好,请多多指教:https://www.cnblogs.com/fanfanfanlichun/
原文地址:https://www.cnblogs.com/fanfanfanlichun/p/15206016.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 学习|Unity3D使用协程实现减速停车效果
- R语言实现文献的批处理
- django-haystack ImportError: cannot import name 'six' from 'django.utils' in django 3.x
- Thanos 与 VictoriaMetrics,谁才是打造大型 Prometheus 监控系统的王者?
- 阅读大型开源软件的四个技巧
- Tomcat NIO(7)-Poller
- python 求解线性规划问题
- Netty高性能之道
- 关于im-live-sells自定义群组字段的使用
- 浅谈CAP与Kafka
- windows下查看进程(进阶)
- Salesforce LWC学习(二十二) 简单知识总结篇二
- 初识Netty
- SpringCloud微服务项目实战 - 缓存详解及高效缓存接入
- Vue + Flask 实战开发系列(十)