当前位置: 首页 > 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/608502/

相关文章:

  • 实战指南:从零构建高可用 Kubernetes 多节点集群(生产环境最佳实践)
  • 基于参数配置的COMSOL仿真研究:18650圆柱锂电池的热产生模型分析
  • 保姆级教程:用OpenCV SGBM算法从双目图像生成彩色点云(附完整Python代码与参数调试心得)
  • 外贸B2B企业出海必看:汽车配件与储能海外营销代运营服务商推荐(含苏州、上海)(附带联系方式) - 品牌2026
  • 掌握AMD Ryzen超频调试的终极指南:SMUDebugTool完全解析
  • 在Windows 10上,用ROS2 Foxy和rviz2可视化你的机器人:从环境配置到键盘控制移动的完整流程
  • Java的诞生
  • 从内容到线索:GEO如何系统性提升AI搜索曝光量? - 品牌2025
  • 一个Ingress搞定前后端分离:实战配置将API请求转发后端,静态页面留给前端
  • 龙芯k - 走马观碑组MPU驱动移植叵
  • 机器学习笔记(8): 矩阵求导
  • Excel 科普:循环引用是“错误”还是“黑科技”?
  • Nginx 学习总结犊
  • 你的英雄联盟游戏管家:League Akari 如何让游戏体验提升300%?
  • ins推广公司与代运营服务商推荐,搭配海外社媒营销,助力品牌海外曝光获客(附带联系方式) - 品牌2026
  • 企业文件共享必看:用组策略实现精细化磁盘配额管理(含客户机权限分配技巧)
  • 告别误报!用DeepAudit和本地Ollama,5分钟搭建你的私有AI代码审计红队
  • 零基础秒会CAJ转Word!4个超简单实用方法分享
  • 【免费绿色中文版】FastStone Capture下载安装保姆级教程(附安装包+图文步骤) - xiema
  • 破局 Type‑C 切换器痛点@ACP#GSV6155+LH3828/GSV2221+LH3828 黄金方案
  • 越南名义雇主 EOR 服务商哪家好?Safeguard Global 适配人力资源外包需求 - 品牌2026
  • 避开ArduPilot地面无人平台调试大坑:ACRO模式下的转向速率设置详解
  • Windows本地语音转文字终极指南:让电脑自动记录一切
  • 国产 vs 进口:实验室玻璃器皿清洗机优质品牌对比,谁的性价比更高? - 品牌推荐大师1
  • MeteorSeed资
  • 从投稿到见刊:Paperxie 期刊论文智能写作,科研人发刊效率加速器
  • 2026推荐几家海外AI营销获客系统,兼顾社媒获客、整合营销,助力外贸企业出海提质增效(附带联系方式) - 品牌2026
  • 外置MOS,20VIN,单灯,XZ4058D,4.35V
  • 游戏安全社区建设终极指南:awesome-game-security 如何推动游戏安全生态发展
  • Go语言的未来发展:趋势与展望