
如果你使用 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.gcr.io/kube-state-metrics/kube-state-metrics:v2.2.3
概述:该镜像包含 Kubernetes 官方工具 kube-state-metrics 的 v2.2.3 版本。kube-state-metrics 是一个无状态服务,通过监听 Kubernetes API 服务器,生成并暴露集群内对象(如 Pod、Deployment、Service 等)的状态指标,支持 Prometheus 等监控系统抓取,用于集群状态分析、性能监控和告警配置。
--metric-labels-allowlist)。kube_deployment_status_replicas_unavailable)配置 Prometheus Alertmanager 告警。kube_pod_container_resource_limits)优化资源分配。注意:
kube-state-metrics通常在 Kubernetes 集群内部署(通过 InClusterConfig 访问 API 服务器)。以下为 Docker 单机运行示例(需手动挂载 kubeconfig)。
bashdocker run -d \ --name kube-state-metrics \ -p 8080:8080 \ # 指标暴露端口 -p 8081:8081 \ # 健康检查/指标自身监控端口 -v /path/to/kubeconfig:/etc/kubeconfig:ro \ # 挂载本地 kubeconfig(集群外运行时) k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.2.3 \ --kubeconfig=/etc/kubeconfig \ # 指定 kubeconfig 路径(集群外运行必填) --port=8080 \ # 指标暴露端口(默认 8080) --telemetry-port=8081 # 自身监控/健康检查端口(默认 8081)
4.2.1 Deployment 配置
yamlapiVersion: apps/v1 kind: Deployment metadata: name: kube-state-metrics namespace: monitoring # 建议部署在监控专用命名空间 spec: replicas: 1 # 单实例足够,无需多副本 selector: matchLabels: app: kube-state-metrics template: metadata: labels: app: kube-state-metrics spec: serviceAccountName: kube-state-metrics # 需绑定集群权限(见下方 RBAC 配置) containers: - name: kube-state-metrics image: ***-k8s.xuanyuan.run/kube-state-metrics/kube-state-metrics:v2.2.3 ports: - containerPort: 8080 # 指标端口 name: metrics - containerPort: 8081 # 自身监控端口 name: telemetry args: - --port=8080 # 指标暴露端口 - --telemetry-port=8081 # 自身监控端口 - --metric-labels-allowlist=pods=[*],deployments=[app,env] # 允许作为指标标签的对象标签(示例) resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 256Mi
4.2.2 配套 Kubernetes 资源配置
4.2.2.1 Service(暴露指标端口给 Prometheus)
yamlapiVersion: v1 kind: Service metadata: name: kube-state-metrics namespace: monitoring labels: app: kube-state-metrics spec: ports: - name: metrics port: 8080 targetPort: metrics - name: telemetry port: 8081 targetPort: telemetry selector: app: kube-state-metrics
4.2.2.2 RBAC 权限配置(必需)
kube-state-metrics 需要访问 Kubernetes API 的权限,需配置 ServiceAccount、ClusterRole 和 ClusterRole***ding:
yamlapiVersion: v1 kind: ServiceAccount metadata: name: kube-state-metrics namespace: monitoring --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: kube-state-metrics rules: - apiGroups: [""] resources: ["pods", "services", "endpoints", "namespaces", "configmaps", "secrets", "nodes"] verbs: ["list", "watch"] - apiGroups: ["apps"] resources: ["deployments", "replicasets", "statefulsets", "daemonsets"] verbs: ["list", "watch"] - apiGroups: ["batch"] resources: ["jobs", "cronjobs"] verbs: ["list", "watch"] - apiGroups: ["autoscaling"] resources: ["horizontalpodautoscalers"] verbs: ["list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kube-state-metrics subjects: - kind: ServiceAccount name: kube-state-metrics namespace: monitoring roleRef: kind: ClusterRole name: kube-state-metrics apiGroup: rbac.authorization.k8s.io
| 环境变量 | 描述 | 默认值 |
|---|---|---|
KUBERNETES_SERVICE_HOST | Kubernetes API 服务器主机地址(集群内部署时由 kubelet 自动注入) | 集群内自动配置 |
KUBERNETES_SERVICE_PORT | Kubernetes API 服务器端口(集群内部署时由 kubelet 自动注入) | 443 |
POD_NAME | 当前 Pod 名称(用于自身监控指标的标签) | 从 downward API 获取 |
POD_NAMESPACE | 当前 Pod 命名空间(用于自身监控指标的标签) | 从 downward API 获取 |
| 参数 | 描述 | 默认值 |
|---|---|---|
--port | 指标暴露端口 | 8080 |
--telemetry-port | 自身监控(如服务健康状态)端口 | 8081 |
--kubeconfig | kubeconfig 文件路径(集群外运行时需指定,集群内无需配置) | 空(使用 InClusterConfig) |
--metric-labels-allowlist | 允许作为指标标签的对象标签,格式为 资源类型=[标签1,标签2,...],如 pods=[app,env] | 空(不允许任何标签) |
--namespaces | 仅监控指定命名空间,多个命名空间用逗号分隔(如 default,monitoring) | 空(监控所有命名空间) |
--resources | 仅监控指定资源类型,多个资源用逗号分隔(如 pods,deployments) | 空(监控所有支持资源) |
--metric-allowlist | 仅暴露指定指标,格式为 指标名(如 kube_pod_status_ready) | 空(暴露所有指标) |
permission denied,需检查 RBAC 权限配置是否完整(参考 4.2.2.2 节)。--resources 或 --metric-allowlist 参数是否过滤了该资源/指标。kube-state-metrics。--namespaces 或 --resources 限制监控范围,减少 API 访问压力。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 v5cn/kube-state-metrics 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: