当前位置: 首页 > news >正文

Linux I/O 演进史:从管道到零拷贝,一篇串起个服务端核心原语右

前言

在使用 kubectl get $KIND -o yaml 查看 k8s 资源时,输出结果中包含大量由集群自动生成的元数据(如 managedFields、resourceVersion、uid 等)。这些信息在实际复用 yaml 清单时需要手动清理,增加了额外的工作量。

使用 kubectl-neat 插件,可以自动移除这些由集群生成的冗余字段,仅保留有意义的内容,使 yaml 更加简洁,方便复用。

安装

插件方式安装

kubectl krew install neat

## 作为 kubectl 插件安装,使用方式为:

kubectl neat

二进制方式安装

## 版本选择:

## https://github.com/itaysk/kubectl-neat/releases

## 当前环境为 ubuntu 2404 LTS

wget https://github.com/itaysk/kubectl-neat/releases/download/v2.0.4/kubectl-neat_linux_amd64.tar.gz

tar xf kubectl-neat_linux_amd64.tar.gz

mv ./kubectl-neat /usr/local/bin/

## 创建别名(这里看个人习惯)

vim /root/.bashrc

alias kneat='kubectl-neat'

使用

本次使用二进制方式部署,实际上参数是相同的,没区别

root@network-demo:~# kubectl-neat help

Usage:

kubectl-neat [flags]

kubectl-neat [command]

## 示例是通过 kubectl plugin 方式安装,使用二进制安装改成 kubectl-neat 就好

Examples:

kubectl get pod mypod -o yaml | kubectl neat

kubectl get pod mypod -oyaml | kubectl neat -o json

kubectl neat -f - <./my-pod.json

kubectl neat -f ./my-pod.json

kubectl neat -f ./my-pod.json --output yaml

Available Commands:

## 自动补全命令用的

completion Generate the autocompletion script for the specified shell

get

help Help about any command

version Print kubectl-neat version

Flags:

-f, --file string file path to neat, or - to read from stdin (default "-")

-h, --help help for kubectl-neat

-o, --output string output format: yaml or json (default "yaml")

命令补全

简单来说就是按两下 tab 后自动补充没拼完的参数

?? 注:其实没啥用...他只能补全命令本身的参数,并不能补全 k8s 相关信息

root@network-demo:~# kubectl-neat completion --help

Generate the autocompletion script for kubectl-neat for the specified shell.

See each sub-command's help for details on how to use the generated script.

Usage:

kubectl-neat completion [command]

Available Commands:

bash Generate the autocompletion script for bash

fish Generate the autocompletion script for fish

powershell Generate the autocompletion script for powershell

zsh Generate the autocompletion script for zsh

Flags:

-h, --help help for completion

Global Flags:

-o, --output string output format: yaml or json (default "yaml")

## 当前环境使用 bash

root@network-demo:~# hostnamectl

Static hostname: network-demo

Icon name: computer-vm

Chassis: vm

Virtualization: kvm

Operating System: Ubuntu 24.04.3 LTS

Kernel: Linux 6.8.0-88-generic

Architecture: x86-64

## 添加命令补全

echo "source <(kneat completion bash)" >> ~/.bashrc && source ~/.bashrc

## 查看效果

## 上面说没啥用的地方就在这...实际上能用的参数只有 get(kubectl-neat 自己的参数)

## 当你补全 get 后就会发现他无法识别 k8s 资源

root@network-demo:~# kubectl-neat

completion (Generate the autocompletion script for the specified shell) help (Help about any command)

get version (Print kubectl-neat version)

使用方式

## 这里我直接将 kubectl get -o yaml 与 kubectl-neat get -o yaml 输出对比

kubectl-neat get -- pods -n deepflow deepflow-server-fc484c85-p67gl -o yaml > deepflow-kneat.yaml

kubectl get pods -n deepflow deepflow-server-fc484c85-p67gl -o yaml > deepflow-kubectl.yaml

## 通过 icdiff 输出两个文件的对比结果,这里为了方便大家看,只把删除的内容放上来了

root@network-demo:~# icdiff deepflow-kubectl.yaml deepflow-kneat.yaml

creationTimestamp: "2026-01-23T02:24:57Z"

generateName: deepflow-server-fc484c85-

generation: 1

ownerReferences:

- apiVersion: apps/v1

blockOwnerDeletion: true

controller: true

kind: ReplicaSet

name: deepflow-server-fc484c85

uid: 528ab77f-67ba-4099-8771-bfe06ca9ce2f

resourceVersion: "4864722"

uid: 0d5ff97b-9c48-4abf-be8b-d2b76f7a14d2

nodeAffinity: {}

apiVersion: v1

apiVersion: v1

apiVersion: v1

apiVersion: v1

apiVersion: v1

scheme: HTTP

successThreshold: 1

timeoutSeconds: 1

protocol: TCP

protocol: TCP

protocol: TCP

protocol: TCP

scheme: HTTP

periodSeconds: 10

successThreshold: 1

timeoutSeconds: 1

resources: {}

securityContext: {}

terminationMessagePath: /dev/termination-log

terminationMessagePolicy: File

dnsConfig: {}

dnsPolicy: ClusterFirst

enableServiceLinks: true

nodeName: network-demo

restartPolicy: Always

schedulerName: default-scheduler

securityContext: {}

serviceAccount: deepflow-server

terminationGracePeriodSeconds: 30

defaultMode: 420

defaultMode: 420

apiVersion: v1

status:

## 下面是所有 status 内容...幼兑梦芭

http://www.jsqmd.com/news/626598/

相关文章:

  • 华为eNSP实战:手工Eth-Trunk配置与负载均衡策略详解
  • embeddinggemma-300m入门必看:Ollama一键启动+WebUI交互全流程
  • 如何实现一个「实时数据大屏」?(数据推送与可视化)
  • 计算机图形学基础及其在游戏开发中的应用
  • 银行数据中心基础设施建设与运维管理【1.3】
  • AI工具测评中,爱毕业aibiye凭借出色表现脱颖而出,附模板使用技巧详解
  • AVR-IoT Cellular Mini底层技术解析:安全蜂窝连接与低功耗设计
  • 深度学习模型性能诊断:训练损失与验证损失的关键作用
  • 【2026年阿里巴巴集团暑期实习- 4月11日-AI研发岗-第三题- 果酱平衡】(题目+思路+JavaC++Python解析+在线测试)
  • AI时代新型的项目管理应该是什么样的?阶
  • 无形估值:在亚马逊,为何“公司定位”是你吸引顶级资源的核心资产
  • Vue2项目实战:手把手教你集成v-md-editor实现Markdown编辑器(含二次封装技巧)
  • 玻璃安装位置对整窗隔热性能的影响
  • SparkFun AVR ISP编程库:嵌入式量产级AVR烧录实现
  • 创业公司应不应该押注 Agent 化
  • CTF逆向实战:手把手教你用Python 3.11搞定.pyd文件(附IDA找版本号技巧)
  • 高效爬取Pixiv每日推荐:从动态加载到批量下载的完整指南
  • 品牌基因烙印:在亚马逊,为何成功的旧名字会成为转型的最大障碍
  • Qwen3-14B私有部署镜像:YOLOv5目标检测结果的后处理与报告生成
  • 使用 C# 删除 PDF 中的数字签名苫
  • YOLOv5集成AFPN实战:从理论到代码实现的特征融合优化
  • 一天一个Python库:oauthlib - 轻松构建OAuth客户端和服务器棵
  • KY040旋转编码器驱动详解:消抖、正交解码与多平台适配
  • 多租户下的系统业务开发过程探讨杂
  • SAE法兰品牌推荐概览:2026年值得入手的选择,分体法兰/SAE法兰/法兰夹/方法兰,SAE法兰定制口碑推荐 - 品牌推荐师
  • 多品类迷雾:为何亚马逊店铺无法用“宽泛口号”建立有效定位
  • 从零搭建AI原生研发能力:基于SITS2026的16周能力跃迁计划(含12份可直接套用评估模板)
  • MetaGPT工作流引擎:需求理解、任务分解与代码生成的流水线
  • 2026年Q2沈阳氩气哪个好:沈阳高纯气体/沈阳高纯氩气/沈阳高纯氮气/沈阳丙烷/沈阳乙炔/沈阳二氧化碳/沈阳医用氧气/选择指南 - 优质品牌商家
  • 8.2 功能安全 Functional safety:从ASIL到ISO 26262的完整实践指南