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

资讯详情

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

K9s v0.13.2 发布详解:XRay 视图修复与按命名空间聚焦的 `:xray` 命令

K9s v0.13.2 发布详解:XRay 视图修复与按命名空间聚焦的 `:xray` 命令 云原生容器编排CLI运维【免费下载链接】k9s Kubernetes CLI To Manage Your Clusters In Style!项目地址https://gitcode.com/GitHub_Trending/k9s/k9s点击查看免费下载K9s 是一款以终端 TUI 方式管理 Kubernetes 集群的 CLI 工具。v0.13.2 是 XRay 视图“重装上阵”的关键迭代它不仅修复了 XRay 树形视图在 Beryllium铍核心中只能“单眼视物”的渲染缺陷还为:xray命令新增了第三个可选参数让用户可以针对指定命名空间生成资源依赖关系树。读完本文你将掌握:xray命令的完整语法、XRay 视图支持的六类资源、其树形结构的底层组织方式以及视图内的全部快捷键操作。XRay 视图是什么从“单眼”到“双眼”的资源关系全景XRay 是 K9s 中用于展示 Kubernetes 资源间关联关系的树形视图。它不再是扁平的表格式列表而是将 Deployment、Service、StatefulSet 等资源与其下辖的 Pod、容器、ServiceAccount、ConfigMap、Secret、PVC 等以父子节点的方式组织成一棵依赖树让“谁被谁使用、谁又依赖谁”一目了然。v0.13.2 的发布说明中作者用“Found a waffle thin issue in the Beryllium(Be) core causing K9s xray vision to only operate on one eye”描述了本次修复——Beryllium 内核中存在一个极其隐蔽“waffle thin”的问题导致 XRay 视图此前只能渲染一半内容如同只用一只眼睛观察。修复之后XRay 视图得以完整呈现这也是本版本命名为“XRay Reloaded. Part Duh!”的原因。从当前仓库源码可以印证XRay 在 internal/xray 包中实现为一组按资源类型拆分的渲染器每个文件对应一类资源的树节点构建逻辑pod.go为 Pod 建立容器、卷引用Secret/ConfigMap/PVC和 ServiceAccount 子节点dp.go通过 Deployment 的spec.selector定位其管理的 Pod再递归渲染 Pod 子树svc.go依据 Service 的spec.selector关联其后端 Podcontainer.go为容器解析env/envFrom引用的 Secret 与 ConfigMaptree_node.go定义树节点TreeNode与节点规格NodeSpec并实现路径以::分隔的层级体系section.go渲染按 GVR 分组的视图小节。:xray命令语法第三个可选参数指定命名空间本版本最核心的功能变化是:xray命令新增了可选的第三个参数——目标命名空间。发布说明给出的示例为:xray dp fred该命令表示针对fred命名空间中的 Deployments 生成 XRay 视图。语法结构为:xray 资源类型GVR/别名 [命名空间]第一个参数是资源类型如dpDeployments、poPods、svcServices等第二个参数可选是命名空间省略时使用当前激活的命名空间命令还支持x、xr作为xray的别名见 types.go 中xrayCmd sets.New(x, xr, xray)。命令解释器在 interpreter.go 中通过XrayArgs()完成解析它从参数表中提取topicKey即资源类型 GVR与nsKey命名空间两个位置参数两者齐备时返回(gvr, ns)只有 GVR 时命名空间返回空字符串由视图层回退到当前激活命名空间见 xray.go 中的x.model.SetNamespace(client.CleanseNamespace(x.app.Config.ActiveNamespace()))。解析到的命名空间最终会体现在视图标题上见 xray.go 的styleTitle()视图标题以Xray-资源类型为基底当命名空间非集群级时按标题 命名空间 资源计数的格式渲染例如Xray-Deployments fred 1/1同时实时刷新当前筛选条件。支持资源清单六类开箱即用的 XRay 视图v0.13.2 发布说明明确列出 XRay 视图支持以下六类资源资源类型命令示例说明Pods:xray po展示 Pod 与其容器、卷引用、ServiceAccount 的关联Deployments:xray dp展示 Deployment 与其 Pod 子树的层级关系Services:xray svc通过 selector 关联后端 PodStatefulSets:xray sts有状态工作负载的资源树DaemonSets:xray ds守护进程集资源树ReplicaSets:xray rs副本集资源树仓库中 internal/xray 目录下的渲染器文件与上述类型一一对应pod.go、dp.go、svc.go、sts.go、ds.go、rs.go各自实现了Render(ctx, ns, o)接口并且每种渲染器都有配套的单元测试如 dp_test.go、svc_test.go测试数据位于 internal/xray/testdata其中dp.json、po.json、svc.json、sts.json等文件即用于驱动各类资源的树构建断言。树形结构的底层实现NodeSpec 与状态标记XRay 视图之所以能呈现“父子依赖”源于 tree_node.go 中两套核心数据结构TreeNode树节点包含GVR资源描述、ID全限定名、Children子节点集合、Parent父节点指针与Extras扩展信息如状态、附加信息五个字段。子节点按自然排序sortorder.NaturalLess排列NodeSpec节点规格记录从根到当前节点的完整路径链Paths、GVRs、Statuses三个数组分别保存层级路径、层级 GVR 与层级状态路径之间以::分隔PathSeparator常量。每个节点都带有一个状态标记StatusKey定义于 tree_node.go状态常量含义界面表现ok资源健康白色、无标记toast资源不达标如副本数未就绪、容器未就绪显示TOAST橙色标记completed资源已完成如已完成的 Pod正常显示noref引用了不存在的资源如缺失的 Secret/ConfigMap显示TOAST_REF橙色标记状态由各渲染器在构建树时计算。例如 pod.go 中当 Pod 就绪容器数不等于容器总数时标记为toastPod Phase 为Completed时标记为completeddp.go 中则对比期望副本数与AvailableReplicas不匹配时标记toastcontainer.go 中引用的 Secret/ConfigMap 不存在且非optional时标记noref。状态之外节点还会附带ready/total或available/replicas/unavailable这类关键数字信息InfoKey并在节点标题右侧以[antiquewhite]颜色呈现。在 XRay 视图中可执行的操作按键映射XRay 视图本质上是一个基于ui.Tree的组件见 xray.go其按键绑定在 xray.go 中定义并按选中节点类型动态扩展见refreshActions()按键动作适用对象/进入过滤模式支持正则、模糊-f前缀、反向!前缀及标签选择器筛选全部节点Esc重置过滤全部节点Enter跳转到选中资源对应的标准视图有子路径的资源节点y查看选中资源的 YAML非 K9s 元资源dDescribe 选中资源非 K9s 元资源e使用kubectl edit编辑资源支持 edit 且非只读模式Ctrl-d删除选中资源带确认对话框支持强制删除支持 delete 且非只读模式l查看选中 Pod/容器的日志Pod、容器节点p查看上一容器实例的日志Pod、容器节点s进入容器 Shell需资源状态为okPod、容器节点非只读模式aAttach 到容器需资源状态为okPod 节点非只读模式过滤逻辑实现于 xray.go当输入为模糊选择器时调用fuzzyFilter为反向选择器时调用rxInverseFilter其余按正则rxFilter匹配节点路径中的任意层级 token底层则由 tree_node.go 的Filter()先展平整棵树、匹配后通过Hydrate()重新构建只含命中节点的子树。此外树节点的颜色受皮肤配置中的Xray段控制背景色、前景色、图形颜色、光标颜色详见 xray.go。本版本修复的缺陷Issue #500v0.13.2 的变更日志中登记了已解决的 Issue #500。结合发布说明中“XRay 单眼视物”的描述该问题即指向 XRay 视图在 Beryllium 核心下的渲染不完整缺陷。本次修复后XRay 视图的资源树可以完整构建与刷新视图通过 xray.go 中的Start()/Stop()管理 watch 循环模型每次变更都会回调TreeChanged()触发update()重绘整棵视图树见 xray.go。使用注意事项发布说明特别提醒XRay 视图尚处于演进阶段“Still watch out for that overbite!! hence please proceed with caution...”使用时请注意以下几点:xray的命名空间参数为可选省略时使用当前激活的命名空间若需要查看全部命名空间可在输入命令后通过命名空间切换如:ns或 K9s 的全局命名空间机制配合使用XRay 视图通过 label selector 关联 Pod 与工作负载、Service 的关系因此 selector 缺失或为空的工作负载/Service 无法在树中关联到 Podnoref引用缺失标记意味着资源引用了集群中不存在的 Secret、ConfigMap 或 PVC可作为排查配置漂移的信号视图中的 Shell/Attach/删除等危险操作仅在非只读模式k9s.yaml中未启用readOnly下可用且删除会弹出确认对话框。关于上述配置项K9s 的全局配置位于 internal/config 包readOnly与命名空间等行为由 k9s.yaml仓库cmd/testdata下亦有 k9s.yaml 示例控制读者可结合实际集群自行验证。赞分享云原生容器编排CLI运维【免费下载链接】k9s Kubernetes CLI To Manage Your Clusters In Style!项目地址https://gitcode.com/GitHub_Trending/k9s/k9s点击查看免费下载相关推荐SumatraPDF merge 命令完全指南多 PDF 页面级合并与输出优化SumatraPDF merge 命令完全指南多 PDF 页面级合并与输出优化 导读 本文详细介绍 SumatraPDF 内置的 merge 命令行工具它可桌面应用文档K9s v0.25.19 维护版发布解读启动故障、命名空间与端口转发修复及源码解析K9s v0.25.19 维护版发布解读启动故障、命名空间与端口转发修复及源码解析 本篇技术指南以 K9s v0.25.19 维护版发布说明为主体系统梳理该云原生容器编排CLI运维buildah unshare 命令详解在修改后的用户命名空间中运行命令buildah unshare 命令详解在修改后的用户命名空间中运行命令 导读 buildah unshare 是 Buildah 提供的一个实用工具子命令云原生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表