Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Kubernetes 常用命令

最完整、最实用、按场景分类的 Kubernetes 常用命令大全

覆盖:Pod、Deployment、Service、Events、调度、网络、日志、节点、卷、集群、排障、常用脚本化技巧等。

适用 Kubernetes ≥ 1.33(向下兼容 1.20+)

1. 集群信息

查看集群版本

kubectl version --short

查看当前上下文

kubectl config current-context

查看 contexts

kubectl config get-contexts

切换 context

kubectl config use-context my-context

2. Namespace 操作

查看所有命名空间

kubectl get ns

创建 namespace

kubectl create ns dev

删除 namespace

kubectl delete ns dev

3. Pod 操作

查看 Pod

kubectl get pods
kubectl get pods -A
kubectl get pods -o wide

查看带 label 的 Pod

kubectl get pods -l app=myapp

查看 Pod 详情

kubectl describe pod pod-name

查看 Pod YAML

kubectl get pod pod-name -o yaml

强制删除 Pod(强制跳过 graceful)

kubectl delete pod pod-name --force --grace-period=0

进入 Pod 容器

kubectl exec -it pod-name -- sh
kubectl exec -it pod-name -c container -- bash

查看 Pod 内文件

kubectl exec pod-name -- ls /etc

Pod 日志

kubectl logs pod-name
kubectl logs -f pod-name
kubectl logs pod-name -c container

查看上一个崩溃日志

kubectl logs pod-name --previous

4. Deployment / DaemonSet / StatefulSet 操作

查看 Deployment

kubectl get deploy
kubectl describe deploy myapp

更新镜像

kubectl set image deploy/myapp myapp=nginx:1.21

滚动更新状态

kubectl rollout status deploy/myapp

回滚

kubectl rollout undo deploy/myapp

指定版本回滚

kubectl rollout undo deploy/myapp --to-revision=3

暂停/继续更新

kubectl rollout pause deploy/myapp
kubectl rollout resume deploy/myapp

查看历史记录

kubectl rollout history deploy/myapp

5. Service / Ingress

查看 Service

kubectl get svc
kubectl describe svc myapp

查看 Endpoints

kubectl get endpoints

查看 Ingress

kubectl get ingress
kubectl describe ingress myapp

6. Node 操作

查看节点

kubectl get nodes -o wide

查看节点标签

kubectl get nodes --show-labels

给节点打标签

kubectl label node node1 env=prod

删除节点标签

kubectl label node node1 env-

给 node 打 taint

kubectl taint nodes node1 key=value:NoSchedule

删除 taint

kubectl taint nodes node1 key-

7. Label & Annotation

添加/更新 label

kubectl label pod mypod version=v1 --overwrite

删除 label

kubectl label pod mypod version-

添加 annotation

kubectl annotate pod mypod description="hello"

8. 调度与可用性

查看 Pod 调度情况

kubectl get events --sort-by='.metadata.creationTimestamp'

查看 Pod 在哪个节点

kubectl get pod -o wide

查看 Scheduler 日志(取决于你的集群)

journalctl -u kube-scheduler -f

9. ConfigMap / Secret

查看

kubectl get configmap
kubectl get secret

查看 details

kubectl describe configmap myconfig

以 YAML 输出

kubectl get secret mysecret -o yaml

10. 容器调试

创建一个临时 Pod 调试

kubectl run debug --rm -it --image=busybox -- sh

Debug 进入容器 namespace(K8s 1.18+)

kubectl debug pod-name -it --image=busybox

11. 资源应用与删除

应用 YAML

kubectl apply -f app.yaml

删除 YAML

kubectl delete -f app.yaml

先 dry-run 检查

kubectl apply -f app.yaml --dry-run=client

12. 事件与诊断

查看 Pod 事件

kubectl get events -A --sort-by='.metadata.creationTimestamp'

排查 Pod 失败

kubectl describe pod pod-name
kubectl logs pod-name --previous

查看资源占用

kubectl top pod -A
kubectl top node

13. 简化字段显示

自定义列

kubectl get pods -o custom-columns=NAME:.metadata.name,IP:.status.podIP

使用 jsonpath

kubectl get pod mypod -o jsonpath='{.status.podIP}'

14. K8s 短命令(别名)

推荐添加到 ~/.bashrc:

alias k=kubectl
alias kgp='kubectl get pods'
alias kgs='kubectl get svc'
alias kga='kubectl get all'
alias kdp='kubectl describe pod'

15. 日志、资源和事件三件套(排障最常用)

kubectl describe pod myapp-xxx
kubectl logs myapp-xxx
kubectl get events --sort-by=.metadata.creationTimestamp

16. 强制重启 Deployment(常用脚本命令)

kubectl rollout restart deploy/myapp

17. 自动补全(建议开启)

source <(kubectl completion bash)

18. 使用 label 过滤 Service / Pod / Node

查找 app=myapp 的 Pod

kubectl get pods -l app=myapp

查找 env=prod 的节点

kubectl get nodes -l env=prod

19. 端口映射(调试非常常用)

kubectl port-forward pod/myapp 8080:80
kubectl port-forward svc/myapp 8080:80

20. 查看 Workload 关系图

Pod -> Deployment -> ReplicaSet

kubectl get pod myapp-xxxx -o jsonpath='{.metadata.ownerReferences}'

21. 清理无用资源

删除 Completed 的 Job

kubectl delete job --field-selector status.successful=1

清理不正常的 pod

kubectl delete pod -A --field-selector=status.phase=Failed

22. API 资源与版本

查看所有资源类型

kubectl api-resources

查看某资源的 API 版本

kubectl explain deployment