Cilium CLI 状态检查指南:`cilium status` 命令参数详解与集群健康诊断实战
Cilium CLI 状态检查指南cilium status命令参数详解与集群健康诊断实战【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/ciliumcilium status是 Cilium 官方 CLIcilium-cli) 提供的核心诊断命令用于对运行在 Kubernetes 集群中的 Cilium 数据平面、控制平面组件进行全面的健康状态汇总。本文以 Documentation/cmdref/cilium_status.md 生成的命令参考为主线结合 cilium-cli/cli/status.go 与 cilium-cli/status 目录下的真实实现逐一讲解每个参数的含义、默认值与底层工作方式帮助你在安装、升级或排障时快速定位 Cilium 各组件的问题。命令概览一条命令洞察整个 Cilium 集群cilium status通过 Kubernetes API 访问集群中运行的所有 Cilium 组件cilium-agent DaemonSet、cilium-operator Deployment、Envoy DaemonSet、Hubble Relay、ClusterMesh 等将各组件的工作负载状态、控制器健康、Kubernetes 连通性、KVStore 状态、Hubble 状态等汇总成一个结构化结果。其命令定义为cilium status [flags]在源码层面该命令由newCmdStatus()函数构建见 cilium-cli/cli/status.go核心逻辑委托给status.NewK8sStatusCollector()创建的K8sStatusCollector调用其Status()方法完成采集见 cilium-cli/status/k8s.go。采集过程中支持多 worker 并发查询并通过轮询retry机制等待集群进入健康状态。补充仓库中还提供面向单节点 agent 的 cilium-dbg status 命令源码见 cilium-dbg/cmd/status.go它直接查询本地 agent 守护进程通过GetHealthzAPI获取单机状态而本文聚焦的cilium status是面向整个集群的聚合视角两者配合可完成从集群到单点的完整排障。核心参数详解以下参数均来自 Documentation/cmdref/cilium_status.md 的 Options 段与 cilium-cli/cli/status.go 中的 flag 注册一一对应。-h, --help查看帮助-h, --help help for status任何子命令的-h都会输出该命令的完整参数说明是快速查阅的入口。--ignore-warnings忽略告警判定--ignore-warnings Ignore warnings when waiting for status to report success默认值为false。当配合--wait使用时判定状态成功的标准是无错误且无告警见statusIsReady()逻辑cilium-cli/status/k8s.go。如果集群中存在可容忍的告警例如 Hubble Relay 未部署、某些 endpoint 未就绪等可指定本参数让等待流程只关心错误。需要特别注意的是源码中的优先级设计K8sStatusParameters.WarningFreePods由内部调用方使用如cilium install后的自动检查优先级高于IgnoreWarnings——当WarningFreePods非空时IgnoreWarnings的取值将失去意义见 cilium-cli/status/k8s.go。--interactive交互式刷新输出--interactive Refresh the status summary output after each retry when --wait flag is specified (default true)默认true。仅在指定--wait时生效每次轮询重试后终端会通过cursorUp()/countWrappedLines()清屏并原地刷新 summary 输出见 cilium-cli/status/k8s.go 与cursorUp实现 cilium-cli/status/k8s.go。在 CI 管道或日志重定向场景中建议设为--interactivefalse避免输出大量控制字符。-o, --output输出格式-o, --output string Output format. One of: json, summary (default summary)支持json与summary两种格式对应源码中的常量OutputJSON与OutputSummary见 cilium-cli/status/status.gosummary默认人类可读的表格文本包含彩色标识的组件状态、Pod 状态、容器 phase 统计、镜像版本、错误与告警明细等json输出结构化 JSON方便被脚本或监控系统解析。在RunE中json分支会对Status结构体执行json.MarshalIndent后输出即便采集过程发生错误也会先把最近一次成功采集的结果Format()打印到 stderr 再退出见 cilium-cli/cli/status.go保证报错也要给出现场。--verbose详细输出--verbose Print more verbose error / log messages默认false。开启后采集器在组件容器处于异常状态如CrashLoopBackOff时会拉取并输出更多日志上下文用于定位问题对应logfilter.Reduce(logs, k.params.Verbose)的日志精简行为见 cilium-cli/status/k8s.go。--wait等待状态变为成功--wait Wait for status to report success (no errors and warnings)默认false。指定后命令会以--wait-duration为总超时持续轮询直到满足无错误、无告警除非--ignore-warnings的成功条件。核心轮询循环见 cilium-cli/status/k8s.go每次k.status()采集后调用statusIsReady()判定未就绪则Sleep(defaults.WaitRetryInterval)后重试期间若 context 被取消如 agent 容器崩溃终止会返回最近一次状态并提示wait canceled, cilium agent container has crashed or was terminated超时则提示timeout while waiting for status to become successful。--wait-duration最大等待时长--wait-duration duration Maximum time to wait for status (default 5m0s)默认5m0s5 分钟。此默认值同时体现在K8sStatusParameters.waitTimeout()的兜底逻辑中——当WaitDuration为 0 时同样回退到5 * time.Minute见 cilium-cli/status/k8s.go。该超时同时约束单次采集的 context 生命周期与整体轮询时间因此采集慢的大集群可适当调大此值。--worker-count并发采集 worker 数--worker-count int The number of workers to use (default 5)默认5对应源码常量DefaultWorkerCount见 cilium-cli/status/k8s.go。状态采集任务DaemonSet/Deployment 检查、各 Pod 的 agent 状态抓取、日志抓取等通过github.com/cilium/workerpool并发执行见 cilium-cli/status/k8s.go当传入值小于 1 时自动回退到默认值 5。节点数众多、agent Pod 数量庞大的集群可适当提升该值以缩短采集时间。继承自父命令的全局参数以下参数由cilium status的父命令提供见 Documentation/cmdref/cilium_status.md 的 Options inherited from parent commands 段--as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace. --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. --context string Kubernetes configuration context --helm-release-name string Helm release name (default cilium) --kubeconfig string Path to the kubeconfig file -n, --namespace string Namespace Cilium is running in. Can also be set via CILIUM_NAMESPACE env var (default kube-system)其中--namespace默认kube-system支持环境变量CILIUM_NAMESPACE决定采集器在哪个命名空间查找 Cilium 组件--helm-release-name默认cilium用于通过 Helm API 读取已安装 chart 的版本号最终展示在输出的Helm chart version行中见 cilium-cli/status/k8s.go。状态采集的底层原理源码视角理解参数之后再看K8sStatusCollector.status()cilium-cli/status/k8s.go中一次完整采集会做哪些事有助于读懂输出工作负载状态检查分别查询ciliumagent DaemonSet、cilium-envoyDaemonSet、cilium-operator、hubble-relay、hubble-ui、clustermesh-apiserver等 Deployment/DaemonSet计算 Desired / Ready / Available / Unavailable 计数并检查ObservedGeneration与滚动更新进度见daemonSetStatuscilium-cli/status/k8s.go 与deploymentStatuscilium-cli/status/k8s.go。未部署的组件如未启用 Hubble会被标记为disabled而不会计为错误。逐 Pod 明细采集对每个运行中的 agent Pod通过其 HTTP API 获取StatusResponseCilium、Cluster/Health、Hubble、Kubernetes、KVStore、AuthCertificateProvider 等子系统状态与 endpoint 列表容器处于CrashLoopBackOff或异常终止时会自动抓取最近日志作为错误详情见 cilium-cli/status/k8s.go。集群范围统计统计集群内全部 Pod非 hostNetwork 的 Running/Pending Pod与受 Cilium 管理的 Pod通过 CiliumEndpoint 数量推断输出Cluster Pods: X/Y managed by Cilium见podCountcilium-cli/status/k8s.go。错误聚合所有采集到的错误/告警按Deployment → Pod两级聚合并写入Status.Errorssummary 输出中分别以Errors:与Warnings:分节展示见 cilium-cli/status/status.go。输出解析summary 各字段的含义summary 输出由Status.Format()生成见 cilium-cli/status/status.go主要包括组件状态行Cilium:/Operator:/Envoy DaemonSet:/Hubble Relay:/ClusterMesh:各组件一行健康为绿色OK有告警为黄色N warnings有错误为红色N errors未启用为青色disabledPod 状态行按Deployment/DaemonSet列出Desired / Ready / Available / Unavailable计数未达期望时以黄色/红色标注Containers按 phaseRunning、Pending、Failed 等统计容器数量Failed/Unknown 以红色标注Cluster Pods形如12/48 managed by Cilium展示集群中受 Cilium 管理的 Pod 占比Helm chart version当前安装的 Helm chart 版本Image versions各组件实际使用的镜像及使用该镜像的 Pod 数量便于发现集群中镜像版本不一致Errors / Warnings逐条列出错误与告警明细包括所属 Deployment、Pod 及具体信息Configuration来自cilium-configConfigMap 中cilium.io/前缀注解的配置错误信息见ciliumConfigAnnotationscilium-cli/status/k8s.go。实战场景场景一安装后验证集群健康# 等待 Cilium 全部组件就绪最多等待 10 分钟无错误且无告警才返回 0 cilium status --wait --wait-duration 10m # 若希望忽略如 Hubble 未部署等可容忍告警 cilium status --wait --ignore-warnings场景二快速查看摘要与结构化输出# 一次性的 summary 查看 cilium status # 输出 JSON 供脚本/监控解析 cilium status -o json # 在 CI 中输出稳定文本禁用交互式刷新 cilium status --wait --interactivefalse场景三定位具体故障组件# 详细输出抓取异常容器日志上下文 cilium status --verbose # 指定命名空间与 kubeconfig cilium status -n cilium-system --kubeconfig ~/.kube/config场景四大集群加速采集cilium status --worker-count 20与cilium-dbg status的关系cilium statusCLI 工具cilium-cli提供的集群级聚合状态通过 Kubernetes API 遍历全部组件适合日常运维与 CI 校验cilium-dbg status参考 Documentation/cmdref/cilium-dbg_status.md实现见 cilium-dbg/cmd/status.go运行在节点上的单机排障命令直接调用本地 agent 的/healthzAPI支持--brief单行输出、--all-*系列参数展开全部地址/控制器/节点/重定向/集群/健康详情以及--require-k8s-connectivity默认trueagent 无法访问 Kubernetes 控制面时以非零退出码告警。建议的排障路径是先用cilium status判断问题出在哪个组件再用cilium-dbg status --verbose深入单个节点/agent 的细节。相关参考命令参考原始文档Documentation/cmdref/cilium_status.mdCLI 命令入口cilium-cli/cli/status.go状态采集器实现cilium-cli/status/k8s.go状态聚合与格式化cilium-cli/status/status.go采集器单元测试cilium-cli/status/k8s_test.go 与 cilium-cli/status/status_test.go单节点状态命令参考Documentation/cmdref/cilium-dbg_status.md父命令总览cilium【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →