对应b站视频: CKS题目-Trivy扫描镜像漏洞
题目
Task
使用 Trivy 开源容器扫描器检测 namespace kamino 中 Pod 使用的具有严重漏洞的镜像。
查找具有 High 或 Critical 严重性漏洞的镜像,并删除使用这些镜像的 Pod。
注意:Trivy 仅安装在 cluster 的 master 节点上,在工作节点上不可使用。
你必须切换到 cluster 的 master 节点才能使用 Trivy。
环境搭建
下载trivy
https://github.com/aquasecurity/trivy/releases/tag/v0.34.0
安装
读者根据自己的操作系统版本安装即可,这里博主是centos7。
命令
rpm -ivh trivy_0.34.0_Linux-64bit.rpm
截图
创建命名空间和pod
命令
kubectl create ns kamino kubectl run nginx --image=nginx -n kamino kubectl run alpine --image=alpine:3.14 -n kamino
截图
解题
获取所有镜像
命令
kubectl get po -n kamino -o yaml | grep image:
截图
第一需要下载库(考试时不需要)
命令
trivy image -s "HIGH,CRITICAL" alphine:3.14
截图
之后添加–skip-update参数即可
命令
trivy image --skip-update -s "HIGH,CRITICAL" nginx:latest
结果
一个个镜像手动扫描也不方便,问了下ChatGPT,搞成了一条命令。
kubectl get pods -n kamino -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .spec.containers[*]}{.image}{"\n"}{end}{end}' | tr ' ' '\n' | sort -u | xargs -I {} trivy --skip-update --severity "HIGH,CRITICAL" {} | tee res.txt
删除pod命令
kubectl delete po xxx -n kamino
b站视频中使用的命令
kubectl get po -n applications -o yaml | grep '\- image' { for i in nginx:1.19.1-alpine-perl nginx:1.19.1-alpine-perl nginx:1.20.2-alpine; do trivy image -s HIGH,CRITICAL $i > $i.txt; done } kubectl scale deploy web1 -n applications -o yaml
模拟题
参考
更多k8s相关内容,请看文章:k8s学习-思维导图与学习笔记