尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

cilium-dbg envoy admin clusters:查看 Cilium 内嵌 Envoy Proxy 的 Cluster 配置

cilium-dbg envoy admin clusters:查看 Cilium 内嵌 Envoy Proxy 的 Cluster 配置 cilium-dbg envoy admin clusters查看 Cilium 内嵌 Envoy Proxy 的 Cluster 配置【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium导读cilium-dbg envoy admin clusters是 Cilium 数据面调试工具集cilium-dbg中用于列出 Envoy Proxy 已配置集群clusters的管理命令。当 Cilium 通过 L7 策略、TLS 检查、NetworkPolicy 依赖的 Envoy 代理转发流量时所有上游端点都被抽象为 Envoy 的 cluster 概念因此该命令是排查代理路由异常、验证上游端点是否就绪、确认 cluster 状态的核心入口之一。读完本文你将掌握该命令的完整语法、参数语义、输出格式控制方式以及它背后如何通过 Unix Domain Socket 直连 Envoy Admin Interface 的实现原理并能在真实节点上用它定位连接故障。命令概览在 Cilium 中访问 Envoy 的 Cluster 世界Cilium 数据面内置了一个定制化的 Envoy Proxy用于执行 L7 策略、TLS 嗅探TLS inspection、DNS 代理等任务。为了便于运维和排障cilium-dbg 提供了envoy admin子命令族把 Envoy 原生 Admin Interface 的常用端点封装成命令行工具。clusters子命令对应 Envoy Admin Interface 的/clusters端点用于列出所有已配置的 cluster 及其成员端点状态。命令的帮助文本位于 Documentation/cmdref/cilium-dbg_envoy_admin_clusters.md其完整用法为cilium-dbg envoy admin clusters [flags]在命令层级上clusters挂在envoy admin之下envoy命令下还并列挂载了certs、config、listeners、logging、metrics、serverinfo等兄弟子命令参见 cilium-dbg_envoy_admin.md构成一套完整的 Envoy 运行态观测面板。参数详解options 与继承选项本命令专属选项选项简写说明--help-h显示clusters子命令的帮助信息--output string-o指定输出格式可选值为json、yaml、jsonpath{}其中--output是该命令的核心开关它决定了 Envoy 返回的 cluster 数据以何种结构化形式呈现-o json输出 JSON 格式的 cluster 列表适合机器解析或配合jq二次过滤-o yaml输出 YAML 格式-o jsonpath{}以 JSONPath 表达式过滤字段例如-o jsonpath{.cluster_statuses[*].name}只输出 cluster 名称不带-o时命令直接输出 Envoy 默认的纯文本text格式的 cluster 状态摘要。该输出选项由 pkg/command/output.go 中的AddOutputOption统一注册到各子命令OutputOptionStringpkg/command/output.go会把用户输入映射为yaml - YAML、json/jsonpath - JSON其余视为unknown。从父命令继承的选项所有cilium-dbg子命令都会继承根命令的通用选项clusters命令同样适用--config string Config file (default is $HOME/.cilium.yaml) -D, --debug Enable debug messages -H, --host string URI to server-side API --log-driver strings Logging endpoints to use (example: syslog) --log-opt map Log driver options (example: formatjson)选项说明--config指定配置文件默认读取$HOME/.cilium.yaml-D, --debug开启调试日志便于追踪命令执行过程中的错误细节-H, --host指定服务端 API 的 URI用于连接远程的 Cilium Agent--log-driver/--log-opt配置命令自身日志的输出端如 syslog与选项底层实现命令如何拿到 Cluster 数据clusters子命令的实现非常精简核心逻辑集中在 cilium-dbg/cmd/envoy_admin_clusters.govar EnvoyAdminClustersCmd cobra.Command{ Use: clusters, Short: List configured clusters of Envoy Proxy, Run: func(cmd *cobra.Command, args []string) { envoyAdminClient : newEnvoyAdminClient() clusters, err : envoyAdminClient.GetClusters(strings.ToLower(command.OutputOptionString())) if err ! nil { Fatalf(cannot get clusters: %s\n, err) } cmd.Println(clusters) }, } func init() { EnvoyAdminCmd.AddCommand(EnvoyAdminClustersCmd) command.AddOutputOption(EnvoyAdminClustersCmd) }从源码可以看到两个关键设计点不走 K8s API直连 Envoy Admin Socket命令通过newEnvoyAdminClient()创建一个 HTTP 客户端其 HTTP Transport 使用自定义DialContext直连 Unix Domain Socket见 cilium-dbg/cmd/envoy_adminclient.gosocket 路径固定为/var/run/cilium/envoy/sockets/admin.sock请求的 Host/:authority为envoy-admincilium-dbg/cmd/envoy_adminclient.go。这意味着该命令通常需要运行在能访问该 socket 的环境中例如 Cilium Agent 所在节点的特权容器内或对应 Pod 中。输出格式被透传为 Envoy 查询参数GetClusters会把-o选项映射后的格式拼接成 HTTP GET 请求/clusters?formatformatcilium-dbg/cmd/envoy_adminclient.gostrings.ToLower之后实际传给 Envoy 的format值即为json、yaml或unknown。读取响应时使用safeio.ReadAllLimit限制为最大 100MBcilium-dbg/cmd/envoy_adminclient.go避免异常大响应拖垮客户端。使用示例与输出解读查看文本格式的 cluster 摘要在能够访问 Cilium Agent 环境的管理终端中执行cilium-dbg envoy admin clusters默认输出为 Envoy 文本格式通常会列出每个 cluster 的名称、端点成员包括status字段以及健康检查状态。它展示的是hostname、address与成员状态三类信息的组合视图例如可据此判断某个上游端点是否处于HEALTHY、UNHEALTHY或DRAINING状态。获取 JSON 结构化数据cilium-dbg envoy admin clusters -o json适合将输出管道给jq做进一步筛选cilium-dbg envoy admin clusters -o json | jq .cluster_statuses[] | {name, hosts: [.host_statuses[].address]}用 JSONPath 提取特定字段cilium-dbg envoy admin clusters -o jsonpath{.cluster_statuses[*].name}JSONPath 解析基于k8s.io/client-go/util/jsonpath实现pkg/command/output.go并允许缺失键AllowMissingKeys(true)字段不存在时不会报错便于脚本安全取值。以 YAML 查看cilium-dbg envoy admin clusters -o yamlYAML 输出由go.yaml.in/yaml/v3序列化生成pkg/command/output.go适合人工阅读。典型排障场景L7 策略生效但流量异常先用cilium-dbg envoy admin clusters观察目标上游 cluster 是否存在、端点是否健康再结合cilium-dbg envoy admin listeners与cilium-dbg envoy admin config交叉核对监听器与路由配置验证上游端点变更是否被感知集群内服务 Endpoints 变化后通过clusters -o json确认 Envoy 侧成员列表是否同步更新确认 TLS/加密相关 cluster与cilium-dbg envoy admin certs配合检查涉及 TLS 检查的 cluster 是否关联了正确的证书配置。相关命令速览envoy admin子命令族提供了完整的 Admin Interface 观测能力详见 cilium-dbg_envoy_admin.md子命令作用cilium-dbg envoy admin certs列出 Envoy Proxy 配置的 TLS 证书cilium-dbg envoy admin clusters列出 Envoy Proxy 配置的集群本文cilium-dbg envoy admin config查看 Envoy Proxy 的 config dumpcilium-dbg envoy admin listeners列出 Envoy Proxy 配置的监听器cilium-dbg envoy admin logging查看并修改 Envoy 的日志级别cilium-dbg envoy admin metrics列出 Envoy Proxy 的 Prometheus 统计指标cilium-dbg envoy admin serverinfo查看 Envoy 服务端信息版本、运行时长等注意事项该命令依赖 Cilium Agent 运行时创建的 Envoy Admin Unix Socket/var/run/cilium/envoy/sockets/admin.sock。若在无该 socket 的环境如普通开发机或非 Agent 节点执行会因无法连接而报错-o jsonpath{}中的单引号是给 Shell 使用的防止大括号被 Shell 展开在脚本中嵌套引号时需注意转义命令参考文档由cilium-dbg cmdref自动生成标注了 autogenerated via cilium-dbg cmdref, do not edit manually若要更新请通过仓库中的make相关命令重新生成而不是手工编辑 Documentation/cmdref/cilium-dbg_envoy_admin_clusters.mdclusters子命令只提供读取能力若需修改 Envoy 运行态配置如调整日志级别请使用cilium-dbg envoy admin logging等带写入能力的兄弟命令。【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表