Kube-Proxy 可观测性最佳实践

Kube-Proxy 介绍

kube-proxy 是 Kubernetes 集群中的一个网络代理组件,它负责管理和维护集群内服务的网络访问。通过对 Kubernetes 服务的路由规则进行代理,kube-proxy 使得外部或其他服务可以通过统一的 IP 地址和端口来访问后端的 Pods。kube-proxy 根据 Kubernetes 服务的定义,将请求转发到合适的 Pod 上,同时处理负载均衡、网络代理等操作。

kube-proxy 的监控是保障 Kubernetes 网络性能和稳定性的重要措施。通过实时跟踪 kube-proxy 的各种运行指标,可以帮助用户了解网络代理的负载、响应时间、同步状态等信息,识别潜在的瓶颈和问题,并根据监控数据进行优化调整。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。

开启 Prom 采集器

由于 Kube Proxy 对外提供了指标访问,可以采用 Prom采集器进行指标采集。

进入 DataKit 安装目录下的 conf.d/prom 目录,复制 prom.conf.sample 并命名为 kube-proxy.conf。示例如下:

bash 复制代码
cp prom.conf.sample kube-proxy.conf

调整 kube-proxy.conf 内容如下:

ini 复制代码
[[inputs.prom]]
  ## Exporter URLs.
  urls = ["http://127.0.0.1:10249/metrics"]

  uds_path = ""

  ignore_req_err = false

  source = "kube-proxy"

  measurement_prefix = ""

  keep_exist_metric_name = false


  election = true

  disable_host_tag = false

  disable_instance_tag = false

  disable_info_tag = false


  [[inputs.prom.measurements]]
    prefix = "etcd_network_"
    name = "etcd_network"
    
  [[inputs.prom.measurements]]
    prefix = "etcd_server_"
    name = "etcd_server"

  [inputs.prom.tags_rename]
    overwrite_exist_tags = false

  [inputs.prom.as_logging]
    enable = false
    service = "service_name"

关键指标

指标 描述
network_programming_duration_seconds_bucket 网络编程操作的时间分布
network_programming_duration_seconds_count 网络编程操作发生的总次数
network_programming_duration_seconds_sum 所有网络编程操作的总耗时
sync_proxy_rules_duration_seconds_bucket 同步代理规则操作的时间分布
sync_proxy_rules_duration_seconds_count 同步代理规则操作的总次数
sync_proxy_rules_duration_seconds_sum 所有同步代理规则操作的总耗时
sync_proxy_rules_endpoint_changes_pending 有多少端点变更正在等待同步
sync_proxy_rules_endpoint_changes_total 同步端点变更的总次数
sync_proxy_rules_iptables_restore_failures_total IPTables 规则恢复失败的次数
sync_proxy_rules_no_local_endpoints_total 没有本地端点的服务数量
sync_proxy_rules_service_changes_pending 有多少服务配置变更正在等待同步

场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 " Kube-Proxy", 选择" Kube-Proxy 监控视图 ",点击"确定"。

监控器(告警)

Kube Proxy 连接数异常

简要描述:Kube Proxy 连接数异常通常表示当前代理节点的连接数超过预期或达到了资源限制(如文件描述符或内存)。这可能会导致新连接无法正常建立,从而影响服务流量的分发和访问。及时监控和处理连接数异常有助于发现潜在的负载问题,并保障集群网络的稳定性和服务的可用性。

Kube Proxy 服务异常

简要描述:Kube Proxy 服务异常(sync_proxy_rules_no_local_endpoints_total)通常表示某些服务没有可用的后端端点(Pods)。这可能由于 Pod 无法正常调度、网络策略限制或节点资源耗尽导致。该异常会直接影响服务的正常访问,可能导致流量中断或请求失败。通过监控此指标,可以及时发现和修复服务与 Pod 的关联问题,确保流量能够正确路由到目标端点。

Kube Proxy 端点变更数量异常

简要描述:Kube Proxy 端点变更数量异常通常表示服务的后端端点(Endpoints)发生了过多或频繁的变更。这可能由以下原因引起:Pod 的频繁扩缩容或重启、节点的异常离线、网络策略更新等。端点变更过于频繁可能导致 kube-proxy 的代理规则更新滞后,进而影响流量的正确路由,甚至导致服务请求失败。通过监控端点变更数量,可以及时识别潜在的服务或网络异常,并采取措施优化资源分配或代理规则更新机制,确保服务的稳定性和流量分发的及时性。

相关推荐
程序员白话1 小时前
使用Kubeadm在Ubuntu22引导部署K8s公网集群
云原生·kubernetes
iFulling14 小时前
【云原生】CentOS安装Kubernetes+Jenkins
linux·云原生·kubernetes·centos·jenkins
Johny_Zhao21 小时前
Conda、Anaconda、Miniconda对比分析
linux·网络安全·信息安全·kubernetes·云计算·conda·shell·containerd·anaconda·yum源·系统运维·miniconda
陈陈CHENCHEN1 天前
【Kubernetes】在 K8s 上部署 Alertmanager
kubernetes
斯普信专业组1 天前
Caddy + CoreDNS 深度解析:从功能架构到性能优化实践(上)
性能优化·架构·kubernetes·coredns
道一云黑板报1 天前
Spark云原生流处理实战与风控应用
大数据·ai·云原生·spark·kubernetes·ai编程
退役小学生呀1 天前
十九、云原生分布式存储 CubeFS
分布式·docker·云原生·容器·kubernetes·k8s
deeper_wind2 天前
k8s-容器化部署论坛和商城服务(小白的“升级打怪”成长之路)
linux·运维·容器·kubernetes
wdxylb2 天前
云原生俱乐部-k8s知识点归纳(8)
云原生·容器·kubernetes
hello_ world.2 天前
k8s笔记04-常用部署命令
笔记·容器·kubernetes