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/
相关推荐
心流时间6 分钟前
[Java基础] JVM常量池介绍(BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗)
java·开发语言·jvm
lqlj223312 分钟前
Linux常用命令
linux·运维·服务器
瑞金彭于晏23 分钟前
通俗易懂版 Maven 科普,maven是什么?
java·maven
好看资源平台27 分钟前
Java Web开发实战与项目——Spring Boot与Spring Cloud微服务项目实战
java
.猫的树33 分钟前
Java集合List快速实现重复判断的10种方法深度解析
java·开发语言·list·集合
littlegirll42 分钟前
命令行方式安装KFS同步KES到KADB
java·大数据·数据库
wanhengidc1 小时前
怎样分辨是否是高防服务器?
运维·服务器·网络
itachi-uchiha1 小时前
深入理解 Linux 中的 last 和 lastb 命令
java·linux·服务器
gma9991 小时前
【GB28181】 SIP信令服务器
运维·服务器
xiaoyustudiowww1 小时前
JSP + Servlet 实现 AJAX(纯JS版)
java·javascript·servlet