如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
k8s-node-collector 是一个开源收集器,用于从 Kubernetes 节点收集节点信息(文件系统和进程数据)并以 JSON 格式输出。
git clone git@github.com:aquasecurity/k8s-node-collector.git
cd k8s-node-collector/cmd/node-collector
GOOS=linux GOARCH=arm64 go build -o node-collector main.go
用法:
node-collector [标志]
node-collector [命令]
示例:
node-collector k8s [标志]
可用命令:
completion 为指定的 shell 生成自动补全脚本
help 关于任何命令的帮助
k8s k8s-node-collector 从集群节点提取文件系统信息
标志:
-c, --cluster-version string cluser 版本。例如 1.23.0
-h, --help node-collector 的帮助信息
--kubelet-config string 通过 API /api/v1/nodes/<>/proxy/configz 获取的 kubelet 配置,以 base64 编码
-n, --node string 节点名称
-o, --output string 输出格式。可选 table|json(默认 "json")
-s, --spec-name string 规范名称。例如:k8s-cis
-v, --spec-version string 规范版本。例如 1.23.0
./node-collector k8s
node-collector 执行收集器规范,例如 k8s-cis-1.23.0。每个规范必须包含:
name:- version:它所代表的 cis-benchmark 版本(例如:1.23.0)
version:它所代表的 cis-benchmark 版本(例如:1.23.0)
version:要执行特定规范,需要传递 --spec-name k8s-cis 和 --spec-version 1.23.0 标志
--spec-name k8s-cis --spec-version 1.23.0如果未指定收集器规范,node-collector 将尝试根据 version_mapping 数据中定义的平台类型和版本自动检测匹配的规范,例如:
k8s:
- op: "="
cluster_version: "1.21"
spec: k8s-cis-1.21.0
- op: ">"
cluster_version: "1.21"
spec: k8s-cis-1.23.0
如果您不知道集群支持哪个 cis 规范,可以使用 cluster-version 标志。此选项必须与 spec-name 标志一起使用,匹配的规范版本将被自动检测,例如:| --spec-name k8s-cis --cluster-version 1.23.1
cluster-version spec-name --spec-name k8s-cis --cluster-version 1.23.1在提供的示例中,有两条规则;第一个匹配的规则将获取相应的规范。任何版本等于 1.21 的原生 k8s cluser 将获取 k8s-cis-1.21.0 收集器规范,如果未找到匹配项,任何版本 grather to 1.21 的原生 k8s cluser 将获取 k8s-cis-1.23.0
k8s-cis-1.21.0 k8s-cis-1.23.0## 添加新的收集器规范
要添加新规范,请将新的 yaml 文件放在以下路径:.pkg/collector/config/specs/,并遵循以下文件命名 convesion 示例:gke-cis-1.24.0
.pkg/collector/config/specs/ platform cis spec_version gke-cis-1.24.0每个收集器规范审计包含以下字段
---
version: "1.23.0"
name: aks-cis
title: Node Specification for AKS info collector
collectors:
- key:
title:
nodeType:
audit:
name - 规范的名称(例如:aks-cis)
name aks-cisversion - 规范的版本(例如:1.23.0)
version 1.23.0title - 整个规范的简短描述
title## 特定审计数据
key - 用于保存审计 shell 命令输出的参数名称
keytitle - 审计 shell 命令的标题
titlenodeType - 定义应执行 shell 命令的节点类型(master | worker)
nodeTypeaudit - 用于收集信息并返回结果的 shell 命令(必须抑制错误)
audit## 配置文件
k8s-node-collector 使用配置文件,帮助根据不同平台(rancher、原生 k8s 等)获取二进制文件和配置文件路径,例如:
kubelet:
bins:
- kubelet
- hyperkube kubelet
confs:
- /etc/kubernetes/kubelet-config.yaml
- /var/lib/kubelet/config.yaml
节点收集器将根据其运行的平台获取 kubelet 二进制名称和配置文件路径。编写审计 shell 命令时,可以通过配置参数使用配置文件中的参数来收集适当的数据,例如,收集 kubelet config.yaml 配置文件的所有权:
audit
stat -c %U:%G $kubelet.confs
kubectl apply -f job.yaml
kubectl get pods
NAME READY STATUS RESTARTS AGE
node-collector-ng2z7 0/1 Completed 0 6m13s
kubectl logs node-collector-ng2z7
{
"apiVersion": "v1",
"kind": "NodeInfo",
"metadata":{
"creationTimestamp":"2023-01-04T11:37:11+02:00"
},
"type": "master",
"info": {
"adminConfFileOwnership": {
"values": [
"root:root"
]
},
"adminConfFilePermissions": {
"values": [
600
]
},
"certificateAuthoritiesFileOwnership": {
"values": [
"root:root"
]
},
"certificateAuthoritiesFilePermissions": {
"values": [
644
]
},
"containerNetworkInterfaceFileOwnership": {
"values": [
"root:root",
"root:root"
]
},
"containerNetworkInterfaceFilePermissions": {
"values": [
700,
775
]
},
"controllerManagerConfFileOwnership": {
"values": [
"root:root"
]
},
"controllerManagerConfFilePermissions": {
"values": [
600
]
},
"etcdDataDirectoryOwnership": {
"values": [
"root:root"
]
},
"etcdDataDirectoryPermissions": {
"values": [
700
]
},
"kubeAPIServerSpecFileOwnership": {
"values": [
"root:root"
]
},
"kubeAPIServerSpecFilePermission": {
"values": [
600
]
},
"kubeControllerManagerSpecFileOwnership": {
"values": [
"root:root"
]
},
"kubeControllerManagerSpecFilePermission": {
"values": [
600
]
},
"kubeEtcdSpecFileOwnership": {
"values": [
"root:root"
]
},
"kubeEtcdSpecFilePermission": {
"values": [
600
]
},
"kubePKIDirectoryFileOwnership": {
"values": [
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root"
]
},
"kubePKIKeyFilePermissions": {
"values": [
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600
]
},
"kubeSchedulerSpecFileOwnership": {
"values": [
"root:root"
]
},
"kubeSchedulerSpecFilePermission": {
"values": [
600
]
},
"kubeconfigFileExistsOwnership": {
"values": [
]
},
"kubeconfigFileExistsPermissions": {
"values": [
]
},
"kubeletAnonymousAuthArgumentSet": {
"values": [
## 执行收集器规范
node-collector 执行收集器规范,例如 [k8s-cis-1.23.0](./pkg/collector/config/specs/k8s-cis-1.23.0.yaml)。每个规范必须包含:
- `name:` 所用的其他平台,例如(k8s-cis、aks-cis、gke-cis 等)
- `version:` 其代表的 CIS 基准版本(例如:1.23.0)
要执行特定规范,需传递 `--spec-name k8s-cis` 和 `--spec-version 1.23.0` 标志。
如果未指定收集器规范,node-collector 将尝试根据平台类型和版本自动检测匹配的规范,如 [版本映射数据](./pkg/collector/config/config.yaml) 中所定义。例如:
```yaml
k8s:
- op: "="
cluster_version: "1.21"
spec: k8s-cis-1.21.0
- op: ">"
cluster_version: "1.21"
spec: k8s-cis-1.23.0
如果您不知道集群支持哪个 CIS 规范,可以使用 cluster-version 标志。此选项必须与 spec-name 标志结合使用,匹配的规范版本将被自动检测。例如:
--spec-name k8s-cis --cluster-version 1.23.1
在提供的示例中,有两条规则;第一条匹配规则将获取相应的规范。任何版本等于 1.21 的原生 Kubernetes 集群将获取 k8s-cis-1.21.0 收集器规范;如果未找到匹配项,任何版本大于 1.21 的原生 Kubernetes 集群将获取 k8s-cis-1.23.0。
{
"apiVersion": "v1",
"kind": "NodeInfo",
"metadata":{
"creationTimestamp":"2023-01-04T11:37:11+02:00"
},
"type": "master",
"info": {
"adminConfFileOwnership": {
"values": [
"root:root"
]
},
"adminConfFilePermissions": {
"values": [
600
]
},
"certificateAuthoritiesFileOwnership": {
"values": [
"root:root"
]
},
"certificateAuthoritiesFilePermissions": {
"values": [
644
]
},
"containerNetworkInterfaceFileOwnership": {
"values": [
"root:root",
"root:root"
]
},
"containerNetworkInterfaceFilePermissions": {
"values": [
700,
775
]
},
"controllerManagerConfFileOwnership": {
"values": [
"root:root"
]
},
"controllerManagerConfFilePermissions": {
"values": [
600
]
},
"etcdDataDirectoryOwnership": {
"values": [
"root:root"
]
},
"etcdDataDirectoryPermissions": {
"values": [
700
]
},
"kubeAPIServerSpecFileOwnership": {
"values": [
"root:root"
]
},
"kubeAPIServerSpecFilePermission": {
"values": [
600
]
},
"kubeControllerManagerSpecFileOwnership": {
"values": [
"root:root"
]
},
"kubeControllerManagerSpecFilePermission": {
"values": [
600
]
},
"kubeEtcdSpecFileOwnership": {
"values": [
"root:root"
]
},
"kubeEtcdSpecFilePermission": {
"values": [
600
]
},
"kubePKIDirectoryFileOwnership": {
"values": [
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root",
"root:root"
]
},
"kubePKIKeyFilePermissions": {
"values": [
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600
]
},
"kubeSchedulerSpecFileOwnership": {
"values": [
"root:root"
]
},
"kubeSchedulerSpecFilePermission": {
"values": [
600
]
},
"kubeconfigFileExistsOwnership": {
"values": [
]
},
"kubeconfigFileExistsPermissions": {
"values": [
]
},
"kubeletAnonymousAuthArgumentSet": {
"values": [
]
},
"kubeletAuthorizationModeArgumentSet": {
"values": [
"Node",
"RBAC"
]
},
"kubeletClientCaFileArgumentSet": {
"values": [
"/etc/kubernetes/pki/ca.crt"
]
},
"kubeletConfFileOwnership": {
"values": [
"root:root"
]
},
"kubeletConfFilePermissions": {
"values": [
600
]
},
"kubeletConfigYamlConfigurationFileOwnership": {
"values": [
"root:root"
]
},
"kubeletConfigYamlConfigurationFilePermission": {
"values": [
644
]
},
"kubeletEventQpsArgumentSet": {
"values": [
]
},
"kubeletHostnameOverrideArgumentSet": {
"values": [
]
},
"kubeletMakeIptablesUtilChainsArgumentSet": {
"values": [
]
},
"kubeletOnlyUseStrong***graphic": {
"values": [
]
},
"kubeletProtectKernelDefaultsArgumentSet": {
"values": [
]
},
"kubeletReadOnlyPortArgumentSet": {
"values": [
]
},
"kubeletRotateCertificatesArgumentSet": {
"values": [
]
},
"kubeletRotateKubeletServerCertificateArgumentSet": {
"values": [
]
},
"kubeletServiceFileOwnership": {
"values": [
"root:root"
]
},
"kubeletServiceFilePermissions": {
"values": [
644
]
},
"kubeletStreamingConnectionIdleTimeoutArgumentSet": {
"values": [
]
},
"kubeletTlsCertFileTlsArgumentSet": {
"values": [
"/etc/kubernetes/pki/apiserver.crt"
]
},
"kubeletTlsPrivateKeyFileArgumentSet": {
"values": [
"/etc/kubernetes/pki/apiserver.key"
]
},
"kubernetesPKICertificateFilePermissions": {
"values": [
644,
644,
644,
644,
644,
644,
644,
644,
644,
644
]
},
"schedulerConfFileOwnership": {
"values": [
"root:root"
]
},
"schedulerConfFilePermissions": {
"values": [
600
]
}
}
}
kubectl delete -f job.yaml
来自真实用户的反馈,见证轩辕镜像的优质服务