记录一些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等字段都被隐藏了