
kubenurse是一个小型服务,用于监控Kubernetes集群中的所有网络连接,并将采集的指标导出为Prometheus端点。
您可以从https://hub.docker.com/r/postfinance/kubenurse/%E8%8E%B7%E5%8F%96Docker%E9%95%9C%E5%83%8F%E3%80%82https://github.com/postfinance/kubenurse/tree/master/examples%E7%9B%AE%E5%BD%95%E5%8C%85%E5%90%AB%E5%B0%86kubenurse%E9%83%A8%E7%BD%B2%E5%88%B0kube-system%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E7%9A%84YAML%E6%96%87%E4%BB%B6%E3%80%82
完成设置且Prometheus抓取kubenurse指标后,您可以构建仪表板以显示网络延迟和错误,或使用指标进行告警。
!Grafana ingress view !Grafana path view
kubenurse通过环境变量进行配置:
KUBENURSE_INGRESS_URL: 用于检查入口的kubenurse URLKUBENURSE_SERVICE_URL: 用于检查Kubernetes服务的kubenurse URLKUBENURSE_INSECURE: 若为"true",TLS连接将不验证证书KUBENURSE_EXTRA_CA: TLS连接的额外CA证书路径KUBENURSE_NAMESPACE: 用于查找邻居kubenurse的命名空间KUBENURSE_NEIGHBOUR_FILTER: 用于过滤邻居kubenurse的标签选择器以下变量由Kubernetes注入Pod,不应手动定义:
KUBERNETES_SERVICE_HOST: 与kube-apiserver通信的主机KUBERNETES_SERVICE_PORT: 与kube-apiserver通信的端口使用的HTTP客户端会自动附加找到的证书/var/run/secrets/kubernetes.io/serviceaccount/ca.crt。
kubenurse在8080端口监听HTTP请求,并暴露以下端点:
/: 重定向到/alive/alive: 返回包含检查结果的格式化JSON(如下所述),状态码200表示一切正常,否则为500/alwayshappy: 返回HTTP 200,用于自身测试/metrics: 暴露Prometheus指标/alive端点返回的JSON示例:
json{ "api_server_direct": "ok", "api_server_dns": "ok", "me_ingress": "ok", "me_service": "ok", "hostname": "kubenurse-1234-x2bwx", "neighbourhood_state": "ok", "neighbourhood": [ { "PodName": "kubenurse-1234-8fh2x", "PodIP": "10.10.10.67", "HostIP": "10.12.12.66", "NodeName": "k8s-66.example.com", "Phase": "Running" }, { "PodName": "kubenurse-1234-ffjbs", "PodIP": "10.10.10.138", "HostIP": "10.12.12.89", "NodeName": "k8s-89.example.com", "Phase": "Running" } ], "headers": { "Accept": [ "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" ], "Accept-Encoding": [ "gzip, deflate, br" ], ... } }
每5秒以及每次访问/alive时,将运行以下检查。检查结果缓存3秒以避免过多网络流量。
通过直接链接(KUBERNETES_SERVICE_HOST、KUBERNETES_SERVICE_PORT)检查Kubernetes API Server的/version端点。
指标类型:api_server_direct
通过Cluster DNS URL https://kubernetes.default.svc:$KUBERNETES_SERVICE_PORT检查Kubernetes API Server的/version端点,同时验证kube-dns部署是否正常。
指标类型:api_server_dns
检查入口后的kubenurse是否可通过/alwayshappy端点访问,地址由环境变量KUBENURSE_INGRESS_URL提供(如https://kubenurse.example.com),同时验证外部DNS解析是否正常。
指标类型:me_ingress
检查Kubernetes服务后的kubenurse是否可通过/alwayshappy端点访问,地址由环境变量KUBENURSE_SERVICE_URL提供(如http://kubenurse.mynamespace.default.svc:8080),同时验证kube-proxy配置是否正常。
指标类型:me_service
检查每个邻居kubenurse是否可通过/alwayshappy端点访问。邻居通过查询kube-apiserver获取KUBENURSE_NAMESPACE中带有KUBENURSE_NEIGHBOUR_FILTER标签的所有Pod来发现,请求直接发送到Pod IP。
指标类型:path_$KUBELET_HOSTNAME(包含前缀path_和邻居kubenurse所在kubelet的主机名)
所有检查都会生成可用于监控的指标,包括:
在/metrics端点可获取以下指标:
kubenurse_errors_total: 按错误类型分区的kubenurse错误计数器kubenurse_request_duration: 按错误类型分区的kubenurse请求持续时间,一分钟内的摘要您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。






探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务