kubectl高频命令速查:上下文切换、日志排查、扩缩容与YAML编写

来自AI助手的总结
系统梳理 kubectl 常用命令与排障发布工作流
kubectl高频命令速查:上下文切换、日志排查、扩缩容与YAML编写

一、先掌握最常用的几组 kubectl 命令

kubectl 的高频命令可以按场景理解,而不是按字母顺序死记。

1.1 查看和切换上下文

kubectl config get-contexts
kubectl config current-context
kubectl config use-context my-cluster-name
kubectl config view

这组命令用来确认“我现在连的是哪个集群”。在多集群环境下,这一步非常关键。

1.2 创建资源

kubectl apply -f ./my1.yaml
kubectl apply -f ./my1.yaml -f ./my2.yaml
kubectl apply -f ./dir
kubectl create deployment nginx --image=nginx
kubectl create job hello --image=busybox:1.28 -- echo "Hello World"

1.3 查找和排查资源

kubectl get svc
kubectl get pods -A
kubectl get pods -o wide
kubectl get deployment my-dep
kubectl get pod my-pod -o yaml > a.yaml
kubectl describe nodes my-node
kubectl describe pods my-pod
kubectl get events --sort-by=.metadata.creationTimestamp
kubectl events --types=Warning
kubectl diff -f ./my-manifest.yaml

如果只记一个排查套路,可以先这样走:

get -> describe -> events -> logs

1.4 更新、回滚和扩缩容

kubectl set image deployment/frontend www=image:v2
kubectl rollout history deployment/frontend
kubectl rollout undo deployment/frontend
kubectl rollout undo deployment/frontend --to-revision=2
kubectl rollout status -w deployment/frontend
kubectl rollout restart deployment/frontend
kubectl autoscale deployment foo --min=2 --max=10
kubectl scale --replicas=3 rs/foo
kubectl scale --replicas=3 -f foo.yaml

这组命令覆盖了镜像更新、发布观察、回滚和弹性扩缩的核心动作。

1.5 资源标签和注解

kubectl label pods my-pod new-label=awesome
kubectl label pods my-pod new-label-
kubectl label pods my-pod new-label=new-value --overwrite
kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq
kubectl annotate pods my-pod icon-url-

1.6 和运行中的 Pod 交互

kubectl logs my-pod
kubectl logs -f my-pod
kubectl logs my-pod -c my-container
kubectl exec my-pod -- ls /
kubectl exec --stdin --tty my-pod -- /bin/sh
kubectl port-forward my-pod 5000:6000
kubectl debug my-pod -it --image=busybox:1.28
kubectl cp /tmp/foo_dir my-pod:/tmp/bar_dir

这部分是日常排障最常用的命令区。

1.7 和 Deployment、Service、节点、集群交互

kubectl logs deploy/my-deployment
kubectl port-forward svc/my-service 5000
kubectl exec deploy/my-deployment -- ls
kubectl cordon my-node
kubectl drain my-node
kubectl uncordon my-node
kubectl top node
kubectl cluster-info
kubectl taint nodes foo dedicated=special-user:NoSchedule

1.8 查看资源类型

kubectl api-resources
kubectl api-resources --namespaced=true
kubectl api-resources --namespaced=false
kubectl api-resources -o name
kubectl api-resources -o wide
kubectl api-resources --verbs=list,get
kubectl api-resources --api-group=extensions

二、写 YAML 时为什么一定要会 kubectl explain

很多人写 YAML 时最大的问题,不是语法不会,而是不知道字段该写在哪里、字段具体是什么意思。

这时候最实用的命令就是:

kubectl explain <resource>

比如查看 Pod 的字段定义:

kubectl explain pod

查看嵌套字段:

kubectl explain pod.spec
kubectl explain pod.spec.containers
kubectl explain pod.spec.containers.image

它的核心价值有三个:

  • 快速确认资源对象的结构
  • 直接查看字段含义和层级
  • 写 YAML 时少走很多试错弯路

三、把命令速查变成日常工作流

如果把这些命令按实际工作串起来,一套很常见的流程通常是:

  1. 用 kubectl config current-context 确认集群上下文
  2. 用 kubectl apply -f 创建或更新资源
  3. 用 kubectl get、kubectl describe、kubectl get events 查看状态
  4. 用 kubectl logs、kubectl exec、kubectl debug 深入排查
  5. 用 kubectl rollout、kubectl scale、kubectl autoscale 做发布和扩缩
  6. 用 kubectl explain 反查 YAML 结构

当你不再把 kubectl 当成零散命令,而是当成 Kubernetes 的统一操作入口时,整个集群管理思路会清晰很多。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容