k8s列出所有未配置探针的deployment
在 Kubernetes 中,探针(Probes)用于检测容器的健康状态,主要包括以下三种:
- Liveness Probe(存活探针):检测容器是否正在运行。
- Readiness Probe(就绪探针):检测容器是否准备好接收流量。
- Startup Probe(启动探针):检测容器是否已完成启动。
如果 Deployment 未配置这些探针,可能会导致容器在异常状态下继续运行或接收流量。因此,列出所有未配置探针的 Deployment 是一个常见的运维需求。
列出所有未配置探针的 Deployment
以下是一个 Shell 脚本,用于列出 Kubernetes 集群中所有未配置探针的 Deployment:
#!/bin/bash
# 设置命名空间(默认为所有命名空间)
NAMESPACE="${1:-}"
# 获取所有 Deployment
if [[ -z "$NAMESPACE" ]]; then
DEPLOYMENTS=$(kubectl get deployments --all-namespaces -o json)
else
DEPLOYMENTS=$(kubectl get deployments -n "$NAMESPACE" -o json)
fi
# 解析 Deployment
echo "$DEPLOYMENTS" | jq -r '
.items[] |
select(
(.spec.template.spec.containers[]? |
(.livenessProbe? == null) and
(.readinessProbe? == null) and
(.startupProbe? == null)
)
) |
"Namespace: \(.metadata.namespace) | Deployment: \(.metadata.name)"
'
脚本说明
参数说明
NAMESPACE:可选参数,指定要检查的命名空间。如果不指定,则检查所有命名空间。
获取 Deployment
- 使用
kubectl get deployments获取所有 Deployment 的 JSON 格式数据。
- 使用
过滤未配置探针的 Deployment
- 使用
jq解析 JSON 数据,筛选出未配置livenessProbe、readinessProbe和startupProbe的 Deployment。
- 使用
输出结果
- 输出未配置探针的 Deployment 的命名空间和名称。
使用方法
安装依赖
确保已安装
kubectl和jq。安装
jq:# Ubuntu/Debian
sudo apt-get install jq # CentOS/RHEL
sudo yum install jq # macOS
brew install jq
运行脚本
检查所有命名空间:
./check-probes.sh
检查指定命名空间(如
default):./check-probes.sh default
示例输出
Namespace: default | Deployment: my-app
Namespace: kube-system | Deployment: coredns
扩展功能
列出未配置特定探针的 Deployment
如果需要单独检查未配置livenessProbe、readinessProbe或startupProbe的 Deployment,可以修改jq过滤条件。例如:仅检查未配置
livenessProbe的 Deployment:echo "$DEPLOYMENTS" | jq -r '
.items[] |
select(
(.spec.template.spec.containers[]? |
(.livenessProbe? == null)
)
) |
"Namespace: \(.metadata.namespace) | Deployment: \(.metadata.name)"
'
输出详细信息
如果需要输出 Deployment 的详细信息(如容器名称),可以修改jq输出格式:echo "$DEPLOYMENTS" | jq -r '
.items[] |
select(
(.spec.template.spec.containers[]? |
(.livenessProbe? == null) and
(.readinessProbe? == null) and
(.startupProbe? == null)
)
) |
"Namespace: \(.metadata.namespace) | Deployment: \(.metadata.name) | Containers: \([.spec.template.spec.containers[].name] | join(", "))"
'
示例输出:
Namespace: default | Deployment: my-app | Containers: app, sidecar
导出结果到文件
将结果导出到文件:./check-probes.sh > no-probes-deployments.txt
总结
通过该脚本,可以快速列出 Kubernetes 集群中所有未配置探针的 Deployment,帮助运维人员及时发现潜在问题并优化容器健康检查配置。
k8s列出所有未配置探针的deployment的更多相关文章
- k8s endpoints k8s未配置选择器的service
service 其实是一个TCP/UDP 代理 不仅可以代理Pod也可以代理其他的非Pod资源,例如外网的数据库,或者其他的资源 创建未配置选择器的service, service 的对外端口是500 ...
- k8s之资源限制以及探针检查
k8s之资源限制以及探针检查 一.资源限制 1. 资源限制的使用 当定义Pod时可以选择性地为每个容器设定所需要的资源数量.最常见的可设定资源是CPU和内存大小,以及其他类型的资源. 2. reuqe ...
- [转帖]在 k8s 中通过 Ingress 配置域名访问
在 k8s 中通过 Ingress 配置域名访问 https://juejin.im/post/5db8da4b6fb9a0204520b310 在上篇文章中我们已经使用 k8s 部署了第一个应用,此 ...
- 4.2 K8S超级完整安装配置
前言: 采坑 k8s有3种安装方式,如下所示: minikube:这是一个k8s集群模拟器,只有一个节点的集群,只为了测试使用,master和node都在一台机器上 直接使用带有容器功能的云平台安装: ...
- 允许asp.net MVC报 错说明: 访问服务此请求所需的资源时出错。服务器可能未配置为访问所请求的 URL。错误消息 401.2。: 未经授权
运行mvc3程序报以下错误 详细报错如下: “/”应用程序中的服务器错误. 访问被拒绝. 说明: 访问服务此请求所需的资源时出错.服务器可能未配置为访问所请求的 URL. 错误消息 401.2.: 未 ...
- 微信小程序问题2:未配置
app.json 中未配置当前页面 pages/swipertest/swipertest 请检查后重试.console.error(`PAGE DEFINE ERRORapp.json 中未配置,当 ...
- 配置闪回恢复区开启归档,未配置清理归档脚本,数据库hang住
问题现象,测试环境执行SQL hang住 enmo:/home/oracle/worksh dg.sh SQL*Plus: Release Production on Mon May :: Copyr ...
- .NET Core + K8S + Apollo 玩转配置中心
1.引言 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理 ...
- K8S日志接入sls配置
背景 原有日志方案查询日志很不方便且效率低,而且也不支持基于日志的高级操作.如:聚合,图形展示,关键字检测等. 方案 接入阿里云的sls日志服务. 实施 1.通过环境变量进行日志接入 配置如下: 字段 ...
- K8S原来如此简单(三)Pod+Deployment
上篇我们已经安装好k8s1.23集群,现在我们开始使用k8s部署我们的项目 Pod Pod 是一组容器集合,是可以在 Kubernetes 中创建和管理的.最小的可部署的计算单元.这些容器共享存储.网 ...
随机推荐
- [rCore学习笔记 031] SV39多级页表的硬件机制
看到这个题目就知道上一节提到的RISC-V手册的10.6节又有用武之地了. 这里只需注意,RV32 的分页方案Sv32支持4GiB的虚址空间,RV64 支持多种分页方案,但我们只介绍最受欢迎的一种,S ...
- Python中序列化/反序列化JSON格式的数据
基本概念 JSON: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于 ...
- 大便系统无法使用source的原因及解决方法
debian中shell脚本无法使用source的原因及解决方法 现象: shell脚本中source aaa.sh时提示 source: not found 原因: ls -l `which sh` ...
- .NET周刊【11月第3期 2024-11-17】
国内文章 .NET 9使用Scalar替代Swagger https://www.cnblogs.com/netry/p/18543378/scalar-an-alternative-to-swagg ...
- 使用 ibatis 处理复杂对象数据关系的实例
如何使用 ibatis 处理复杂对象数据关系 iBatis 是一个开源的对象关系映射程序,其工作是将对象映射到 SQL 语句.和其它 O/R Mapping 框架不同,iBatis 开发者需要自己编写 ...
- 推荐给初级Java程序员的3本进阶书
ImportNew 注: 原作者在这篇文章中介绍3本不错的技术书籍.作者认为这些书籍对新手或者学生而言尤其有帮助.通过一些基础性的教程入门后,我们可以使用Java做基础性的编程.然而,当我们需要从初级 ...
- [Cnblogs.Architecture][v20.5.1] 使用 AddLongToJsonConverter() 将 long 序列化为 string
场景 浏览器的 JSON 反序列化无法完整将 long 类型转换为 number,最后一位会被四舍五入. 因此需要将 long 类型转为 string 发送到前端. 适用版本 v20.5.1 使用方法 ...
- Node.js Express 框架(1)
1.Express介绍 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. Express的特点: 实现 ...
- 前端每日一知之css常用布局单位
脑图在线链接 本文内容依据[js每日一题]公众号精彩文章总结而来
- 鸿蒙UI开发快速入门 —— part11: 鸿蒙计算器开发实践
1.前言 经过我们前面10章的学习,我们基本上可以开发出一个简单的APP了,为了巩固学习的内容,我们先开发一个计算器APP来连个手(文末有源代码),界面如下: 包含基本的计算器运算功能 支持一键清空, ...