本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

镜像名称: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)。
docker 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)
apiVersion: 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.gcr.io/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
apiVersion: 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
kube-state-metrics 需要访问 Kubernetes API 的权限,需配置 ServiceAccount、ClusterRole 和 ClusterRoleBinding:
apiVersion: 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 访问压力。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429