k8s过滤特权容器

任务:过滤排查特权容器是哪个,怎么过滤出来

jsonpath

bash 复制代码
kubectl get pods --all-namespaces -o jsonpath='{range .items[?(@.spec.containers[*].securityContext.privileged == true)]}{.metadata.namespace} {.metadata.name}{"\n"}{end}'

jsonpath表达式{range ...}{...}{"\n"}{end},它的作用是遍历满足条件的Pod,并输出其命名空间和名称,每行一个Pod。

.items 是获取所有的Pod对象数组

"?"是一个jsonpath表达式的符号,用于进行筛选和过滤数据。它用于在列表中选择满足特定条件的元素。在这里,它的意思是选择满足条件"spec.containers*.securityContext.privileged == true"的pod项。
"@"符号没有特殊意义,它仅用作字符串的一部分,用于格式化输出。在这个命令中,它用于在输出中添加一个空格。
?(@.spec.containers\[* .securityContext.privileged == true)] 是一个筛选条件,用于匹配具有至少一个容器的securityContext.privileged设置为true的Pod。

{.metadata.namespace} {.metadata.name}{"\n"}:这部分表达式定义了要输出的内容。其中,{.metadata.namespace} 表示输出Pod的命名空间,{.metadata.name} 表示输出Pod的名称,{"\n"} 表示输出换行符。

bash 复制代码
jsonpath表达式{range ...}{...}{"\n"}{end},它的作用是遍历满足条件的Pod,并输出其命名空间和名称,每行一个Pod。
请注意,jsonpath表达式语法

jq

bash 复制代码
kubectl get pods --all-namespaces -o json | jq '.items[] | select(.spec.containers[].securityContext.privileged==true) | {namespace: .metadata.namespace, pod: .metadata.name, ports: .spec.containers[].ports[]}'

jq是一个命令行工具,用于处理和查询JSON数据。它提供了一个简洁且功能强大的方式来过滤、转换和操作JSON数据。

.items\[\]表示遍历JSON数据中的items数组中的每个元素。

select(.spec.containers\[\].securityContext.privileged==true)表示选择具有至少一个容器的securityContext.privileged属性设置为true的元素。也就是说,只有满足这个条件的元素会通过过滤器。

{namespace: .metadata.namespace, pod: .metadata.name, ports: .spec.containers\[\].ports\[\]}是一个对象构造器,用于创建一个新的对象。这个对象包含三个属性:namespace表示命名空间,pod表示Pod名称,ports表示容器的端口。

jq下载链接: link,下载完成后

bash 复制代码
chmod +x jq-linux64 && mv jq-linux64 /usr/local/bin/
相关推荐
endswel22 分钟前
Spring bean 注册多种方式
java·后端·spring
YonyouHRSaaS24 分钟前
从安全、信创、运维三方面看,人力资源管理系统哪种部署方式更适合企业HR?
运维·安全·hr系统·人力资源管理系统·hr saas·人事管理系统
鬼手点金36 分钟前
opencode-性能优化建议
java·人工智能·git·自动化·nanogpt
聪明蛋子哟36 分钟前
Python与Java双栈实战:手撸一个支持RAG与Tool Calling的高性能Agent框架
java·开发语言·python
xuxigifxfh41 分钟前
HJ4 字符串分隔
java·开发语言·华为机考
写后端的胖头鱼1 小时前
Java 反射详解 + 场景示例
java·反射
倔强的石头1061 小时前
【Linux指南】动静态库系列(十二):库工程发布与错误排查:从能跑到可维护
linux·运维·服务器
wdfk_prog1 小时前
LWIP教程 03:从 `low_level_input()` 到 `pbuf_free()`——`pbuf` 的数据视图、Chain 与引用计数
运维·网络·笔记·学习
掉进电商坑三年没爬出来的东叔1 小时前
云服务器搭建个人网站实战:从零到公网访问,含域名HTTPS
运维·服务器·https
IT大白鼠1 小时前
彭大帅的AI运维助手跨出 Linux:全面接管 Windows 服务器
运维·服务器·人工智能