对Kubernetes集群进行健康扫描,以图表的方式进行展示、建议及说明
基本检查 | 描述 |
---|---|
裸Pod | 避免在集群中使用裸Pod |
完全合格的镜像名(FQIN) | 避免使用不完全合格的镜像名 |
镜像Latest标签 | 避免使用latest标签 |
存活探针 | 建议为Pod创建存活探针 |
就绪探针 | 建议为Pod创建就绪探针 |
默认命名空间 | 避免在default命名空间创建各种资源 |
资源配额(资源要求检测大于5核5G) | 建议配置Pod的资源请求、Pod的资源限制同时检测Pod资源请求是否过大(大于5核5G视为过大) |
卷挂载(主机路径) | 避免挂载主机路径 |
节点自定义标签 | 避免自定义节点标签 |
Metric Server | 建议集群安装Metric Server服务 |
Pod节点选择标签(节点名作为节点选择标签) | 避免Pod节点选择标签为节点名 |
准入控制Webhook(Validating Webhook 和 Mutating Webhook) | 避免配置的Validating Webhook针对的服务的命名空间不存在;避免配置的Validating Webhook针对的service不存在;配置的Mutating Webhook针对的服务的命名空间不存在;避免配置的Mutating Webhook针对的service不存在;避免配置的Validating Webhook针对的Namespace为kubernetes系统Namespace;避免已配置的Mutating Webhook针对的Namespace为kubernetes系统Namespace |
命名空间资源限制 | 建议为命名空间添加资源限制(LimitRange)(未完成) |
命名空间资源配额 | 建议为命名空间添加资源配额(ResourceQuota)(未完成) |
无用检查 | 描述 |
---|---|
服务账户 | 无用的ServiceAccount |
ConfigMap | 无用的ConfigMap |
Secret | 无用的Secret |
PV | 无用的PersistentVolume |
PVC | 无用的PersistentVolumeClaim |
HPA | 无用的HorizontalPodAutoscaler |
集群角色 | 无用的ClusterRole |
角色 | 无用的Role |
服务 | 无用的Service |
副本集 | 无用的ReplicaSet |
Pod中断预算 | 无用的PodDisruptionBudget |
Pod预设 | 无用的PodPreset |
状态检查 | 描述 |
---|---|
节点状态 | 节点处于未知状态;节点未处于就绪状态;节点内存不足;节点硬盘空间不足;节点PID不足;节点的网络不可达 |
命名空间状态 | 命名空间未处于就绪状态 |
Pod状态 | Pod状态应该是Running或者Succeeded;Pod中容器重启次数为大于10 |
组件状态 | 组件controller-manager、scheduler、etcd状态 |
安全检查 | 描述 |
---|---|
特权容器 | 避免使用特权模式的容器 |
API Server | 参考:CIS |
Controller Manager | 参考:CIS |
Scheduler | 参考:CIS |
Etcd | 参考:CIS |
- 在资源的Annotations中添加如下注释,例如:禁止检查Pod状态和存活检测
annotations:
kingfisher.inspect.com/disabled-inspect: "pod-state,liveness"
- Golang:
Go >= 1.13
- 安全审查基于CIS Kubernetes_Benchmark_v1.5.0
- CIS中文说明
- 借鉴项目 clusterlint
- 根据需求修改对应的REGISTRY变量,即可修改推送的仓库地址
- 编译成二进制文件: make build
- 生成镜像推送到镜像仓库: make push