kubectl小工具

0 阅读1分钟

记录一些k8s开发中实用的小工具

kubectl diff

会和集群中已有的资源做对比,类似于git diff

示例

krean@macmini:~% kubectl diff -f system.yaml          
diff -u -N /var/folders/_w/83n85d1s56504wfbhx7krjd40000gn/T/LIVE-1267910130/v1.Namespace..system /var/folders/_w/83n85d1s56504wfbhx7krjd40000gn/T/MERGED-3489522836/v1.Namespace..system
--- /var/folders/_w/83n85d1s56504wfbhx7krjd40000gn/T/LIVE-1267910130/v1.Namespace..system       2026-03-25 17:16:17
+++ /var/folders/_w/83n85d1s56504wfbhx7krjd40000gn/T/MERGED-3489522836/v1.Namespace..system     2026-03-25 17:16:17
@@ -2,6 +2,7 @@
 kind: Namespace
 metadata:
   annotations:
+    juejin.com/test: hello world
     kubectl.kubernetes.io/last-applied-configuration: |
       {"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"labels":{"app.kubernetes.io/managed-by":"kustomize","app.kubernetes.io/name":"express-operator","control-plane":"controller-manager"},"name":"system"}}
     ovn.kubernetes.io/cidr: 10.16.0.0/16

有+号的那一行就是新增的annotations

kubectl neat

通常我们kubectl get xxx -o yaml的时候,会输出资源的所有数据,有时我们只想要关键数据,比如spec,此时就可以通过neat筛选

示例

krean@macmini:~% kubectl get ns system -o yaml | kubectl neat
apiVersion: v1
kind: Namespace
metadata:
  labels:
    control-plane: controller-manager
    kubernetes.io/metadata.name: system
  name: system
spec:
  finalizers:
  - kubernetes

krean@macmini:~% kubectl get ns system -o yaml  
apiVersion: v1
kind: Namespace
metadata:
  creationTimestamp: "2026-01-29T03:27:23Z"
  labels:
    control-plane: controller-manager
    kubernetes.io/metadata.name: system
  name: system
  resourceVersion: "17705436"
  uid: d3e6438c-99cf-43da-aa21-caacad519788
spec:
  finalizers:
  - kubernetes
status:
  phase: Activek

可以看到诸如status,creationTimestamp等字段都被隐藏了